From 6d3fa944e82c052dbc2f690dc3638253b75e2a19 Mon Sep 17 00:00:00 2001 From: Francesco Venneri Date: Fri, 26 Jun 2020 11:38:13 +0200 Subject: [PATCH 01/31] [RECIPE-PROJECT] Initial commit --- recipe-hooks-project/.gitignore | 23 + recipe-hooks-project/README.md | 68 + recipe-hooks-project/package-lock.json | 14016 ++++++++++++++++++++ recipe-hooks-project/package.json | 35 + recipe-hooks-project/public/favicon.ico | Bin 0 -> 3150 bytes recipe-hooks-project/public/index.html | 43 + recipe-hooks-project/public/logo192.png | Bin 0 -> 5347 bytes recipe-hooks-project/public/logo512.png | Bin 0 -> 9664 bytes recipe-hooks-project/public/manifest.json | 25 + recipe-hooks-project/public/robots.txt | 3 + recipe-hooks-project/src/App.css | 38 + recipe-hooks-project/src/App.js | 10 + recipe-hooks-project/src/App.test.js | 9 + recipe-hooks-project/src/RecipeApp.js | 9 + recipe-hooks-project/src/index.css | 13 + recipe-hooks-project/src/index.js | 17 + recipe-hooks-project/src/logo.svg | 7 + recipe-hooks-project/src/serviceWorker.js | 141 + recipe-hooks-project/src/setupTests.js | 5 + 19 files changed, 14462 insertions(+) create mode 100644 recipe-hooks-project/.gitignore create mode 100644 recipe-hooks-project/README.md create mode 100644 recipe-hooks-project/package-lock.json create mode 100644 recipe-hooks-project/package.json create mode 100644 recipe-hooks-project/public/favicon.ico create mode 100644 recipe-hooks-project/public/index.html create mode 100644 recipe-hooks-project/public/logo192.png create mode 100644 recipe-hooks-project/public/logo512.png create mode 100644 recipe-hooks-project/public/manifest.json create mode 100644 recipe-hooks-project/public/robots.txt create mode 100644 recipe-hooks-project/src/App.css create mode 100644 recipe-hooks-project/src/App.js create mode 100644 recipe-hooks-project/src/App.test.js create mode 100644 recipe-hooks-project/src/RecipeApp.js create mode 100644 recipe-hooks-project/src/index.css create mode 100644 recipe-hooks-project/src/index.js create mode 100644 recipe-hooks-project/src/logo.svg create mode 100644 recipe-hooks-project/src/serviceWorker.js create mode 100644 recipe-hooks-project/src/setupTests.js diff --git a/recipe-hooks-project/.gitignore b/recipe-hooks-project/.gitignore new file mode 100644 index 00000000..4d29575d --- /dev/null +++ b/recipe-hooks-project/.gitignore @@ -0,0 +1,23 @@ +# See https://help.github.com/articles/ignoring-files/ for more about ignoring files. + +# dependencies +/node_modules +/.pnp +.pnp.js + +# testing +/coverage + +# production +/build + +# misc +.DS_Store +.env.local +.env.development.local +.env.test.local +.env.production.local + +npm-debug.log* +yarn-debug.log* +yarn-error.log* diff --git a/recipe-hooks-project/README.md b/recipe-hooks-project/README.md new file mode 100644 index 00000000..54ef0943 --- /dev/null +++ b/recipe-hooks-project/README.md @@ -0,0 +1,68 @@ +This 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 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 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/). + +### Code Splitting + +This section has moved here: https://facebook.github.io/create-react-app/docs/code-splitting + +### Analyzing the Bundle Size + +This section has moved here: https://facebook.github.io/create-react-app/docs/analyzing-the-bundle-size + +### Making a Progressive Web App + +This section has moved here: https://facebook.github.io/create-react-app/docs/making-a-progressive-web-app + +### Advanced Configuration + +This section has moved here: https://facebook.github.io/create-react-app/docs/advanced-configuration + +### Deployment + +This section has moved here: https://facebook.github.io/create-react-app/docs/deployment + +### `npm run build` fails to minify + +This section has moved here: https://facebook.github.io/create-react-app/docs/troubleshooting#npm-run-build-fails-to-minify diff --git a/recipe-hooks-project/package-lock.json b/recipe-hooks-project/package-lock.json new file mode 100644 index 00000000..34a6ff15 --- /dev/null +++ b/recipe-hooks-project/package-lock.json @@ -0,0 +1,14016 @@ +{ + "name": "recipe-hooks-project", + "version": "0.1.0", + "lockfileVersion": 1, + "requires": true, + "dependencies": { + "@babel/code-frame": { + "version": "7.10.3", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.10.3.tgz", + "integrity": "sha512-fDx9eNW0qz0WkUeqL6tXEXzVlPh6Y5aCDEZesl0xBGA8ndRukX91Uk44ZqnkECp01NAZUdCAl+aiQNGi0k88Eg==", + "requires": { + "@babel/highlight": "^7.10.3" + } + }, + "@babel/compat-data": { + "version": "7.10.3", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.10.3.tgz", + "integrity": "sha512-BDIfJ9uNZuI0LajPfoYV28lX8kyCPMHY6uY4WH1lJdcicmAfxCK5ASzaeV0D/wsUaRH/cLk+amuxtC37sZ8TUg==", + "requires": { + "browserslist": "^4.12.0", + "invariant": "^2.2.4", + "semver": "^5.5.0" + }, + "dependencies": { + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==" + } + } + }, + "@babel/core": { + "version": "7.9.0", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.9.0.tgz", + "integrity": "sha512-kWc7L0fw1xwvI0zi8OKVBuxRVefwGOrKSQMvrQ3dW+bIIavBY3/NpXmpjMy7bQnLgwgzWQZ8TlM57YHpHNHz4w==", + "requires": { + "@babel/code-frame": "^7.8.3", + "@babel/generator": "^7.9.0", + "@babel/helper-module-transforms": "^7.9.0", + "@babel/helpers": "^7.9.0", + "@babel/parser": "^7.9.0", + "@babel/template": "^7.8.6", + "@babel/traverse": "^7.9.0", + "@babel/types": "^7.9.0", + "convert-source-map": "^1.7.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.1", + "json5": "^2.1.2", + "lodash": "^4.17.13", + "resolve": "^1.3.2", + "semver": "^5.4.1", + "source-map": "^0.5.0" + }, + "dependencies": { + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==" + } + } + }, + "@babel/generator": { + "version": "7.10.3", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.10.3.tgz", + "integrity": "sha512-drt8MUHbEqRzNR0xnF8nMehbY11b1SDkRw03PSNH/3Rb2Z35oxkddVSi3rcaak0YJQ86PCuE7Qx1jSFhbLNBMA==", + "requires": { + "@babel/types": "^7.10.3", + "jsesc": "^2.5.1", + "lodash": "^4.17.13", + "source-map": "^0.5.0" + } + }, + "@babel/helper-annotate-as-pure": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.10.1.tgz", + "integrity": "sha512-ewp3rvJEwLaHgyWGe4wQssC2vjks3E80WiUe2BpMb0KhreTjMROCbxXcEovTrbeGVdQct5VjQfrv9EgC+xMzCw==", + "requires": { + "@babel/types": "^7.10.1" + } + }, + "@babel/helper-builder-binary-assignment-operator-visitor": { + "version": "7.10.3", + "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.10.3.tgz", + "integrity": "sha512-lo4XXRnBlU6eRM92FkiZxpo1xFLmv3VsPFk61zJKMm7XYJfwqXHsYJTY6agoc4a3L8QPw1HqWehO18coZgbT6A==", + "requires": { + "@babel/helper-explode-assignable-expression": "^7.10.3", + "@babel/types": "^7.10.3" + } + }, + "@babel/helper-builder-react-jsx": { + "version": "7.10.3", + "resolved": "https://registry.npmjs.org/@babel/helper-builder-react-jsx/-/helper-builder-react-jsx-7.10.3.tgz", + "integrity": "sha512-vkxmuFvmovtqTZknyMGj9+uQAZzz5Z9mrbnkJnPkaYGfKTaSsYcjQdXP0lgrWLVh8wU6bCjOmXOpx+kqUi+S5Q==", + "requires": { + "@babel/helper-annotate-as-pure": "^7.10.1", + "@babel/types": "^7.10.3" + } + }, + "@babel/helper-builder-react-jsx-experimental": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/helper-builder-react-jsx-experimental/-/helper-builder-react-jsx-experimental-7.10.1.tgz", + "integrity": "sha512-irQJ8kpQUV3JasXPSFQ+LCCtJSc5ceZrPFVj6TElR6XCHssi3jV8ch3odIrNtjJFRZZVbrOEfJMI79TPU/h1pQ==", + "requires": { + "@babel/helper-annotate-as-pure": "^7.10.1", + "@babel/helper-module-imports": "^7.10.1", + "@babel/types": "^7.10.1" + } + }, + "@babel/helper-compilation-targets": { + "version": "7.10.2", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.10.2.tgz", + "integrity": "sha512-hYgOhF4To2UTB4LTaZepN/4Pl9LD4gfbJx8A34mqoluT8TLbof1mhUlYuNWTEebONa8+UlCC4X0TEXu7AOUyGA==", + "requires": { + "@babel/compat-data": "^7.10.1", + "browserslist": "^4.12.0", + "invariant": "^2.2.4", + "levenary": "^1.1.1", + "semver": "^5.5.0" + }, + "dependencies": { + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==" + } + } + }, + "@babel/helper-create-class-features-plugin": { + "version": "7.10.3", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.10.3.tgz", + "integrity": "sha512-iRT9VwqtdFmv7UheJWthGc/h2s7MqoweBF9RUj77NFZsg9VfISvBTum3k6coAhJ8RWv2tj3yUjA03HxPd0vfpQ==", + "requires": { + "@babel/helper-function-name": "^7.10.3", + "@babel/helper-member-expression-to-functions": "^7.10.3", + "@babel/helper-optimise-call-expression": "^7.10.3", + "@babel/helper-plugin-utils": "^7.10.3", + "@babel/helper-replace-supers": "^7.10.1", + "@babel/helper-split-export-declaration": "^7.10.1" + } + }, + "@babel/helper-create-regexp-features-plugin": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.10.1.tgz", + "integrity": "sha512-Rx4rHS0pVuJn5pJOqaqcZR4XSgeF9G/pO/79t+4r7380tXFJdzImFnxMU19f83wjSrmKHq6myrM10pFHTGzkUA==", + "requires": { + "@babel/helper-annotate-as-pure": "^7.10.1", + "@babel/helper-regex": "^7.10.1", + "regexpu-core": "^4.7.0" + } + }, + "@babel/helper-define-map": { + "version": "7.10.3", + "resolved": "https://registry.npmjs.org/@babel/helper-define-map/-/helper-define-map-7.10.3.tgz", + "integrity": "sha512-bxRzDi4Sin/k0drWCczppOhov1sBSdBvXJObM1NLHQzjhXhwRtn7aRWGvLJWCYbuu2qUk3EKs6Ci9C9ps8XokQ==", + "requires": { + "@babel/helper-function-name": "^7.10.3", + "@babel/types": "^7.10.3", + "lodash": "^4.17.13" + } + }, + "@babel/helper-explode-assignable-expression": { + "version": "7.10.3", + "resolved": "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.10.3.tgz", + "integrity": "sha512-0nKcR64XrOC3lsl+uhD15cwxPvaB6QKUDlD84OT9C3myRbhJqTMYir69/RWItUvHpharv0eJ/wk7fl34ONSwZw==", + "requires": { + "@babel/traverse": "^7.10.3", + "@babel/types": "^7.10.3" + } + }, + "@babel/helper-function-name": { + "version": "7.10.3", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.10.3.tgz", + "integrity": "sha512-FvSj2aiOd8zbeqijjgqdMDSyxsGHaMt5Tr0XjQsGKHD3/1FP3wksjnLAWzxw7lvXiej8W1Jt47SKTZ6upQNiRw==", + "requires": { + "@babel/helper-get-function-arity": "^7.10.3", + "@babel/template": "^7.10.3", + "@babel/types": "^7.10.3" + } + }, + "@babel/helper-get-function-arity": { + "version": "7.10.3", + "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.10.3.tgz", + "integrity": "sha512-iUD/gFsR+M6uiy69JA6fzM5seno8oE85IYZdbVVEuQaZlEzMO2MXblh+KSPJgsZAUx0EEbWXU0yJaW7C9CdAVg==", + "requires": { + "@babel/types": "^7.10.3" + } + }, + "@babel/helper-hoist-variables": { + "version": "7.10.3", + "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.10.3.tgz", + "integrity": "sha512-9JyafKoBt5h20Yv1+BXQMdcXXavozI1vt401KBiRc2qzUepbVnd7ogVNymY1xkQN9fekGwfxtotH2Yf5xsGzgg==", + "requires": { + "@babel/types": "^7.10.3" + } + }, + "@babel/helper-member-expression-to-functions": { + "version": "7.10.3", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.10.3.tgz", + "integrity": "sha512-q7+37c4EPLSjNb2NmWOjNwj0+BOyYlssuQ58kHEWk1Z78K5i8vTUsteq78HMieRPQSl/NtpQyJfdjt3qZ5V2vw==", + "requires": { + "@babel/types": "^7.10.3" + } + }, + "@babel/helper-module-imports": { + "version": "7.10.3", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.10.3.tgz", + "integrity": "sha512-Jtqw5M9pahLSUWA+76nhK9OG8nwYXzhQzVIGFoNaHnXF/r4l7kz4Fl0UAW7B6mqC5myoJiBP5/YQlXQTMfHI9w==", + "requires": { + "@babel/types": "^7.10.3" + } + }, + "@babel/helper-module-transforms": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.10.1.tgz", + "integrity": "sha512-RLHRCAzyJe7Q7sF4oy2cB+kRnU4wDZY/H2xJFGof+M+SJEGhZsb+GFj5j1AD8NiSaVBJ+Pf0/WObiXu/zxWpFg==", + "requires": { + "@babel/helper-module-imports": "^7.10.1", + "@babel/helper-replace-supers": "^7.10.1", + "@babel/helper-simple-access": "^7.10.1", + "@babel/helper-split-export-declaration": "^7.10.1", + "@babel/template": "^7.10.1", + "@babel/types": "^7.10.1", + "lodash": "^4.17.13" + } + }, + "@babel/helper-optimise-call-expression": { + "version": "7.10.3", + "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.10.3.tgz", + "integrity": "sha512-kT2R3VBH/cnSz+yChKpaKRJQJWxdGoc6SjioRId2wkeV3bK0wLLioFpJROrX0U4xr/NmxSSAWT/9Ih5snwIIzg==", + "requires": { + "@babel/types": "^7.10.3" + } + }, + "@babel/helper-plugin-utils": { + "version": "7.10.3", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.10.3.tgz", + "integrity": "sha512-j/+j8NAWUTxOtx4LKHybpSClxHoq6I91DQ/mKgAXn5oNUPIUiGppjPIX3TDtJWPrdfP9Kfl7e4fgVMiQR9VE/g==" + }, + "@babel/helper-regex": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/helper-regex/-/helper-regex-7.10.1.tgz", + "integrity": "sha512-7isHr19RsIJWWLLFn21ubFt223PjQyg1HY7CZEMRr820HttHPpVvrsIN3bUOo44DEfFV4kBXO7Abbn9KTUZV7g==", + "requires": { + "lodash": "^4.17.13" + } + }, + "@babel/helper-remap-async-to-generator": { + "version": "7.10.3", + "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.10.3.tgz", + "integrity": "sha512-sLB7666ARbJUGDO60ZormmhQOyqMX/shKBXZ7fy937s+3ID8gSrneMvKSSb+8xIM5V7Vn6uNVtOY1vIm26XLtA==", + "requires": { + "@babel/helper-annotate-as-pure": "^7.10.1", + "@babel/helper-wrap-function": "^7.10.1", + "@babel/template": "^7.10.3", + "@babel/traverse": "^7.10.3", + "@babel/types": "^7.10.3" + } + }, + "@babel/helper-replace-supers": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.10.1.tgz", + "integrity": "sha512-SOwJzEfpuQwInzzQJGjGaiG578UYmyi2Xw668klPWV5n07B73S0a9btjLk/52Mlcxa+5AdIYqws1KyXRfMoB7A==", + "requires": { + "@babel/helper-member-expression-to-functions": "^7.10.1", + "@babel/helper-optimise-call-expression": "^7.10.1", + "@babel/traverse": "^7.10.1", + "@babel/types": "^7.10.1" + } + }, + "@babel/helper-simple-access": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.10.1.tgz", + "integrity": "sha512-VSWpWzRzn9VtgMJBIWTZ+GP107kZdQ4YplJlCmIrjoLVSi/0upixezHCDG8kpPVTBJpKfxTH01wDhh+jS2zKbw==", + "requires": { + "@babel/template": "^7.10.1", + "@babel/types": "^7.10.1" + } + }, + "@babel/helper-split-export-declaration": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.10.1.tgz", + "integrity": "sha512-UQ1LVBPrYdbchNhLwj6fetj46BcFwfS4NllJo/1aJsT+1dLTEnXJL0qHqtY7gPzF8S2fXBJamf1biAXV3X077g==", + "requires": { + "@babel/types": "^7.10.1" + } + }, + "@babel/helper-validator-identifier": { + "version": "7.10.3", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.3.tgz", + "integrity": "sha512-bU8JvtlYpJSBPuj1VUmKpFGaDZuLxASky3LhaKj3bmpSTY6VWooSM8msk+Z0CZoErFye2tlABF6yDkT3FOPAXw==" + }, + "@babel/helper-wrap-function": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.10.1.tgz", + "integrity": "sha512-C0MzRGteVDn+H32/ZgbAv5r56f2o1fZSA/rj/TYo8JEJNHg+9BdSmKBUND0shxWRztWhjlT2cvHYuynpPsVJwQ==", + "requires": { + "@babel/helper-function-name": "^7.10.1", + "@babel/template": "^7.10.1", + "@babel/traverse": "^7.10.1", + "@babel/types": "^7.10.1" + } + }, + "@babel/helpers": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.10.1.tgz", + "integrity": "sha512-muQNHF+IdU6wGgkaJyhhEmI54MOZBKsFfsXFhboz1ybwJ1Kl7IHlbm2a++4jwrmY5UYsgitt5lfqo1wMFcHmyw==", + "requires": { + "@babel/template": "^7.10.1", + "@babel/traverse": "^7.10.1", + "@babel/types": "^7.10.1" + } + }, + "@babel/highlight": { + "version": "7.10.3", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.10.3.tgz", + "integrity": "sha512-Ih9B/u7AtgEnySE2L2F0Xm0GaM729XqqLfHkalTsbjXGyqmf/6M0Cu0WpvqueUlW+xk88BHw9Nkpj49naU+vWw==", + "requires": { + "@babel/helper-validator-identifier": "^7.10.3", + "chalk": "^2.0.0", + "js-tokens": "^4.0.0" + } + }, + "@babel/parser": { + "version": "7.10.3", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.10.3.tgz", + "integrity": "sha512-oJtNJCMFdIMwXGmx+KxuaD7i3b8uS7TTFYW/FNG2BT8m+fmGHoiPYoH0Pe3gya07WuFmM5FCDIr1x0irkD/hyA==" + }, + "@babel/plugin-proposal-async-generator-functions": { + "version": "7.10.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.10.3.tgz", + "integrity": "sha512-WUUWM7YTOudF4jZBAJIW9D7aViYC/Fn0Pln4RIHlQALyno3sXSjqmTA4Zy1TKC2D49RCR8Y/Pn4OIUtEypK3CA==", + "requires": { + "@babel/helper-plugin-utils": "^7.10.3", + "@babel/helper-remap-async-to-generator": "^7.10.3", + "@babel/plugin-syntax-async-generators": "^7.8.0" + } + }, + "@babel/plugin-proposal-class-properties": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.10.1.tgz", + "integrity": "sha512-sqdGWgoXlnOdgMXU+9MbhzwFRgxVLeiGBqTrnuS7LC2IBU31wSsESbTUreT2O418obpfPdGUR2GbEufZF1bpqw==", + "requires": { + "@babel/helper-create-class-features-plugin": "^7.10.1", + "@babel/helper-plugin-utils": "^7.10.1" + } + }, + "@babel/plugin-proposal-decorators": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-decorators/-/plugin-proposal-decorators-7.8.3.tgz", + "integrity": "sha512-e3RvdvS4qPJVTe288DlXjwKflpfy1hr0j5dz5WpIYYeP7vQZg2WfAEIp8k5/Lwis/m5REXEteIz6rrcDtXXG7w==", + "requires": { + "@babel/helper-create-class-features-plugin": "^7.8.3", + "@babel/helper-plugin-utils": "^7.8.3", + "@babel/plugin-syntax-decorators": "^7.8.3" + } + }, + "@babel/plugin-proposal-dynamic-import": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.10.1.tgz", + "integrity": "sha512-Cpc2yUVHTEGPlmiQzXj026kqwjEQAD9I4ZC16uzdbgWgitg/UHKHLffKNCQZ5+y8jpIZPJcKcwsr2HwPh+w3XA==", + "requires": { + "@babel/helper-plugin-utils": "^7.10.1", + "@babel/plugin-syntax-dynamic-import": "^7.8.0" + } + }, + "@babel/plugin-proposal-json-strings": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.10.1.tgz", + "integrity": "sha512-m8r5BmV+ZLpWPtMY2mOKN7wre6HIO4gfIiV+eOmsnZABNenrt/kzYBwrh+KOfgumSWpnlGs5F70J8afYMSJMBg==", + "requires": { + "@babel/helper-plugin-utils": "^7.10.1", + "@babel/plugin-syntax-json-strings": "^7.8.0" + } + }, + "@babel/plugin-proposal-nullish-coalescing-operator": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.10.1.tgz", + "integrity": "sha512-56cI/uHYgL2C8HVuHOuvVowihhX0sxb3nnfVRzUeVHTWmRHTZrKuAh/OBIMggGU/S1g/1D2CRCXqP+3u7vX7iA==", + "requires": { + "@babel/helper-plugin-utils": "^7.10.1", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.0" + } + }, + "@babel/plugin-proposal-numeric-separator": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.10.1.tgz", + "integrity": "sha512-jjfym4N9HtCiNfyyLAVD8WqPYeHUrw4ihxuAynWj6zzp2gf9Ey2f7ImhFm6ikB3CLf5Z/zmcJDri6B4+9j9RsA==", + "requires": { + "@babel/helper-plugin-utils": "^7.10.1", + "@babel/plugin-syntax-numeric-separator": "^7.10.1" + } + }, + "@babel/plugin-proposal-object-rest-spread": { + "version": "7.10.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.10.3.tgz", + "integrity": "sha512-ZZh5leCIlH9lni5bU/wB/UcjtcVLgR8gc+FAgW2OOY+m9h1II3ItTO1/cewNUcsIDZSYcSaz/rYVls+Fb0ExVQ==", + "requires": { + "@babel/helper-plugin-utils": "^7.10.3", + "@babel/plugin-syntax-object-rest-spread": "^7.8.0", + "@babel/plugin-transform-parameters": "^7.10.1" + } + }, + "@babel/plugin-proposal-optional-catch-binding": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.10.1.tgz", + "integrity": "sha512-VqExgeE62YBqI3ogkGoOJp1R6u12DFZjqwJhqtKc2o5m1YTUuUWnos7bZQFBhwkxIFpWYJ7uB75U7VAPPiKETA==", + "requires": { + "@babel/helper-plugin-utils": "^7.10.1", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.0" + } + }, + "@babel/plugin-proposal-optional-chaining": { + "version": "7.10.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.10.3.tgz", + "integrity": "sha512-yyG3n9dJ1vZ6v5sfmIlMMZ8azQoqx/5/nZTSWX1td6L1H1bsjzA8TInDChpafCZiJkeOFzp/PtrfigAQXxI1Ng==", + "requires": { + "@babel/helper-plugin-utils": "^7.10.3", + "@babel/plugin-syntax-optional-chaining": "^7.8.0" + } + }, + "@babel/plugin-proposal-private-methods": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.10.1.tgz", + "integrity": "sha512-RZecFFJjDiQ2z6maFprLgrdnm0OzoC23Mx89xf1CcEsxmHuzuXOdniEuI+S3v7vjQG4F5sa6YtUp+19sZuSxHg==", + "requires": { + "@babel/helper-create-class-features-plugin": "^7.10.1", + "@babel/helper-plugin-utils": "^7.10.1" + } + }, + "@babel/plugin-proposal-unicode-property-regex": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.10.1.tgz", + "integrity": "sha512-JjfngYRvwmPwmnbRZyNiPFI8zxCZb8euzbCG/LxyKdeTb59tVciKo9GK9bi6JYKInk1H11Dq9j/zRqIH4KigfQ==", + "requires": { + "@babel/helper-create-regexp-features-plugin": "^7.10.1", + "@babel/helper-plugin-utils": "^7.10.1" + } + }, + "@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==", + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-class-properties": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.10.1.tgz", + "integrity": "sha512-Gf2Yx/iRs1JREDtVZ56OrjjgFHCaldpTnuy9BHla10qyVT3YkIIGEtoDWhyop0ksu1GvNjHIoYRBqm3zoR1jyQ==", + "requires": { + "@babel/helper-plugin-utils": "^7.10.1" + } + }, + "@babel/plugin-syntax-decorators": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-decorators/-/plugin-syntax-decorators-7.10.1.tgz", + "integrity": "sha512-a9OAbQhKOwSle1Vr0NJu/ISg1sPfdEkfRKWpgPuzhnWWzForou2gIeUIIwjAMHRekhhpJ7eulZlYs0H14Cbi+g==", + "requires": { + "@babel/helper-plugin-utils": "^7.10.1" + } + }, + "@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==", + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-flow": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-flow/-/plugin-syntax-flow-7.10.1.tgz", + "integrity": "sha512-b3pWVncLBYoPP60UOTc7NMlbtsHQ6ITim78KQejNHK6WJ2mzV5kCcg4mIWpasAfJEgwVTibwo2e+FU7UEIKQUg==", + "requires": { + "@babel/helper-plugin-utils": "^7.10.1" + } + }, + "@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==", + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-jsx": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.10.1.tgz", + "integrity": "sha512-+OxyOArpVFXQeXKLO9o+r2I4dIoVoy6+Uu0vKELrlweDM3QJADZj+Z+5ERansZqIZBcLj42vHnDI8Rz9BnRIuQ==", + "requires": { + "@babel/helper-plugin-utils": "^7.10.1" + } + }, + "@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==", + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-numeric-separator": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.1.tgz", + "integrity": "sha512-uTd0OsHrpe3tH5gRPTxG8Voh99/WCU78vIm5NMRYPAqC8lR4vajt6KkCAknCHrx24vkPdd/05yfdGSB4EIY2mg==", + "requires": { + "@babel/helper-plugin-utils": "^7.10.1" + } + }, + "@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==", + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@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==", + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@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==", + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-top-level-await": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.10.1.tgz", + "integrity": "sha512-hgA5RYkmZm8FTFT3yu2N9Bx7yVVOKYT6yEdXXo6j2JTm0wNxgqaGeQVaSHRjhfnQbX91DtjFB6McRFSlcJH3xQ==", + "requires": { + "@babel/helper-plugin-utils": "^7.10.1" + } + }, + "@babel/plugin-syntax-typescript": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.10.1.tgz", + "integrity": "sha512-X/d8glkrAtra7CaQGMiGs/OGa6XgUzqPcBXCIGFCpCqnfGlT0Wfbzo/B89xHhnInTaItPK8LALblVXcUOEh95Q==", + "requires": { + "@babel/helper-plugin-utils": "^7.10.1" + } + }, + "@babel/plugin-transform-arrow-functions": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.10.1.tgz", + "integrity": "sha512-6AZHgFJKP3DJX0eCNJj01RpytUa3SOGawIxweHkNX2L6PYikOZmoh5B0d7hIHaIgveMjX990IAa/xK7jRTN8OA==", + "requires": { + "@babel/helper-plugin-utils": "^7.10.1" + } + }, + "@babel/plugin-transform-async-to-generator": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.10.1.tgz", + "integrity": "sha512-XCgYjJ8TY2slj6SReBUyamJn3k2JLUIiiR5b6t1mNCMSvv7yx+jJpaewakikp0uWFQSF7ChPPoe3dHmXLpISkg==", + "requires": { + "@babel/helper-module-imports": "^7.10.1", + "@babel/helper-plugin-utils": "^7.10.1", + "@babel/helper-remap-async-to-generator": "^7.10.1" + } + }, + "@babel/plugin-transform-block-scoped-functions": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.10.1.tgz", + "integrity": "sha512-B7K15Xp8lv0sOJrdVAoukKlxP9N59HS48V1J3U/JGj+Ad+MHq+am6xJVs85AgXrQn4LV8vaYFOB+pr/yIuzW8Q==", + "requires": { + "@babel/helper-plugin-utils": "^7.10.1" + } + }, + "@babel/plugin-transform-block-scoping": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.10.1.tgz", + "integrity": "sha512-8bpWG6TtF5akdhIm/uWTyjHqENpy13Fx8chg7pFH875aNLwX8JxIxqm08gmAT+Whe6AOmaTeLPe7dpLbXt+xUw==", + "requires": { + "@babel/helper-plugin-utils": "^7.10.1", + "lodash": "^4.17.13" + } + }, + "@babel/plugin-transform-classes": { + "version": "7.10.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.10.3.tgz", + "integrity": "sha512-irEX0ChJLaZVC7FvvRoSIxJlmk0IczFLcwaRXUArBKYHCHbOhe57aG8q3uw/fJsoSXvZhjRX960hyeAGlVBXZw==", + "requires": { + "@babel/helper-annotate-as-pure": "^7.10.1", + "@babel/helper-define-map": "^7.10.3", + "@babel/helper-function-name": "^7.10.3", + "@babel/helper-optimise-call-expression": "^7.10.3", + "@babel/helper-plugin-utils": "^7.10.3", + "@babel/helper-replace-supers": "^7.10.1", + "@babel/helper-split-export-declaration": "^7.10.1", + "globals": "^11.1.0" + } + }, + "@babel/plugin-transform-computed-properties": { + "version": "7.10.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.10.3.tgz", + "integrity": "sha512-GWzhaBOsdbjVFav96drOz7FzrcEW6AP5nax0gLIpstiFaI3LOb2tAg06TimaWU6YKOfUACK3FVrxPJ4GSc5TgA==", + "requires": { + "@babel/helper-plugin-utils": "^7.10.3" + } + }, + "@babel/plugin-transform-destructuring": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.10.1.tgz", + "integrity": "sha512-V/nUc4yGWG71OhaTH705pU8ZSdM6c1KmmLP8ys59oOYbT7RpMYAR3MsVOt6OHL0WzG7BlTU076va9fjJyYzJMA==", + "requires": { + "@babel/helper-plugin-utils": "^7.10.1" + } + }, + "@babel/plugin-transform-dotall-regex": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.10.1.tgz", + "integrity": "sha512-19VIMsD1dp02RvduFUmfzj8uknaO3uiHHF0s3E1OHnVsNj8oge8EQ5RzHRbJjGSetRnkEuBYO7TG1M5kKjGLOA==", + "requires": { + "@babel/helper-create-regexp-features-plugin": "^7.10.1", + "@babel/helper-plugin-utils": "^7.10.1" + } + }, + "@babel/plugin-transform-duplicate-keys": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.10.1.tgz", + "integrity": "sha512-wIEpkX4QvX8Mo9W6XF3EdGttrIPZWozHfEaDTU0WJD/TDnXMvdDh30mzUl/9qWhnf7naicYartcEfUghTCSNpA==", + "requires": { + "@babel/helper-plugin-utils": "^7.10.1" + } + }, + "@babel/plugin-transform-exponentiation-operator": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.10.1.tgz", + "integrity": "sha512-lr/przdAbpEA2BUzRvjXdEDLrArGRRPwbaF9rvayuHRvdQ7lUTTkZnhZrJ4LE2jvgMRFF4f0YuPQ20vhiPYxtA==", + "requires": { + "@babel/helper-builder-binary-assignment-operator-visitor": "^7.10.1", + "@babel/helper-plugin-utils": "^7.10.1" + } + }, + "@babel/plugin-transform-flow-strip-types": { + "version": "7.9.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-flow-strip-types/-/plugin-transform-flow-strip-types-7.9.0.tgz", + "integrity": "sha512-7Qfg0lKQhEHs93FChxVLAvhBshOPQDtJUTVHr/ZwQNRccCm4O9D79r9tVSoV8iNwjP1YgfD+e/fgHcPkN1qEQg==", + "requires": { + "@babel/helper-plugin-utils": "^7.8.3", + "@babel/plugin-syntax-flow": "^7.8.3" + } + }, + "@babel/plugin-transform-for-of": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.10.1.tgz", + "integrity": "sha512-US8KCuxfQcn0LwSCMWMma8M2R5mAjJGsmoCBVwlMygvmDUMkTCykc84IqN1M7t+agSfOmLYTInLCHJM+RUoz+w==", + "requires": { + "@babel/helper-plugin-utils": "^7.10.1" + } + }, + "@babel/plugin-transform-function-name": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.10.1.tgz", + "integrity": "sha512-//bsKsKFBJfGd65qSNNh1exBy5Y9gD9ZN+DvrJ8f7HXr4avE5POW6zB7Rj6VnqHV33+0vXWUwJT0wSHubiAQkw==", + "requires": { + "@babel/helper-function-name": "^7.10.1", + "@babel/helper-plugin-utils": "^7.10.1" + } + }, + "@babel/plugin-transform-literals": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.10.1.tgz", + "integrity": "sha512-qi0+5qgevz1NHLZroObRm5A+8JJtibb7vdcPQF1KQE12+Y/xxl8coJ+TpPW9iRq+Mhw/NKLjm+5SHtAHCC7lAw==", + "requires": { + "@babel/helper-plugin-utils": "^7.10.1" + } + }, + "@babel/plugin-transform-member-expression-literals": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.10.1.tgz", + "integrity": "sha512-UmaWhDokOFT2GcgU6MkHC11i0NQcL63iqeufXWfRy6pUOGYeCGEKhvfFO6Vz70UfYJYHwveg62GS83Rvpxn+NA==", + "requires": { + "@babel/helper-plugin-utils": "^7.10.1" + } + }, + "@babel/plugin-transform-modules-amd": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.10.1.tgz", + "integrity": "sha512-31+hnWSFRI4/ACFr1qkboBbrTxoBIzj7qA69qlq8HY8p7+YCzkCT6/TvQ1a4B0z27VeWtAeJd6pr5G04dc1iHw==", + "requires": { + "@babel/helper-module-transforms": "^7.10.1", + "@babel/helper-plugin-utils": "^7.10.1", + "babel-plugin-dynamic-import-node": "^2.3.3" + } + }, + "@babel/plugin-transform-modules-commonjs": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.10.1.tgz", + "integrity": "sha512-AQG4fc3KOah0vdITwt7Gi6hD9BtQP/8bhem7OjbaMoRNCH5Djx42O2vYMfau7QnAzQCa+RJnhJBmFFMGpQEzrg==", + "requires": { + "@babel/helper-module-transforms": "^7.10.1", + "@babel/helper-plugin-utils": "^7.10.1", + "@babel/helper-simple-access": "^7.10.1", + "babel-plugin-dynamic-import-node": "^2.3.3" + } + }, + "@babel/plugin-transform-modules-systemjs": { + "version": "7.10.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.10.3.tgz", + "integrity": "sha512-GWXWQMmE1GH4ALc7YXW56BTh/AlzvDWhUNn9ArFF0+Cz5G8esYlVbXfdyHa1xaD1j+GnBoCeoQNlwtZTVdiG/A==", + "requires": { + "@babel/helper-hoist-variables": "^7.10.3", + "@babel/helper-module-transforms": "^7.10.1", + "@babel/helper-plugin-utils": "^7.10.3", + "babel-plugin-dynamic-import-node": "^2.3.3" + } + }, + "@babel/plugin-transform-modules-umd": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.10.1.tgz", + "integrity": "sha512-EIuiRNMd6GB6ulcYlETnYYfgv4AxqrswghmBRQbWLHZxN4s7mupxzglnHqk9ZiUpDI4eRWewedJJNj67PWOXKA==", + "requires": { + "@babel/helper-module-transforms": "^7.10.1", + "@babel/helper-plugin-utils": "^7.10.1" + } + }, + "@babel/plugin-transform-named-capturing-groups-regex": { + "version": "7.10.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.10.3.tgz", + "integrity": "sha512-I3EH+RMFyVi8Iy/LekQm948Z4Lz4yKT7rK+vuCAeRm0kTa6Z5W7xuhRxDNJv0FPya/her6AUgrDITb70YHtTvA==", + "requires": { + "@babel/helper-create-regexp-features-plugin": "^7.8.3" + } + }, + "@babel/plugin-transform-new-target": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.10.1.tgz", + "integrity": "sha512-MBlzPc1nJvbmO9rPr1fQwXOM2iGut+JC92ku6PbiJMMK7SnQc1rytgpopveE3Evn47gzvGYeCdgfCDbZo0ecUw==", + "requires": { + "@babel/helper-plugin-utils": "^7.10.1" + } + }, + "@babel/plugin-transform-object-super": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.10.1.tgz", + "integrity": "sha512-WnnStUDN5GL+wGQrJylrnnVlFhFmeArINIR9gjhSeYyvroGhBrSAXYg/RHsnfzmsa+onJrTJrEClPzgNmmQ4Gw==", + "requires": { + "@babel/helper-plugin-utils": "^7.10.1", + "@babel/helper-replace-supers": "^7.10.1" + } + }, + "@babel/plugin-transform-parameters": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.10.1.tgz", + "integrity": "sha512-tJ1T0n6g4dXMsL45YsSzzSDZCxiHXAQp/qHrucOq5gEHncTA3xDxnd5+sZcoQp+N1ZbieAaB8r/VUCG0gqseOg==", + "requires": { + "@babel/helper-get-function-arity": "^7.10.1", + "@babel/helper-plugin-utils": "^7.10.1" + } + }, + "@babel/plugin-transform-property-literals": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.10.1.tgz", + "integrity": "sha512-Kr6+mgag8auNrgEpbfIWzdXYOvqDHZOF0+Bx2xh4H2EDNwcbRb9lY6nkZg8oSjsX+DH9Ebxm9hOqtKW+gRDeNA==", + "requires": { + "@babel/helper-plugin-utils": "^7.10.1" + } + }, + "@babel/plugin-transform-react-constant-elements": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-constant-elements/-/plugin-transform-react-constant-elements-7.10.1.tgz", + "integrity": "sha512-V4os6bkWt/jbrzfyVcZn2ZpuHZkvj3vyBU0U/dtS8SZuMS7Rfx5oknTrtfyXJ2/QZk8gX7Yls5Z921ItNpE30Q==", + "requires": { + "@babel/helper-plugin-utils": "^7.10.1" + } + }, + "@babel/plugin-transform-react-display-name": { + "version": "7.10.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.10.3.tgz", + "integrity": "sha512-dOV44bnSW5KZ6kYF6xSHBth7TFiHHZReYXH/JH3XnFNV+soEL1F5d8JT7AJ3ZBncd19Qul7SN4YpBnyWOnQ8KA==", + "requires": { + "@babel/helper-plugin-utils": "^7.10.3" + } + }, + "@babel/plugin-transform-react-jsx": { + "version": "7.10.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.10.3.tgz", + "integrity": "sha512-Y21E3rZmWICRJnvbGVmDLDZ8HfNDIwjGF3DXYHx1le0v0mIHCs0Gv5SavyW5Z/jgAHLaAoJPiwt+Dr7/zZKcOQ==", + "requires": { + "@babel/helper-builder-react-jsx": "^7.10.3", + "@babel/helper-builder-react-jsx-experimental": "^7.10.1", + "@babel/helper-plugin-utils": "^7.10.3", + "@babel/plugin-syntax-jsx": "^7.10.1" + } + }, + "@babel/plugin-transform-react-jsx-development": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-development/-/plugin-transform-react-jsx-development-7.10.1.tgz", + "integrity": "sha512-XwDy/FFoCfw9wGFtdn5Z+dHh6HXKHkC6DwKNWpN74VWinUagZfDcEJc3Y8Dn5B3WMVnAllX8Kviaw7MtC5Epwg==", + "requires": { + "@babel/helper-builder-react-jsx-experimental": "^7.10.1", + "@babel/helper-plugin-utils": "^7.10.1", + "@babel/plugin-syntax-jsx": "^7.10.1" + } + }, + "@babel/plugin-transform-react-jsx-self": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.10.1.tgz", + "integrity": "sha512-4p+RBw9d1qV4S749J42ZooeQaBomFPrSxa9JONLHJ1TxCBo3TzJ79vtmG2S2erUT8PDDrPdw4ZbXGr2/1+dILA==", + "requires": { + "@babel/helper-plugin-utils": "^7.10.1", + "@babel/plugin-syntax-jsx": "^7.10.1" + } + }, + "@babel/plugin-transform-react-jsx-source": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.10.1.tgz", + "integrity": "sha512-neAbaKkoiL+LXYbGDvh6PjPG+YeA67OsZlE78u50xbWh2L1/C81uHiNP5d1fw+uqUIoiNdCC8ZB+G4Zh3hShJA==", + "requires": { + "@babel/helper-plugin-utils": "^7.10.1", + "@babel/plugin-syntax-jsx": "^7.10.1" + } + }, + "@babel/plugin-transform-react-pure-annotations": { + "version": "7.10.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-pure-annotations/-/plugin-transform-react-pure-annotations-7.10.3.tgz", + "integrity": "sha512-n/fWYGqvTl7OLZs/QcWaKMFdADPvC3V6jYuEOpPyvz97onsW9TXn196fHnHW1ZgkO20/rxLOgKnEtN1q9jkgqA==", + "requires": { + "@babel/helper-annotate-as-pure": "^7.10.1", + "@babel/helper-plugin-utils": "^7.10.3" + } + }, + "@babel/plugin-transform-regenerator": { + "version": "7.10.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.10.3.tgz", + "integrity": "sha512-H5kNeW0u8mbk0qa1jVIVTeJJL6/TJ81ltD4oyPx0P499DhMJrTmmIFCmJ3QloGpQG8K9symccB7S7SJpCKLwtw==", + "requires": { + "regenerator-transform": "^0.14.2" + } + }, + "@babel/plugin-transform-reserved-words": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.10.1.tgz", + "integrity": "sha512-qN1OMoE2nuqSPmpTqEM7OvJ1FkMEV+BjVeZZm9V9mq/x1JLKQ4pcv8riZJMNN3u2AUGl0ouOMjRr2siecvHqUQ==", + "requires": { + "@babel/helper-plugin-utils": "^7.10.1" + } + }, + "@babel/plugin-transform-runtime": { + "version": "7.9.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.9.0.tgz", + "integrity": "sha512-pUu9VSf3kI1OqbWINQ7MaugnitRss1z533436waNXp+0N3ur3zfut37sXiQMxkuCF4VUjwZucen/quskCh7NHw==", + "requires": { + "@babel/helper-module-imports": "^7.8.3", + "@babel/helper-plugin-utils": "^7.8.3", + "resolve": "^1.8.1", + "semver": "^5.5.1" + }, + "dependencies": { + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==" + } + } + }, + "@babel/plugin-transform-shorthand-properties": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.10.1.tgz", + "integrity": "sha512-AR0E/lZMfLstScFwztApGeyTHJ5u3JUKMjneqRItWeEqDdHWZwAOKycvQNCasCK/3r5YXsuNG25funcJDu7Y2g==", + "requires": { + "@babel/helper-plugin-utils": "^7.10.1" + } + }, + "@babel/plugin-transform-spread": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.10.1.tgz", + "integrity": "sha512-8wTPym6edIrClW8FI2IoaePB91ETOtg36dOkj3bYcNe7aDMN2FXEoUa+WrmPc4xa1u2PQK46fUX2aCb+zo9rfw==", + "requires": { + "@babel/helper-plugin-utils": "^7.10.1" + } + }, + "@babel/plugin-transform-sticky-regex": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.10.1.tgz", + "integrity": "sha512-j17ojftKjrL7ufX8ajKvwRilwqTok4q+BjkknmQw9VNHnItTyMP5anPFzxFJdCQs7clLcWpCV3ma+6qZWLnGMA==", + "requires": { + "@babel/helper-plugin-utils": "^7.10.1", + "@babel/helper-regex": "^7.10.1" + } + }, + "@babel/plugin-transform-template-literals": { + "version": "7.10.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.10.3.tgz", + "integrity": "sha512-yaBn9OpxQra/bk0/CaA4wr41O0/Whkg6nqjqApcinxM7pro51ojhX6fv1pimAnVjVfDy14K0ULoRL70CA9jWWA==", + "requires": { + "@babel/helper-annotate-as-pure": "^7.10.1", + "@babel/helper-plugin-utils": "^7.10.3" + } + }, + "@babel/plugin-transform-typeof-symbol": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.10.1.tgz", + "integrity": "sha512-qX8KZcmbvA23zDi+lk9s6hC1FM7jgLHYIjuLgULgc8QtYnmB3tAVIYkNoKRQ75qWBeyzcoMoK8ZQmogGtC/w0g==", + "requires": { + "@babel/helper-plugin-utils": "^7.10.1" + } + }, + "@babel/plugin-transform-typescript": { + "version": "7.10.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.10.3.tgz", + "integrity": "sha512-qU9Lu7oQyh3PGMQncNjQm8RWkzw6LqsWZQlZPQMgrGt6s3YiBIaQ+3CQV/FA/icGS5XlSWZGwo/l8ErTyelS0Q==", + "requires": { + "@babel/helper-create-class-features-plugin": "^7.10.3", + "@babel/helper-plugin-utils": "^7.10.3", + "@babel/plugin-syntax-typescript": "^7.10.1" + } + }, + "@babel/plugin-transform-unicode-escapes": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.10.1.tgz", + "integrity": "sha512-zZ0Poh/yy1d4jeDWpx/mNwbKJVwUYJX73q+gyh4bwtG0/iUlzdEu0sLMda8yuDFS6LBQlT/ST1SJAR6zYwXWgw==", + "requires": { + "@babel/helper-plugin-utils": "^7.10.1" + } + }, + "@babel/plugin-transform-unicode-regex": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.10.1.tgz", + "integrity": "sha512-Y/2a2W299k0VIUdbqYm9X2qS6fE0CUBhhiPpimK6byy7OJ/kORLlIX+J6UrjgNu5awvs62k+6RSslxhcvVw2Tw==", + "requires": { + "@babel/helper-create-regexp-features-plugin": "^7.10.1", + "@babel/helper-plugin-utils": "^7.10.1" + } + }, + "@babel/preset-env": { + "version": "7.10.3", + "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.10.3.tgz", + "integrity": "sha512-jHaSUgiewTmly88bJtMHbOd1bJf2ocYxb5BWKSDQIP5tmgFuS/n0gl+nhSrYDhT33m0vPxp+rP8oYYgPgMNQlg==", + "requires": { + "@babel/compat-data": "^7.10.3", + "@babel/helper-compilation-targets": "^7.10.2", + "@babel/helper-module-imports": "^7.10.3", + "@babel/helper-plugin-utils": "^7.10.3", + "@babel/plugin-proposal-async-generator-functions": "^7.10.3", + "@babel/plugin-proposal-class-properties": "^7.10.1", + "@babel/plugin-proposal-dynamic-import": "^7.10.1", + "@babel/plugin-proposal-json-strings": "^7.10.1", + "@babel/plugin-proposal-nullish-coalescing-operator": "^7.10.1", + "@babel/plugin-proposal-numeric-separator": "^7.10.1", + "@babel/plugin-proposal-object-rest-spread": "^7.10.3", + "@babel/plugin-proposal-optional-catch-binding": "^7.10.1", + "@babel/plugin-proposal-optional-chaining": "^7.10.3", + "@babel/plugin-proposal-private-methods": "^7.10.1", + "@babel/plugin-proposal-unicode-property-regex": "^7.10.1", + "@babel/plugin-syntax-async-generators": "^7.8.0", + "@babel/plugin-syntax-class-properties": "^7.10.1", + "@babel/plugin-syntax-dynamic-import": "^7.8.0", + "@babel/plugin-syntax-json-strings": "^7.8.0", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.0", + "@babel/plugin-syntax-numeric-separator": "^7.10.1", + "@babel/plugin-syntax-object-rest-spread": "^7.8.0", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.0", + "@babel/plugin-syntax-optional-chaining": "^7.8.0", + "@babel/plugin-syntax-top-level-await": "^7.10.1", + "@babel/plugin-transform-arrow-functions": "^7.10.1", + "@babel/plugin-transform-async-to-generator": "^7.10.1", + "@babel/plugin-transform-block-scoped-functions": "^7.10.1", + "@babel/plugin-transform-block-scoping": "^7.10.1", + "@babel/plugin-transform-classes": "^7.10.3", + "@babel/plugin-transform-computed-properties": "^7.10.3", + "@babel/plugin-transform-destructuring": "^7.10.1", + "@babel/plugin-transform-dotall-regex": "^7.10.1", + "@babel/plugin-transform-duplicate-keys": "^7.10.1", + "@babel/plugin-transform-exponentiation-operator": "^7.10.1", + "@babel/plugin-transform-for-of": "^7.10.1", + "@babel/plugin-transform-function-name": "^7.10.1", + "@babel/plugin-transform-literals": "^7.10.1", + "@babel/plugin-transform-member-expression-literals": "^7.10.1", + "@babel/plugin-transform-modules-amd": "^7.10.1", + "@babel/plugin-transform-modules-commonjs": "^7.10.1", + "@babel/plugin-transform-modules-systemjs": "^7.10.3", + "@babel/plugin-transform-modules-umd": "^7.10.1", + "@babel/plugin-transform-named-capturing-groups-regex": "^7.10.3", + "@babel/plugin-transform-new-target": "^7.10.1", + "@babel/plugin-transform-object-super": "^7.10.1", + "@babel/plugin-transform-parameters": "^7.10.1", + "@babel/plugin-transform-property-literals": "^7.10.1", + "@babel/plugin-transform-regenerator": "^7.10.3", + "@babel/plugin-transform-reserved-words": "^7.10.1", + "@babel/plugin-transform-shorthand-properties": "^7.10.1", + "@babel/plugin-transform-spread": "^7.10.1", + "@babel/plugin-transform-sticky-regex": "^7.10.1", + "@babel/plugin-transform-template-literals": "^7.10.3", + "@babel/plugin-transform-typeof-symbol": "^7.10.1", + "@babel/plugin-transform-unicode-escapes": "^7.10.1", + "@babel/plugin-transform-unicode-regex": "^7.10.1", + "@babel/preset-modules": "^0.1.3", + "@babel/types": "^7.10.3", + "browserslist": "^4.12.0", + "core-js-compat": "^3.6.2", + "invariant": "^2.2.2", + "levenary": "^1.1.1", + "semver": "^5.5.0" + }, + "dependencies": { + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==" + } + } + }, + "@babel/preset-modules": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.3.tgz", + "integrity": "sha512-Ra3JXOHBq2xd56xSF7lMKXdjBn3T772Y1Wet3yWnkDly9zHvJki029tAFzvAAK5cf4YV3yoxuP61crYRol6SVg==", + "requires": { + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/plugin-proposal-unicode-property-regex": "^7.4.4", + "@babel/plugin-transform-dotall-regex": "^7.4.4", + "@babel/types": "^7.4.4", + "esutils": "^2.0.2" + } + }, + "@babel/preset-react": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/preset-react/-/preset-react-7.10.1.tgz", + "integrity": "sha512-Rw0SxQ7VKhObmFjD/cUcKhPTtzpeviEFX1E6PgP+cYOhQ98icNqtINNFANlsdbQHrmeWnqdxA4Tmnl1jy5tp3Q==", + "requires": { + "@babel/helper-plugin-utils": "^7.10.1", + "@babel/plugin-transform-react-display-name": "^7.10.1", + "@babel/plugin-transform-react-jsx": "^7.10.1", + "@babel/plugin-transform-react-jsx-development": "^7.10.1", + "@babel/plugin-transform-react-jsx-self": "^7.10.1", + "@babel/plugin-transform-react-jsx-source": "^7.10.1", + "@babel/plugin-transform-react-pure-annotations": "^7.10.1" + } + }, + "@babel/preset-typescript": { + "version": "7.9.0", + "resolved": "https://registry.npmjs.org/@babel/preset-typescript/-/preset-typescript-7.9.0.tgz", + "integrity": "sha512-S4cueFnGrIbvYJgwsVFKdvOmpiL0XGw9MFW9D0vgRys5g36PBhZRL8NX8Gr2akz8XRtzq6HuDXPD/1nniagNUg==", + "requires": { + "@babel/helper-plugin-utils": "^7.8.3", + "@babel/plugin-transform-typescript": "^7.9.0" + } + }, + "@babel/runtime": { + "version": "7.10.3", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.10.3.tgz", + "integrity": "sha512-RzGO0RLSdokm9Ipe/YD+7ww8X2Ro79qiXZF3HU9ljrM+qnJmH1Vqth+hbiQZy761LnMJTMitHDuKVYTk3k4dLw==", + "requires": { + "regenerator-runtime": "^0.13.4" + } + }, + "@babel/runtime-corejs3": { + "version": "7.10.3", + "resolved": "https://registry.npmjs.org/@babel/runtime-corejs3/-/runtime-corejs3-7.10.3.tgz", + "integrity": "sha512-HA7RPj5xvJxQl429r5Cxr2trJwOfPjKiqhCXcdQPSqO2G0RHPZpXu4fkYmBaTKCp2c/jRaMK9GB/lN+7zvvFPw==", + "requires": { + "core-js-pure": "^3.0.0", + "regenerator-runtime": "^0.13.4" + } + }, + "@babel/template": { + "version": "7.10.3", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.10.3.tgz", + "integrity": "sha512-5BjI4gdtD+9fHZUsaxPHPNpwa+xRkDO7c7JbhYn2afvrkDu5SfAAbi9AIMXw2xEhO/BR35TqiW97IqNvCo/GqA==", + "requires": { + "@babel/code-frame": "^7.10.3", + "@babel/parser": "^7.10.3", + "@babel/types": "^7.10.3" + } + }, + "@babel/traverse": { + "version": "7.10.3", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.10.3.tgz", + "integrity": "sha512-qO6623eBFhuPm0TmmrUFMT1FulCmsSeJuVGhiLodk2raUDFhhTECLd9E9jC4LBIWziqt4wgF6KuXE4d+Jz9yug==", + "requires": { + "@babel/code-frame": "^7.10.3", + "@babel/generator": "^7.10.3", + "@babel/helper-function-name": "^7.10.3", + "@babel/helper-split-export-declaration": "^7.10.1", + "@babel/parser": "^7.10.3", + "@babel/types": "^7.10.3", + "debug": "^4.1.0", + "globals": "^11.1.0", + "lodash": "^4.17.13" + } + }, + "@babel/types": { + "version": "7.10.3", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.10.3.tgz", + "integrity": "sha512-nZxaJhBXBQ8HVoIcGsf9qWep3Oh3jCENK54V4mRF7qaJabVsAYdbTtmSD8WmAp1R6ytPiu5apMwSXyxB1WlaBA==", + "requires": { + "@babel/helper-validator-identifier": "^7.10.3", + "lodash": "^4.17.13", + "to-fast-properties": "^2.0.0" + } + }, + "@cnakazawa/watch": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@cnakazawa/watch/-/watch-1.0.4.tgz", + "integrity": "sha512-v9kIhKwjeZThiWrLmj0y17CWoyddASLj9O2yvbZkbvw/N3rWOYy9zkV66ursAoVr0mV15bL8g0c4QZUE6cdDoQ==", + "requires": { + "exec-sh": "^0.3.2", + "minimist": "^1.2.0" + } + }, + "@csstools/convert-colors": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/@csstools/convert-colors/-/convert-colors-1.4.0.tgz", + "integrity": "sha512-5a6wqoJV/xEdbRNKVo6I4hO3VjyDq//8q2f9I6PBAvMesJHFauXDorcNCsr9RzvsZnaWi5NYCcfyqP1QeFHFbw==" + }, + "@csstools/normalize.css": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/@csstools/normalize.css/-/normalize.css-10.1.0.tgz", + "integrity": "sha512-ij4wRiunFfaJxjB0BdrYHIH8FxBJpOwNPhhAcunlmPdXudL1WQV1qoP9un6JsEBAgQH+7UXyyjh0g7jTxXK6tg==" + }, + "@emotion/hash": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/@emotion/hash/-/hash-0.8.0.tgz", + "integrity": "sha512-kBJtf7PH6aWwZ6fka3zQ0p6SBYzx4fl1LoZXE2RrnYST9Xljm7WfKJrU4g/Xr3Beg72MLrp1AWNUmuYJTL7Cow==" + }, + "@hapi/address": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/@hapi/address/-/address-2.1.4.tgz", + "integrity": "sha512-QD1PhQk+s31P1ixsX0H0Suoupp3VMXzIVMSwobR3F3MSUO2YCV0B7xqLcUw/Bh8yuvd3LhpyqLQWTNcRmp6IdQ==" + }, + "@hapi/bourne": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/@hapi/bourne/-/bourne-1.3.2.tgz", + "integrity": "sha512-1dVNHT76Uu5N3eJNTYcvxee+jzX4Z9lfciqRRHCU27ihbUcYi+iSc2iml5Ke1LXe1SyJCLA0+14Jh4tXJgOppA==" + }, + "@hapi/hoek": { + "version": "8.5.1", + "resolved": "https://registry.npmjs.org/@hapi/hoek/-/hoek-8.5.1.tgz", + "integrity": "sha512-yN7kbciD87WzLGc5539Tn0sApjyiGHAJgKvG9W8C7O+6c7qmoQMfVs0W4bX17eqz6C78QJqqFrtgdK5EWf6Qow==" + }, + "@hapi/joi": { + "version": "15.1.1", + "resolved": "https://registry.npmjs.org/@hapi/joi/-/joi-15.1.1.tgz", + "integrity": "sha512-entf8ZMOK8sc+8YfeOlM8pCfg3b5+WZIKBfUaaJT8UsjAAPjartzxIYm3TIbjvA4u+u++KbcXD38k682nVHDAQ==", + "requires": { + "@hapi/address": "2.x.x", + "@hapi/bourne": "1.x.x", + "@hapi/hoek": "8.x.x", + "@hapi/topo": "3.x.x" + } + }, + "@hapi/topo": { + "version": "3.1.6", + "resolved": "https://registry.npmjs.org/@hapi/topo/-/topo-3.1.6.tgz", + "integrity": "sha512-tAag0jEcjwH+P2quUfipd7liWCNX2F8NvYjQp2wtInsZxnMlypdw0FtAOLxtvvkO+GSRRbmNi8m/5y42PQJYCQ==", + "requires": { + "@hapi/hoek": "^8.3.0" + } + }, + "@jest/console": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/@jest/console/-/console-24.9.0.tgz", + "integrity": "sha512-Zuj6b8TnKXi3q4ymac8EQfc3ea/uhLeCGThFqXeC8H9/raaH8ARPUTdId+XyGd03Z4In0/VjD2OYFcBF09fNLQ==", + "requires": { + "@jest/source-map": "^24.9.0", + "chalk": "^2.0.1", + "slash": "^2.0.0" + } + }, + "@jest/core": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/@jest/core/-/core-24.9.0.tgz", + "integrity": "sha512-Fogg3s4wlAr1VX7q+rhV9RVnUv5tD7VuWfYy1+whMiWUrvl7U3QJSJyWcDio9Lq2prqYsZaeTv2Rz24pWGkJ2A==", + "requires": { + "@jest/console": "^24.7.1", + "@jest/reporters": "^24.9.0", + "@jest/test-result": "^24.9.0", + "@jest/transform": "^24.9.0", + "@jest/types": "^24.9.0", + "ansi-escapes": "^3.0.0", + "chalk": "^2.0.1", + "exit": "^0.1.2", + "graceful-fs": "^4.1.15", + "jest-changed-files": "^24.9.0", + "jest-config": "^24.9.0", + "jest-haste-map": "^24.9.0", + "jest-message-util": "^24.9.0", + "jest-regex-util": "^24.3.0", + "jest-resolve": "^24.9.0", + "jest-resolve-dependencies": "^24.9.0", + "jest-runner": "^24.9.0", + "jest-runtime": "^24.9.0", + "jest-snapshot": "^24.9.0", + "jest-util": "^24.9.0", + "jest-validate": "^24.9.0", + "jest-watcher": "^24.9.0", + "micromatch": "^3.1.10", + "p-each-series": "^1.0.0", + "realpath-native": "^1.1.0", + "rimraf": "^2.5.4", + "slash": "^2.0.0", + "strip-ansi": "^5.0.0" + }, + "dependencies": { + "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==" + } + } + }, + "@jest/environment": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-24.9.0.tgz", + "integrity": "sha512-5A1QluTPhvdIPFYnO3sZC3smkNeXPVELz7ikPbhUj0bQjB07EoE9qtLrem14ZUYWdVayYbsjVwIiL4WBIMV4aQ==", + "requires": { + "@jest/fake-timers": "^24.9.0", + "@jest/transform": "^24.9.0", + "@jest/types": "^24.9.0", + "jest-mock": "^24.9.0" + } + }, + "@jest/fake-timers": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-24.9.0.tgz", + "integrity": "sha512-eWQcNa2YSwzXWIMC5KufBh3oWRIijrQFROsIqt6v/NS9Io/gknw1jsAC9c+ih/RQX4A3O7SeWAhQeN0goKhT9A==", + "requires": { + "@jest/types": "^24.9.0", + "jest-message-util": "^24.9.0", + "jest-mock": "^24.9.0" + } + }, + "@jest/reporters": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-24.9.0.tgz", + "integrity": "sha512-mu4X0yjaHrffOsWmVLzitKmmmWSQ3GGuefgNscUSWNiUNcEOSEQk9k3pERKEQVBb0Cnn88+UESIsZEMH3o88Gw==", + "requires": { + "@jest/environment": "^24.9.0", + "@jest/test-result": "^24.9.0", + "@jest/transform": "^24.9.0", + "@jest/types": "^24.9.0", + "chalk": "^2.0.1", + "exit": "^0.1.2", + "glob": "^7.1.2", + "istanbul-lib-coverage": "^2.0.2", + "istanbul-lib-instrument": "^3.0.1", + "istanbul-lib-report": "^2.0.4", + "istanbul-lib-source-maps": "^3.0.1", + "istanbul-reports": "^2.2.6", + "jest-haste-map": "^24.9.0", + "jest-resolve": "^24.9.0", + "jest-runtime": "^24.9.0", + "jest-util": "^24.9.0", + "jest-worker": "^24.6.0", + "node-notifier": "^5.4.2", + "slash": "^2.0.0", + "source-map": "^0.6.0", + "string-length": "^2.0.0" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" + } + } + }, + "@jest/source-map": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/@jest/source-map/-/source-map-24.9.0.tgz", + "integrity": "sha512-/Xw7xGlsZb4MJzNDgB7PW5crou5JqWiBQaz6xyPd3ArOg2nfn/PunV8+olXbbEZzNl591o5rWKE9BRDaFAuIBg==", + "requires": { + "callsites": "^3.0.0", + "graceful-fs": "^4.1.15", + "source-map": "^0.6.0" + }, + "dependencies": { + "callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==" + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" + } + } + }, + "@jest/test-result": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-24.9.0.tgz", + "integrity": "sha512-XEFrHbBonBJ8dGp2JmF8kP/nQI/ImPpygKHwQ/SY+es59Z3L5PI4Qb9TQQMAEeYsThG1xF0k6tmG0tIKATNiiA==", + "requires": { + "@jest/console": "^24.9.0", + "@jest/types": "^24.9.0", + "@types/istanbul-lib-coverage": "^2.0.0" + } + }, + "@jest/test-sequencer": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-24.9.0.tgz", + "integrity": "sha512-6qqsU4o0kW1dvA95qfNog8v8gkRN9ph6Lz7r96IvZpHdNipP2cBcb07J1Z45mz/VIS01OHJ3pY8T5fUY38tg4A==", + "requires": { + "@jest/test-result": "^24.9.0", + "jest-haste-map": "^24.9.0", + "jest-runner": "^24.9.0", + "jest-runtime": "^24.9.0" + } + }, + "@jest/transform": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-24.9.0.tgz", + "integrity": "sha512-TcQUmyNRxV94S0QpMOnZl0++6RMiqpbH/ZMccFB/amku6Uwvyb1cjYX7xkp5nGNkbX4QPH/FcB6q1HBTHynLmQ==", + "requires": { + "@babel/core": "^7.1.0", + "@jest/types": "^24.9.0", + "babel-plugin-istanbul": "^5.1.0", + "chalk": "^2.0.1", + "convert-source-map": "^1.4.0", + "fast-json-stable-stringify": "^2.0.0", + "graceful-fs": "^4.1.15", + "jest-haste-map": "^24.9.0", + "jest-regex-util": "^24.9.0", + "jest-util": "^24.9.0", + "micromatch": "^3.1.10", + "pirates": "^4.0.1", + "realpath-native": "^1.1.0", + "slash": "^2.0.0", + "source-map": "^0.6.1", + "write-file-atomic": "2.4.1" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" + } + } + }, + "@jest/types": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-24.9.0.tgz", + "integrity": "sha512-XKK7ze1apu5JWQ5eZjHITP66AX+QsLlbaJRBGYr8pNzwcAE2JVkwnf0yqjHTsDRcjR0mujy/NmZMXw5kl+kGBw==", + "requires": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^1.1.1", + "@types/yargs": "^13.0.0" + } + }, + "@material-ui/core": { + "version": "4.10.2", + "resolved": "https://registry.npmjs.org/@material-ui/core/-/core-4.10.2.tgz", + "integrity": "sha512-Uf4iDLi9sW6HKbVQDyDZDr1nMR4RUAE7w/RIIJZGNVZResC0xwmpLRZMtaUdSO43N0R0yJehfxTi4Z461Cd49A==", + "requires": { + "@babel/runtime": "^7.4.4", + "@material-ui/styles": "^4.10.0", + "@material-ui/system": "^4.9.14", + "@material-ui/types": "^5.1.0", + "@material-ui/utils": "^4.10.2", + "@types/react-transition-group": "^4.2.0", + "clsx": "^1.0.4", + "hoist-non-react-statics": "^3.3.2", + "popper.js": "1.16.1-lts", + "prop-types": "^15.7.2", + "react-is": "^16.8.0", + "react-transition-group": "^4.4.0" + } + }, + "@material-ui/styles": { + "version": "4.10.0", + "resolved": "https://registry.npmjs.org/@material-ui/styles/-/styles-4.10.0.tgz", + "integrity": "sha512-XPwiVTpd3rlnbfrgtEJ1eJJdFCXZkHxy8TrdieaTvwxNYj42VnnCyFzxYeNW9Lhj4V1oD8YtQ6S5Gie7bZDf7Q==", + "requires": { + "@babel/runtime": "^7.4.4", + "@emotion/hash": "^0.8.0", + "@material-ui/types": "^5.1.0", + "@material-ui/utils": "^4.9.6", + "clsx": "^1.0.4", + "csstype": "^2.5.2", + "hoist-non-react-statics": "^3.3.2", + "jss": "^10.0.3", + "jss-plugin-camel-case": "^10.0.3", + "jss-plugin-default-unit": "^10.0.3", + "jss-plugin-global": "^10.0.3", + "jss-plugin-nested": "^10.0.3", + "jss-plugin-props-sort": "^10.0.3", + "jss-plugin-rule-value-function": "^10.0.3", + "jss-plugin-vendor-prefixer": "^10.0.3", + "prop-types": "^15.7.2" + } + }, + "@material-ui/system": { + "version": "4.9.14", + "resolved": "https://registry.npmjs.org/@material-ui/system/-/system-4.9.14.tgz", + "integrity": "sha512-oQbaqfSnNlEkXEziDcJDDIy8pbvwUmZXWNqlmIwDqr/ZdCK8FuV3f4nxikUh7hvClKV2gnQ9djh5CZFTHkZj3w==", + "requires": { + "@babel/runtime": "^7.4.4", + "@material-ui/utils": "^4.9.6", + "csstype": "^2.5.2", + "prop-types": "^15.7.2" + } + }, + "@material-ui/types": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/@material-ui/types/-/types-5.1.0.tgz", + "integrity": "sha512-7cqRjrY50b8QzRSYyhSpx4WRw2YuO0KKIGQEVk5J8uoz2BanawykgZGoWEqKm7pVIbzFDN0SpPcVV4IhOFkl8A==" + }, + "@material-ui/utils": { + "version": "4.10.2", + "resolved": "https://registry.npmjs.org/@material-ui/utils/-/utils-4.10.2.tgz", + "integrity": "sha512-eg29v74P7W5r6a4tWWDAAfZldXIzfyO1am2fIsC39hdUUHm/33k6pGOKPbgDjg/U/4ifmgAePy/1OjkKN6rFRw==", + "requires": { + "@babel/runtime": "^7.4.4", + "prop-types": "^15.7.2", + "react-is": "^16.8.0" + } + }, + "@mrmlnc/readdir-enhanced": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/@mrmlnc/readdir-enhanced/-/readdir-enhanced-2.2.1.tgz", + "integrity": "sha512-bPHp6Ji8b41szTOcaP63VlnbbO5Ny6dwAATtY6JTjh5N2OLrb5Qk/Th5cRkRQhkWCt+EJsYrNB0MiL+Gpn6e3g==", + "requires": { + "call-me-maybe": "^1.0.1", + "glob-to-regexp": "^0.3.0" + } + }, + "@nodelib/fs.stat": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-1.1.3.tgz", + "integrity": "sha512-shAmDyaQC4H92APFoIaVDHCx5bStIocgvbwQyxPRrbUY20V1EYTbSDchWbuwlMG3V17cprZhA6+78JfB+3DTPw==" + }, + "@sheerun/mutationobserver-shim": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/@sheerun/mutationobserver-shim/-/mutationobserver-shim-0.3.3.tgz", + "integrity": "sha512-DetpxZw1fzPD5xUBrIAoplLChO2VB8DlL5Gg+I1IR9b2wPqYIca2WSUxL5g1vLeR4MsQq1NeWriXAVffV+U1Fw==" + }, + "@svgr/babel-plugin-add-jsx-attribute": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-add-jsx-attribute/-/babel-plugin-add-jsx-attribute-4.2.0.tgz", + "integrity": "sha512-j7KnilGyZzYr/jhcrSYS3FGWMZVaqyCG0vzMCwzvei0coIkczuYMcniK07nI0aHJINciujjH11T72ICW5eL5Ig==" + }, + "@svgr/babel-plugin-remove-jsx-attribute": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-remove-jsx-attribute/-/babel-plugin-remove-jsx-attribute-4.2.0.tgz", + "integrity": "sha512-3XHLtJ+HbRCH4n28S7y/yZoEQnRpl0tvTZQsHqvaeNXPra+6vE5tbRliH3ox1yZYPCxrlqaJT/Mg+75GpDKlvQ==" + }, + "@svgr/babel-plugin-remove-jsx-empty-expression": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-remove-jsx-empty-expression/-/babel-plugin-remove-jsx-empty-expression-4.2.0.tgz", + "integrity": "sha512-yTr2iLdf6oEuUE9MsRdvt0NmdpMBAkgK8Bjhl6epb+eQWk6abBaX3d65UZ3E3FWaOwePyUgNyNCMVG61gGCQ7w==" + }, + "@svgr/babel-plugin-replace-jsx-attribute-value": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-replace-jsx-attribute-value/-/babel-plugin-replace-jsx-attribute-value-4.2.0.tgz", + "integrity": "sha512-U9m870Kqm0ko8beHawRXLGLvSi/ZMrl89gJ5BNcT452fAjtF2p4uRzXkdzvGJJJYBgx7BmqlDjBN/eCp5AAX2w==" + }, + "@svgr/babel-plugin-svg-dynamic-title": { + "version": "4.3.3", + "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-svg-dynamic-title/-/babel-plugin-svg-dynamic-title-4.3.3.tgz", + "integrity": "sha512-w3Be6xUNdwgParsvxkkeZb545VhXEwjGMwExMVBIdPQJeyMQHqm9Msnb2a1teHBqUYL66qtwfhNkbj1iarCG7w==" + }, + "@svgr/babel-plugin-svg-em-dimensions": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-svg-em-dimensions/-/babel-plugin-svg-em-dimensions-4.2.0.tgz", + "integrity": "sha512-C0Uy+BHolCHGOZ8Dnr1zXy/KgpBOkEUYY9kI/HseHVPeMbluaX3CijJr7D4C5uR8zrc1T64nnq/k63ydQuGt4w==" + }, + "@svgr/babel-plugin-transform-react-native-svg": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-transform-react-native-svg/-/babel-plugin-transform-react-native-svg-4.2.0.tgz", + "integrity": "sha512-7YvynOpZDpCOUoIVlaaOUU87J4Z6RdD6spYN4eUb5tfPoKGSF9OG2NuhgYnq4jSkAxcpMaXWPf1cePkzmqTPNw==" + }, + "@svgr/babel-plugin-transform-svg-component": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-transform-svg-component/-/babel-plugin-transform-svg-component-4.2.0.tgz", + "integrity": "sha512-hYfYuZhQPCBVotABsXKSCfel2slf/yvJY8heTVX1PCTaq/IgASq1IyxPPKJ0chWREEKewIU/JMSsIGBtK1KKxw==" + }, + "@svgr/babel-preset": { + "version": "4.3.3", + "resolved": "https://registry.npmjs.org/@svgr/babel-preset/-/babel-preset-4.3.3.tgz", + "integrity": "sha512-6PG80tdz4eAlYUN3g5GZiUjg2FMcp+Wn6rtnz5WJG9ITGEF1pmFdzq02597Hn0OmnQuCVaBYQE1OVFAnwOl+0A==", + "requires": { + "@svgr/babel-plugin-add-jsx-attribute": "^4.2.0", + "@svgr/babel-plugin-remove-jsx-attribute": "^4.2.0", + "@svgr/babel-plugin-remove-jsx-empty-expression": "^4.2.0", + "@svgr/babel-plugin-replace-jsx-attribute-value": "^4.2.0", + "@svgr/babel-plugin-svg-dynamic-title": "^4.3.3", + "@svgr/babel-plugin-svg-em-dimensions": "^4.2.0", + "@svgr/babel-plugin-transform-react-native-svg": "^4.2.0", + "@svgr/babel-plugin-transform-svg-component": "^4.2.0" + } + }, + "@svgr/core": { + "version": "4.3.3", + "resolved": "https://registry.npmjs.org/@svgr/core/-/core-4.3.3.tgz", + "integrity": "sha512-qNuGF1QON1626UCaZamWt5yedpgOytvLj5BQZe2j1k1B8DUG4OyugZyfEwBeXozCUwhLEpsrgPrE+eCu4fY17w==", + "requires": { + "@svgr/plugin-jsx": "^4.3.3", + "camelcase": "^5.3.1", + "cosmiconfig": "^5.2.1" + } + }, + "@svgr/hast-util-to-babel-ast": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/@svgr/hast-util-to-babel-ast/-/hast-util-to-babel-ast-4.3.2.tgz", + "integrity": "sha512-JioXclZGhFIDL3ddn4Kiq8qEqYM2PyDKV0aYno8+IXTLuYt6TOgHUbUAAFvqtb0Xn37NwP0BTHglejFoYr8RZg==", + "requires": { + "@babel/types": "^7.4.4" + } + }, + "@svgr/plugin-jsx": { + "version": "4.3.3", + "resolved": "https://registry.npmjs.org/@svgr/plugin-jsx/-/plugin-jsx-4.3.3.tgz", + "integrity": "sha512-cLOCSpNWQnDB1/v+SUENHH7a0XY09bfuMKdq9+gYvtuwzC2rU4I0wKGFEp1i24holdQdwodCtDQdFtJiTCWc+w==", + "requires": { + "@babel/core": "^7.4.5", + "@svgr/babel-preset": "^4.3.3", + "@svgr/hast-util-to-babel-ast": "^4.3.2", + "svg-parser": "^2.0.0" + } + }, + "@svgr/plugin-svgo": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/@svgr/plugin-svgo/-/plugin-svgo-4.3.1.tgz", + "integrity": "sha512-PrMtEDUWjX3Ea65JsVCwTIXuSqa3CG9px+DluF1/eo9mlDrgrtFE7NE/DjdhjJgSM9wenlVBzkzneSIUgfUI/w==", + "requires": { + "cosmiconfig": "^5.2.1", + "merge-deep": "^3.0.2", + "svgo": "^1.2.2" + } + }, + "@svgr/webpack": { + "version": "4.3.3", + "resolved": "https://registry.npmjs.org/@svgr/webpack/-/webpack-4.3.3.tgz", + "integrity": "sha512-bjnWolZ6KVsHhgyCoYRFmbd26p8XVbulCzSG53BDQqAr+JOAderYK7CuYrB3bDjHJuF6LJ7Wrr42+goLRV9qIg==", + "requires": { + "@babel/core": "^7.4.5", + "@babel/plugin-transform-react-constant-elements": "^7.0.0", + "@babel/preset-env": "^7.4.5", + "@babel/preset-react": "^7.0.0", + "@svgr/core": "^4.3.3", + "@svgr/plugin-jsx": "^4.3.3", + "@svgr/plugin-svgo": "^4.3.1", + "loader-utils": "^1.2.3" + } + }, + "@testing-library/dom": { + "version": "6.16.0", + "resolved": "https://registry.npmjs.org/@testing-library/dom/-/dom-6.16.0.tgz", + "integrity": "sha512-lBD88ssxqEfz0wFL6MeUyyWZfV/2cjEZZV3YRpb2IoJRej/4f1jB0TzqIOznTpfR1r34CNesrubxwIlAQ8zgPA==", + "requires": { + "@babel/runtime": "^7.8.4", + "@sheerun/mutationobserver-shim": "^0.3.2", + "@types/testing-library__dom": "^6.12.1", + "aria-query": "^4.0.2", + "dom-accessibility-api": "^0.3.0", + "pretty-format": "^25.1.0", + "wait-for-expect": "^3.0.2" + }, + "dependencies": { + "@jest/types": { + "version": "25.5.0", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-25.5.0.tgz", + "integrity": "sha512-OXD0RgQ86Tu3MazKo8bnrkDRaDXXMGUqd+kTtLtK1Zb7CRzQcaSRPPPV37SvYTdevXEBVxe0HXylEjs8ibkmCw==", + "requires": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^1.1.1", + "@types/yargs": "^15.0.0", + "chalk": "^3.0.0" + } + }, + "@types/yargs": { + "version": "15.0.5", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-15.0.5.tgz", + "integrity": "sha512-Dk/IDOPtOgubt/IaevIUbTgV7doaKkoorvOyYM2CMwuDyP89bekI7H4xLIwunNYiK9jhCkmc6pUrJk3cj2AB9w==", + "requires": { + "@types/yargs-parser": "*" + } + }, + "ansi-styles": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.2.1.tgz", + "integrity": "sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA==", + "requires": { + "@types/color-name": "^1.1.1", + "color-convert": "^2.0.1" + } + }, + "aria-query": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-4.2.2.tgz", + "integrity": "sha512-o/HelwhuKpTj/frsOsbNLNgnNGVIFsVP/SW2BSF14gVl7kAfMOJ6/8wUAUvG1R1NHKrfG+2sHZTu0yauT1qBrA==", + "requires": { + "@babel/runtime": "^7.10.2", + "@babel/runtime-corejs3": "^7.10.2" + } + }, + "chalk": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", + "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "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==", + "requires": { + "color-name": "~1.1.4" + } + }, + "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==" + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" + }, + "pretty-format": { + "version": "25.5.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-25.5.0.tgz", + "integrity": "sha512-kbo/kq2LQ/A/is0PQwsEHM7Ca6//bGPPvU6UnsdDRSKTWxT/ru/xb88v4BJf6a69H+uTytOEsTusT9ksd/1iWQ==", + "requires": { + "@jest/types": "^25.5.0", + "ansi-regex": "^5.0.0", + "ansi-styles": "^4.0.0", + "react-is": "^16.12.0" + } + }, + "supports-color": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.1.0.tgz", + "integrity": "sha512-oRSIpR8pxT1Wr2FquTNnGet79b3BWljqOuoW/h4oBhxJ/HUbX5nX6JSruTkvXDCFMwDPvsaTTbvMLKZWSy0R5g==", + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "@testing-library/jest-dom": { + "version": "4.2.4", + "resolved": "https://registry.npmjs.org/@testing-library/jest-dom/-/jest-dom-4.2.4.tgz", + "integrity": "sha512-j31Bn0rQo12fhCWOUWy9fl7wtqkp7In/YP2p5ZFyRuiiB9Qs3g+hS4gAmDWONbAHcRmVooNJ5eOHQDCOmUFXHg==", + "requires": { + "@babel/runtime": "^7.5.1", + "chalk": "^2.4.1", + "css": "^2.2.3", + "css.escape": "^1.5.1", + "jest-diff": "^24.0.0", + "jest-matcher-utils": "^24.0.0", + "lodash": "^4.17.11", + "pretty-format": "^24.0.0", + "redent": "^3.0.0" + } + }, + "@testing-library/react": { + "version": "9.5.0", + "resolved": "https://registry.npmjs.org/@testing-library/react/-/react-9.5.0.tgz", + "integrity": "sha512-di1b+D0p+rfeboHO5W7gTVeZDIK5+maEgstrZbWZSSvxDyfDRkkyBE1AJR5Psd6doNldluXlCWqXriUfqu/9Qg==", + "requires": { + "@babel/runtime": "^7.8.4", + "@testing-library/dom": "^6.15.0", + "@types/testing-library__react": "^9.1.2" + } + }, + "@testing-library/user-event": { + "version": "7.2.1", + "resolved": "https://registry.npmjs.org/@testing-library/user-event/-/user-event-7.2.1.tgz", + "integrity": "sha512-oZ0Ib5I4Z2pUEcoo95cT1cr6slco9WY7yiPpG+RGNkj8YcYgJnM7pXmYmorNOReh8MIGcKSqXyeGjxnr8YiZbA==" + }, + "@types/babel__core": { + "version": "7.1.9", + "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.1.9.tgz", + "integrity": "sha512-sY2RsIJ5rpER1u3/aQ8OFSI7qGIy8o1NEEbgb2UaJcvOtXOMpd39ko723NBpjQFg9SIX7TXtjejZVGeIMLhoOw==", + "requires": { + "@babel/parser": "^7.1.0", + "@babel/types": "^7.0.0", + "@types/babel__generator": "*", + "@types/babel__template": "*", + "@types/babel__traverse": "*" + } + }, + "@types/babel__generator": { + "version": "7.6.1", + "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.6.1.tgz", + "integrity": "sha512-bBKm+2VPJcMRVwNhxKu8W+5/zT7pwNEqeokFOmbvVSqGzFneNxYcEBro9Ac7/N9tlsaPYnZLK8J1LWKkMsLAew==", + "requires": { + "@babel/types": "^7.0.0" + } + }, + "@types/babel__template": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.0.2.tgz", + "integrity": "sha512-/K6zCpeW7Imzgab2bLkLEbz0+1JlFSrUMdw7KoIIu+IUdu51GWaBZpd3y1VXGVXzynvGa4DaIaxNZHiON3GXUg==", + "requires": { + "@babel/parser": "^7.1.0", + "@babel/types": "^7.0.0" + } + }, + "@types/babel__traverse": { + "version": "7.0.12", + "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.0.12.tgz", + "integrity": "sha512-t4CoEokHTfcyfb4hUaF9oOHu9RmmNWnm1CP0YmMqOOfClKascOmvlEM736vlqeScuGvBDsHkf8R2INd4DWreQA==", + "requires": { + "@babel/types": "^7.3.0" + } + }, + "@types/color-name": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@types/color-name/-/color-name-1.1.1.tgz", + "integrity": "sha512-rr+OQyAjxze7GgWrSaJwydHStIhHq2lvY3BOC2Mj7KnzI7XK0Uw1TOOdI9lDoajEbSWLiYgoo4f1R51erQfhPQ==" + }, + "@types/eslint-visitor-keys": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@types/eslint-visitor-keys/-/eslint-visitor-keys-1.0.0.tgz", + "integrity": "sha512-OCutwjDZ4aFS6PB1UZ988C4YgwlBHJd6wCeQqaLdmadZ/7e+w79+hbMUFC1QXDNCmdyoRfAFdm0RypzwR+Qpag==" + }, + "@types/glob": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/@types/glob/-/glob-7.1.2.tgz", + "integrity": "sha512-VgNIkxK+j7Nz5P7jvUZlRvhuPSmsEfS03b0alKcq5V/STUKAa3Plemsn5mrQUO7am6OErJ4rhGEGJbACclrtRA==", + "requires": { + "@types/minimatch": "*", + "@types/node": "*" + } + }, + "@types/istanbul-lib-coverage": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.3.tgz", + "integrity": "sha512-sz7iLqvVUg1gIedBOvlkxPlc8/uVzyS5OwGz1cKjXzkl3FpL3al0crU8YGU1WoHkxn0Wxbw5tyi6hvzJKNzFsw==" + }, + "@types/istanbul-lib-report": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz", + "integrity": "sha512-plGgXAPfVKFoYfa9NpYDAkseG+g6Jr294RqeqcqDixSbU34MZVJRi/P+7Y8GDpzkEwLaGZZOpKIEmeVZNtKsrg==", + "requires": { + "@types/istanbul-lib-coverage": "*" + } + }, + "@types/istanbul-reports": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-1.1.2.tgz", + "integrity": "sha512-P/W9yOX/3oPZSpaYOCQzGqgCQRXn0FFO/V8bWrCQs+wLmvVVxk6CRBXALEvNs9OHIatlnlFokfhuDo2ug01ciw==", + "requires": { + "@types/istanbul-lib-coverage": "*", + "@types/istanbul-lib-report": "*" + } + }, + "@types/json-schema": { + "version": "7.0.5", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.5.tgz", + "integrity": "sha512-7+2BITlgjgDhH0vvwZU/HZJVyk+2XUlvxXe8dFMedNX/aMkaOq++rMAFXc0tM7ij15QaWlbdQASBR9dihi+bDQ==" + }, + "@types/minimatch": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-3.0.3.tgz", + "integrity": "sha512-tHq6qdbT9U1IRSGf14CL0pUlULksvY9OZ+5eEgl1N7t+OA3tGvNpxJCzuKQlsNgCVwbAs670L1vcVQi8j9HjnA==" + }, + "@types/node": { + "version": "14.0.14", + "resolved": "https://registry.npmjs.org/@types/node/-/node-14.0.14.tgz", + "integrity": "sha512-syUgf67ZQpaJj01/tRTknkMNoBBLWJOBODF0Zm4NrXmiSuxjymFrxnTu1QVYRubhVkRcZLYZG8STTwJRdVm/WQ==" + }, + "@types/parse-json": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.0.tgz", + "integrity": "sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA==" + }, + "@types/prop-types": { + "version": "15.7.3", + "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.3.tgz", + "integrity": "sha512-KfRL3PuHmqQLOG+2tGpRO26Ctg+Cq1E01D2DMriKEATHgWLfeNDmq9e29Q9WIky0dQ3NPkd1mzYH8Lm936Z9qw==" + }, + "@types/q": { + "version": "1.5.4", + "resolved": "https://registry.npmjs.org/@types/q/-/q-1.5.4.tgz", + "integrity": "sha512-1HcDas8SEj4z1Wc696tH56G8OlRaH/sqZOynNNB+HF0WOeXPaxTtbYzJY2oEfiUxjSKjhCKr+MvR7dCHcEelug==" + }, + "@types/react": { + "version": "16.9.41", + "resolved": "https://registry.npmjs.org/@types/react/-/react-16.9.41.tgz", + "integrity": "sha512-6cFei7F7L4wwuM+IND/Q2cV1koQUvJ8iSV+Gwn0c3kvABZ691g7sp3hfEQHOUBJtccl1gPi+EyNjMIl9nGA0ug==", + "requires": { + "@types/prop-types": "*", + "csstype": "^2.2.0" + } + }, + "@types/react-dom": { + "version": "16.9.8", + "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-16.9.8.tgz", + "integrity": "sha512-ykkPQ+5nFknnlU6lDd947WbQ6TE3NNzbQAkInC2EKY1qeYdTKp7onFusmYZb+ityzx2YviqT6BXSu+LyWWJwcA==", + "requires": { + "@types/react": "*" + } + }, + "@types/react-transition-group": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/@types/react-transition-group/-/react-transition-group-4.4.0.tgz", + "integrity": "sha512-/QfLHGpu+2fQOqQaXh8MG9q03bFENooTb/it4jr5kKaZlDQfWvjqWZg48AwzPVMBHlRuTRAY7hRHCEOXz5kV6w==", + "requires": { + "@types/react": "*" + } + }, + "@types/stack-utils": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-1.0.1.tgz", + "integrity": "sha512-l42BggppR6zLmpfU6fq9HEa2oGPEI8yrSPL3GITjfRInppYFahObbIQOQK3UGxEnyQpltZLaPe75046NOZQikw==" + }, + "@types/testing-library__dom": { + "version": "6.14.0", + "resolved": "https://registry.npmjs.org/@types/testing-library__dom/-/testing-library__dom-6.14.0.tgz", + "integrity": "sha512-sMl7OSv0AvMOqn1UJ6j1unPMIHRXen0Ita1ujnMX912rrOcawe4f7wu0Zt9GIQhBhJvH2BaibqFgQ3lP+Pj2hA==", + "requires": { + "pretty-format": "^24.3.0" + } + }, + "@types/testing-library__react": { + "version": "9.1.3", + "resolved": "https://registry.npmjs.org/@types/testing-library__react/-/testing-library__react-9.1.3.tgz", + "integrity": "sha512-iCdNPKU3IsYwRK9JieSYAiX0+aYDXOGAmrC/3/M7AqqSDKnWWVv07X+Zk1uFSL7cMTUYzv4lQRfohucEocn5/w==", + "requires": { + "@types/react-dom": "*", + "@types/testing-library__dom": "*", + "pretty-format": "^25.1.0" + }, + "dependencies": { + "@jest/types": { + "version": "25.5.0", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-25.5.0.tgz", + "integrity": "sha512-OXD0RgQ86Tu3MazKo8bnrkDRaDXXMGUqd+kTtLtK1Zb7CRzQcaSRPPPV37SvYTdevXEBVxe0HXylEjs8ibkmCw==", + "requires": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^1.1.1", + "@types/yargs": "^15.0.0", + "chalk": "^3.0.0" + } + }, + "@types/yargs": { + "version": "15.0.5", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-15.0.5.tgz", + "integrity": "sha512-Dk/IDOPtOgubt/IaevIUbTgV7doaKkoorvOyYM2CMwuDyP89bekI7H4xLIwunNYiK9jhCkmc6pUrJk3cj2AB9w==", + "requires": { + "@types/yargs-parser": "*" + } + }, + "ansi-styles": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.2.1.tgz", + "integrity": "sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA==", + "requires": { + "@types/color-name": "^1.1.1", + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", + "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "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==", + "requires": { + "color-name": "~1.1.4" + } + }, + "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==" + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" + }, + "pretty-format": { + "version": "25.5.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-25.5.0.tgz", + "integrity": "sha512-kbo/kq2LQ/A/is0PQwsEHM7Ca6//bGPPvU6UnsdDRSKTWxT/ru/xb88v4BJf6a69H+uTytOEsTusT9ksd/1iWQ==", + "requires": { + "@jest/types": "^25.5.0", + "ansi-regex": "^5.0.0", + "ansi-styles": "^4.0.0", + "react-is": "^16.12.0" + } + }, + "supports-color": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.1.0.tgz", + "integrity": "sha512-oRSIpR8pxT1Wr2FquTNnGet79b3BWljqOuoW/h4oBhxJ/HUbX5nX6JSruTkvXDCFMwDPvsaTTbvMLKZWSy0R5g==", + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "@types/yargs": { + "version": "13.0.9", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-13.0.9.tgz", + "integrity": "sha512-xrvhZ4DZewMDhoH1utLtOAwYQy60eYFoXeje30TzM3VOvQlBwQaEpKFq5m34k1wOw2AKIi2pwtiAjdmhvlBUzg==", + "requires": { + "@types/yargs-parser": "*" + } + }, + "@types/yargs-parser": { + "version": "15.0.0", + "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-15.0.0.tgz", + "integrity": "sha512-FA/BWv8t8ZWJ+gEOnLLd8ygxH/2UFbAvgEonyfN6yWGLKc7zVjbpl2Y4CTjid9h2RfgPP6SEt6uHwEOply00yw==" + }, + "@typescript-eslint/eslint-plugin": { + "version": "2.34.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-2.34.0.tgz", + "integrity": "sha512-4zY3Z88rEE99+CNvTbXSyovv2z9PNOVffTWD2W8QF5s2prBQtwN2zadqERcrHpcR7O/+KMI3fcTAmUUhK/iQcQ==", + "requires": { + "@typescript-eslint/experimental-utils": "2.34.0", + "functional-red-black-tree": "^1.0.1", + "regexpp": "^3.0.0", + "tsutils": "^3.17.1" + } + }, + "@typescript-eslint/experimental-utils": { + "version": "2.34.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-2.34.0.tgz", + "integrity": "sha512-eS6FTkq+wuMJ+sgtuNTtcqavWXqsflWcfBnlYhg/nS4aZ1leewkXGbvBhaapn1q6qf4M71bsR1tez5JTRMuqwA==", + "requires": { + "@types/json-schema": "^7.0.3", + "@typescript-eslint/typescript-estree": "2.34.0", + "eslint-scope": "^5.0.0", + "eslint-utils": "^2.0.0" + } + }, + "@typescript-eslint/parser": { + "version": "2.34.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-2.34.0.tgz", + "integrity": "sha512-03ilO0ucSD0EPTw2X4PntSIRFtDPWjrVq7C3/Z3VQHRC7+13YB55rcJI3Jt+YgeHbjUdJPcPa7b23rXCBokuyA==", + "requires": { + "@types/eslint-visitor-keys": "^1.0.0", + "@typescript-eslint/experimental-utils": "2.34.0", + "@typescript-eslint/typescript-estree": "2.34.0", + "eslint-visitor-keys": "^1.1.0" + } + }, + "@typescript-eslint/typescript-estree": { + "version": "2.34.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-2.34.0.tgz", + "integrity": "sha512-OMAr+nJWKdlVM9LOqCqh3pQQPwxHAN7Du8DR6dmwCrAmxtiXQnhHJ6tBNtf+cggqfo51SG/FCwnKhXCIM7hnVg==", + "requires": { + "debug": "^4.1.1", + "eslint-visitor-keys": "^1.1.0", + "glob": "^7.1.6", + "is-glob": "^4.0.1", + "lodash": "^4.17.15", + "semver": "^7.3.2", + "tsutils": "^3.17.1" + }, + "dependencies": { + "semver": { + "version": "7.3.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.2.tgz", + "integrity": "sha512-OrOb32TeeambH6UrhtShmF7CRDqhL6/5XpPNp2DuRH6+9QLw/orhp72j87v8Qa1ScDkvrrBNpZcDejAirJmfXQ==" + } + } + }, + "@webassemblyjs/ast": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.8.5.tgz", + "integrity": "sha512-aJMfngIZ65+t71C3y2nBBg5FFG0Okt9m0XEgWZ7Ywgn1oMAT8cNwx00Uv1cQyHtidq0Xn94R4TAywO+LCQ+ZAQ==", + "requires": { + "@webassemblyjs/helper-module-context": "1.8.5", + "@webassemblyjs/helper-wasm-bytecode": "1.8.5", + "@webassemblyjs/wast-parser": "1.8.5" + } + }, + "@webassemblyjs/floating-point-hex-parser": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.8.5.tgz", + "integrity": "sha512-9p+79WHru1oqBh9ewP9zW95E3XAo+90oth7S5Re3eQnECGq59ly1Ri5tsIipKGpiStHsUYmY3zMLqtk3gTcOtQ==" + }, + "@webassemblyjs/helper-api-error": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.8.5.tgz", + "integrity": "sha512-Za/tnzsvnqdaSPOUXHyKJ2XI7PDX64kWtURyGiJJZKVEdFOsdKUCPTNEVFZq3zJ2R0G5wc2PZ5gvdTRFgm81zA==" + }, + "@webassemblyjs/helper-buffer": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.8.5.tgz", + "integrity": "sha512-Ri2R8nOS0U6G49Q86goFIPNgjyl6+oE1abW1pS84BuhP1Qcr5JqMwRFT3Ah3ADDDYGEgGs1iyb1DGX+kAi/c/Q==" + }, + "@webassemblyjs/helper-code-frame": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-code-frame/-/helper-code-frame-1.8.5.tgz", + "integrity": "sha512-VQAadSubZIhNpH46IR3yWO4kZZjMxN1opDrzePLdVKAZ+DFjkGD/rf4v1jap744uPVU6yjL/smZbRIIJTOUnKQ==", + "requires": { + "@webassemblyjs/wast-printer": "1.8.5" + } + }, + "@webassemblyjs/helper-fsm": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-fsm/-/helper-fsm-1.8.5.tgz", + "integrity": "sha512-kRuX/saORcg8se/ft6Q2UbRpZwP4y7YrWsLXPbbmtepKr22i8Z4O3V5QE9DbZK908dh5Xya4Un57SDIKwB9eow==" + }, + "@webassemblyjs/helper-module-context": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-module-context/-/helper-module-context-1.8.5.tgz", + "integrity": "sha512-/O1B236mN7UNEU4t9X7Pj38i4VoU8CcMHyy3l2cV/kIF4U5KoHXDVqcDuOs1ltkac90IM4vZdHc52t1x8Yfs3g==", + "requires": { + "@webassemblyjs/ast": "1.8.5", + "mamacro": "^0.0.3" + } + }, + "@webassemblyjs/helper-wasm-bytecode": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.8.5.tgz", + "integrity": "sha512-Cu4YMYG3Ddl72CbmpjU/wbP6SACcOPVbHN1dI4VJNJVgFwaKf1ppeFJrwydOG3NDHxVGuCfPlLZNyEdIYlQ6QQ==" + }, + "@webassemblyjs/helper-wasm-section": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.8.5.tgz", + "integrity": "sha512-VV083zwR+VTrIWWtgIUpqfvVdK4ff38loRmrdDBgBT8ADXYsEZ5mPQ4Nde90N3UYatHdYoDIFb7oHzMncI02tA==", + "requires": { + "@webassemblyjs/ast": "1.8.5", + "@webassemblyjs/helper-buffer": "1.8.5", + "@webassemblyjs/helper-wasm-bytecode": "1.8.5", + "@webassemblyjs/wasm-gen": "1.8.5" + } + }, + "@webassemblyjs/ieee754": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.8.5.tgz", + "integrity": "sha512-aaCvQYrvKbY/n6wKHb/ylAJr27GglahUO89CcGXMItrOBqRarUMxWLJgxm9PJNuKULwN5n1csT9bYoMeZOGF3g==", + "requires": { + "@xtuc/ieee754": "^1.2.0" + } + }, + "@webassemblyjs/leb128": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.8.5.tgz", + "integrity": "sha512-plYUuUwleLIziknvlP8VpTgO4kqNaH57Y3JnNa6DLpu/sGcP6hbVdfdX5aHAV716pQBKrfuU26BJK29qY37J7A==", + "requires": { + "@xtuc/long": "4.2.2" + } + }, + "@webassemblyjs/utf8": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.8.5.tgz", + "integrity": "sha512-U7zgftmQriw37tfD934UNInokz6yTmn29inT2cAetAsaU9YeVCveWEwhKL1Mg4yS7q//NGdzy79nlXh3bT8Kjw==" + }, + "@webassemblyjs/wasm-edit": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.8.5.tgz", + "integrity": "sha512-A41EMy8MWw5yvqj7MQzkDjU29K7UJq1VrX2vWLzfpRHt3ISftOXqrtojn7nlPsZ9Ijhp5NwuODuycSvfAO/26Q==", + "requires": { + "@webassemblyjs/ast": "1.8.5", + "@webassemblyjs/helper-buffer": "1.8.5", + "@webassemblyjs/helper-wasm-bytecode": "1.8.5", + "@webassemblyjs/helper-wasm-section": "1.8.5", + "@webassemblyjs/wasm-gen": "1.8.5", + "@webassemblyjs/wasm-opt": "1.8.5", + "@webassemblyjs/wasm-parser": "1.8.5", + "@webassemblyjs/wast-printer": "1.8.5" + } + }, + "@webassemblyjs/wasm-gen": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.8.5.tgz", + "integrity": "sha512-BCZBT0LURC0CXDzj5FXSc2FPTsxwp3nWcqXQdOZE4U7h7i8FqtFK5Egia6f9raQLpEKT1VL7zr4r3+QX6zArWg==", + "requires": { + "@webassemblyjs/ast": "1.8.5", + "@webassemblyjs/helper-wasm-bytecode": "1.8.5", + "@webassemblyjs/ieee754": "1.8.5", + "@webassemblyjs/leb128": "1.8.5", + "@webassemblyjs/utf8": "1.8.5" + } + }, + "@webassemblyjs/wasm-opt": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.8.5.tgz", + "integrity": "sha512-HKo2mO/Uh9A6ojzu7cjslGaHaUU14LdLbGEKqTR7PBKwT6LdPtLLh9fPY33rmr5wcOMrsWDbbdCHq4hQUdd37Q==", + "requires": { + "@webassemblyjs/ast": "1.8.5", + "@webassemblyjs/helper-buffer": "1.8.5", + "@webassemblyjs/wasm-gen": "1.8.5", + "@webassemblyjs/wasm-parser": "1.8.5" + } + }, + "@webassemblyjs/wasm-parser": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.8.5.tgz", + "integrity": "sha512-pi0SYE9T6tfcMkthwcgCpL0cM9nRYr6/6fjgDtL6q/ZqKHdMWvxitRi5JcZ7RI4SNJJYnYNaWy5UUrHQy998lw==", + "requires": { + "@webassemblyjs/ast": "1.8.5", + "@webassemblyjs/helper-api-error": "1.8.5", + "@webassemblyjs/helper-wasm-bytecode": "1.8.5", + "@webassemblyjs/ieee754": "1.8.5", + "@webassemblyjs/leb128": "1.8.5", + "@webassemblyjs/utf8": "1.8.5" + } + }, + "@webassemblyjs/wast-parser": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-parser/-/wast-parser-1.8.5.tgz", + "integrity": "sha512-daXC1FyKWHF1i11obK086QRlsMsY4+tIOKgBqI1lxAnkp9xe9YMcgOxm9kLe+ttjs5aWV2KKE1TWJCN57/Btsg==", + "requires": { + "@webassemblyjs/ast": "1.8.5", + "@webassemblyjs/floating-point-hex-parser": "1.8.5", + "@webassemblyjs/helper-api-error": "1.8.5", + "@webassemblyjs/helper-code-frame": "1.8.5", + "@webassemblyjs/helper-fsm": "1.8.5", + "@xtuc/long": "4.2.2" + } + }, + "@webassemblyjs/wast-printer": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.8.5.tgz", + "integrity": "sha512-w0U0pD4EhlnvRyeJzBqaVSJAo9w/ce7/WPogeXLzGkO6hzhr4GnQIZ4W4uUt5b9ooAaXPtnXlj0gzsXEOUNYMg==", + "requires": { + "@webassemblyjs/ast": "1.8.5", + "@webassemblyjs/wast-parser": "1.8.5", + "@xtuc/long": "4.2.2" + } + }, + "@xtuc/ieee754": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz", + "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==" + }, + "@xtuc/long": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz", + "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==" + }, + "abab": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.3.tgz", + "integrity": "sha512-tsFzPpcttalNjFBCFMqsKYQcWxxen1pgJR56by//QwvJc4/OUS3kPOOttx2tSIfjsylB0pYu7f5D3K1RCxUnUg==" + }, + "accepts": { + "version": "1.3.7", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.7.tgz", + "integrity": "sha512-Il80Qs2WjYlJIBNzNkK6KYqlVMTbZLXgHx2oT0pU/fjRHyEp+PEfEPY0R3WCwAGVOtauxh1hOxNgIf5bv7dQpA==", + "requires": { + "mime-types": "~2.1.24", + "negotiator": "0.6.2" + } + }, + "acorn": { + "version": "7.3.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.3.1.tgz", + "integrity": "sha512-tLc0wSnatxAQHVHUapaHdz72pi9KUyHjq5KyHjGg9Y8Ifdc79pTh2XvI6I1/chZbnM7QtNKzh66ooDogPZSleA==" + }, + "acorn-globals": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/acorn-globals/-/acorn-globals-4.3.4.tgz", + "integrity": "sha512-clfQEh21R+D0leSbUdWf3OcfqyaCSAQ8Ryq00bofSekfr9W8u1jyYZo6ir0xu9Gtcf7BjcHJpnbZH7JOCpP60A==", + "requires": { + "acorn": "^6.0.1", + "acorn-walk": "^6.0.1" + }, + "dependencies": { + "acorn": { + "version": "6.4.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.4.1.tgz", + "integrity": "sha512-ZVA9k326Nwrj3Cj9jlh3wGFutC2ZornPNARZwsNYqQYgN0EsV2d53w5RN/co65Ohn4sUAUtb1rSUAOD6XN9idA==" + } + } + }, + "acorn-jsx": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.2.0.tgz", + "integrity": "sha512-HiUX/+K2YpkpJ+SzBffkM/AQ2YE03S0U1kjTLVpoJdhZMOWy8qvXVN9JdLqv2QsaQ6MPYQIuNmwD8zOiYUofLQ==" + }, + "acorn-walk": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-6.2.0.tgz", + "integrity": "sha512-7evsyfH1cLOCdAzZAd43Cic04yKydNx0cF+7tiA19p1XnLLPU4dpCQOqpjqwokFe//vS0QqfqqjCS2JkiIs0cA==" + }, + "address": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/address/-/address-1.1.2.tgz", + "integrity": "sha512-aT6camzM4xEA54YVJYSqxz1kv4IHnQZRtThJJHhUMRExaU5spC7jX5ugSwTaTgJliIgs4VhZOk7htClvQ/LmRA==" + }, + "adjust-sourcemap-loader": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/adjust-sourcemap-loader/-/adjust-sourcemap-loader-2.0.0.tgz", + "integrity": "sha512-4hFsTsn58+YjrU9qKzML2JSSDqKvN8mUGQ0nNIrfPi8hmIONT4L3uUaT6MKdMsZ9AjsU6D2xDkZxCkbQPxChrA==", + "requires": { + "assert": "1.4.1", + "camelcase": "5.0.0", + "loader-utils": "1.2.3", + "object-path": "0.11.4", + "regex-parser": "2.2.10" + }, + "dependencies": { + "camelcase": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.0.0.tgz", + "integrity": "sha512-faqwZqnWxbxn+F1d399ygeamQNy3lPp/H9H6rNrqYh4FSVCtcY+3cub1MxA8o9mDd55mM8Aghuu/kuyYA6VTsA==" + }, + "emojis-list": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-2.1.0.tgz", + "integrity": "sha1-TapNnbAPmBmIDHn6RXrlsJof04k=" + }, + "json5": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", + "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", + "requires": { + "minimist": "^1.2.0" + } + }, + "loader-utils": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.2.3.tgz", + "integrity": "sha512-fkpz8ejdnEMG3s37wGL07iSBDg99O9D5yflE9RGNH3hRdx9SOwYfnGYdZOUIZitN8E+E2vkq3MUMYMvPYl5ZZA==", + "requires": { + "big.js": "^5.2.2", + "emojis-list": "^2.0.0", + "json5": "^1.0.1" + } + } + } + }, + "aggregate-error": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.0.1.tgz", + "integrity": "sha512-quoaXsZ9/BLNae5yiNoUz+Nhkwz83GhWwtYFglcjEQB2NDHCIpApbqXxIFnm4Pq/Nvhrsq5sYJFyohrrxnTGAA==", + "requires": { + "clean-stack": "^2.0.0", + "indent-string": "^4.0.0" + } + }, + "ajv": { + "version": "6.12.2", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.2.tgz", + "integrity": "sha512-k+V+hzjm5q/Mr8ef/1Y9goCmlsK4I6Sm74teeyGvFk1XrOsbsKLjEdrvny42CZ+a8sXbk8KWpY/bDwS+FLL2UQ==", + "requires": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + } + }, + "ajv-errors": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/ajv-errors/-/ajv-errors-1.0.1.tgz", + "integrity": "sha512-DCRfO/4nQ+89p/RK43i8Ezd41EqdGIU4ld7nGF8OQ14oc/we5rEntLCUa7+jrn3nn83BosfwZA0wb4pon2o8iQ==" + }, + "ajv-keywords": { + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.0.tgz", + "integrity": "sha512-eyoaac3btgU8eJlvh01En8OCKzRqlLe2G5jDsCr3RiE2uLGMEEB1aaGwVVpwR8M95956tGH6R+9edC++OvzaVw==" + }, + "alphanum-sort": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/alphanum-sort/-/alphanum-sort-1.0.2.tgz", + "integrity": "sha1-l6ERlkmyEa0zaR2fn0hqjsn74KM=" + }, + "ansi-colors": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-3.2.4.tgz", + "integrity": "sha512-hHUXGagefjN2iRrID63xckIvotOXOojhQKWIPUZ4mNUZ9nLZW+7FMNoE1lOkEhNWYsx/7ysGIuJYCiMAA9FnrA==" + }, + "ansi-escapes": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.1.tgz", + "integrity": "sha512-JWF7ocqNrp8u9oqpgV+wH5ftbt+cfvv+PTjOvKLT3AdYly/LmORARfEVT1iyjwN+4MqE5UmVKoAdIBqeoCHgLA==", + "requires": { + "type-fest": "^0.11.0" + }, + "dependencies": { + "type-fest": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.11.0.tgz", + "integrity": "sha512-OdjXJxnCN1AvyLSzeKIgXTXxV+99ZuXl3Hpo9XpJAv9MBcHrrJOQ5kV7ypXOuQie+AmWG25hLbiKdwYTifzcfQ==" + } + } + }, + "ansi-html": { + "version": "0.0.7", + "resolved": "https://registry.npmjs.org/ansi-html/-/ansi-html-0.0.7.tgz", + "integrity": "sha1-gTWEAhliqenm/QOflA0S9WynhZ4=" + }, + "ansi-regex": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", + "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==" + }, + "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==", + "requires": { + "color-convert": "^1.9.0" + } + }, + "anymatch": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz", + "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==", + "requires": { + "micromatch": "^3.1.4", + "normalize-path": "^2.1.1" + } + }, + "aproba": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz", + "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==" + }, + "argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "requires": { + "sprintf-js": "~1.0.2" + } + }, + "aria-query": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-3.0.0.tgz", + "integrity": "sha1-ZbP8wcoRVajJrmTW7uKX8V1RM8w=", + "requires": { + "ast-types-flow": "0.0.7", + "commander": "^2.11.0" + } + }, + "arity-n": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/arity-n/-/arity-n-1.0.4.tgz", + "integrity": "sha1-2edrEXM+CFacCEeuezmyhgswt0U=" + }, + "arr-diff": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", + "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=" + }, + "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==" + }, + "arr-union": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz", + "integrity": "sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=" + }, + "array-equal": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/array-equal/-/array-equal-1.0.0.tgz", + "integrity": "sha1-jCpe8kcv2ep0KwTHenUJO6J1fJM=" + }, + "array-flatten": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-2.1.2.tgz", + "integrity": "sha512-hNfzcOV8W4NdualtqBFPyVO+54DSJuZGY9qT4pRroB6S9e3iiido2ISIC5h9R2sPJ8H3FHCIiEnsv1lPXO3KtQ==" + }, + "array-includes": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.1.tgz", + "integrity": "sha512-c2VXaCHl7zPsvpkFsw4nxvFie4fh1ur9bpcgsVkIjqn0H/Xwdg+7fv3n2r/isyS8EBj5b06M9kHyZuIr4El6WQ==", + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.0", + "is-string": "^1.0.5" + } + }, + "array-union": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz", + "integrity": "sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk=", + "requires": { + "array-uniq": "^1.0.1" + } + }, + "array-uniq": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz", + "integrity": "sha1-r2rId6Jcx/dOBYiUdThY39sk/bY=" + }, + "array-unique": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", + "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=" + }, + "array.prototype.flat": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.2.3.tgz", + "integrity": "sha512-gBlRZV0VSmfPIeWfuuy56XZMvbVfbEUnOXUvt3F/eUUUSyzlgLxhEX4YAEpxNAogRGehPSnfXyPtYyKAhkzQhQ==", + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.0-next.1" + } + }, + "arrify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", + "integrity": "sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0=" + }, + "asap": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz", + "integrity": "sha1-5QNHYR1+aQlDIIu9r+vLwvuGbUY=" + }, + "asn1": { + "version": "0.2.4", + "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz", + "integrity": "sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg==", + "requires": { + "safer-buffer": "~2.1.0" + } + }, + "asn1.js": { + "version": "4.10.1", + "resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-4.10.1.tgz", + "integrity": "sha512-p32cOF5q0Zqs9uBiONKYLm6BClCoBCM5O9JfeUSlnQLBTxYdTK+pW+nXflm8UkKd2UYlEbYz5qEi0JuZR9ckSw==", + "requires": { + "bn.js": "^4.0.0", + "inherits": "^2.0.1", + "minimalistic-assert": "^1.0.0" + }, + "dependencies": { + "bn.js": { + "version": "4.11.9", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.9.tgz", + "integrity": "sha512-E6QoYqCKZfgatHTdHzs1RRKP7ip4vvm+EyRUeE2RF0NblwVvb0p6jSVeNTOFxPn26QXN2o6SMfNxKp6kU8zQaw==" + } + } + }, + "assert": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/assert/-/assert-1.4.1.tgz", + "integrity": "sha1-mZEtWRg2tab1s0XA8H7vwI/GXZE=", + "requires": { + "util": "0.10.3" + } + }, + "assert-plus": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=" + }, + "assign-symbols": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz", + "integrity": "sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=" + }, + "ast-types-flow": { + "version": "0.0.7", + "resolved": "https://registry.npmjs.org/ast-types-flow/-/ast-types-flow-0.0.7.tgz", + "integrity": "sha1-9wtzXGvKGlycItmCw+Oef+ujva0=" + }, + "astral-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-1.0.0.tgz", + "integrity": "sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg==" + }, + "async": { + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/async/-/async-2.6.3.tgz", + "integrity": "sha512-zflvls11DCy+dQWzTW2dzuilv8Z5X/pjfmZOWba6TNIVDm+2UDaJmXSOXlasHKfNBs8oo3M0aT50fDEWfKZjXg==", + "requires": { + "lodash": "^4.17.14" + } + }, + "async-each": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/async-each/-/async-each-1.0.3.tgz", + "integrity": "sha512-z/WhQ5FPySLdvREByI2vZiTWwCnF0moMJ1hK9YQwDTHKh6I7/uSckMetoRGb5UBZPC1z0jlw+n/XCgjeH7y1AQ==" + }, + "async-limiter": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/async-limiter/-/async-limiter-1.0.1.tgz", + "integrity": "sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ==" + }, + "asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=" + }, + "atob": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz", + "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==" + }, + "autoprefixer": { + "version": "9.8.4", + "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-9.8.4.tgz", + "integrity": "sha512-84aYfXlpUe45lvmS+HoAWKCkirI/sw4JK0/bTeeqgHYco3dcsOn0NqdejISjptsYwNji/21dnkDri9PsYKk89A==", + "requires": { + "browserslist": "^4.12.0", + "caniuse-lite": "^1.0.30001087", + "colorette": "^1.2.0", + "normalize-range": "^0.1.2", + "num2fraction": "^1.2.2", + "postcss": "^7.0.32", + "postcss-value-parser": "^4.1.0" + } + }, + "aws-sign2": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", + "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=" + }, + "aws4": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.10.0.tgz", + "integrity": "sha512-3YDiu347mtVtjpyV3u5kVqQLP242c06zwDOgpeRnybmXlYYsLbtTrUBUm8i8srONt+FWobl5aibnU1030PeeuA==" + }, + "axobject-query": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/axobject-query/-/axobject-query-2.2.0.tgz", + "integrity": "sha512-Td525n+iPOOyUQIeBfcASuG6uJsDOITl7Mds5gFyerkWiX7qhUTdYUBlSgNMyVqtSJqwpt1kXGLdUt6SykLMRA==" + }, + "babel-code-frame": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-6.26.0.tgz", + "integrity": "sha1-Y/1D99weO7fONZR9uP42mj9Yx0s=", + "requires": { + "chalk": "^1.1.3", + "esutils": "^2.0.2", + "js-tokens": "^3.0.2" + }, + "dependencies": { + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=" + }, + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=" + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "requires": { + "ansi-styles": "^2.2.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" + } + }, + "js-tokens": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.2.tgz", + "integrity": "sha1-mGbfOVECEw449/mWvOtlRDIJwls=" + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "requires": { + "ansi-regex": "^2.0.0" + } + }, + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=" + } + } + }, + "babel-eslint": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/babel-eslint/-/babel-eslint-10.1.0.tgz", + "integrity": "sha512-ifWaTHQ0ce+448CYop8AdrQiBsGrnC+bMgfyKFdi6EsPLTAWG+QfyDeM6OH+FmWnKvEq5NnBMLvlBUPKQZoDSg==", + "requires": { + "@babel/code-frame": "^7.0.0", + "@babel/parser": "^7.7.0", + "@babel/traverse": "^7.7.0", + "@babel/types": "^7.7.0", + "eslint-visitor-keys": "^1.0.0", + "resolve": "^1.12.0" + } + }, + "babel-extract-comments": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/babel-extract-comments/-/babel-extract-comments-1.0.0.tgz", + "integrity": "sha512-qWWzi4TlddohA91bFwgt6zO/J0X+io7Qp184Fw0m2JYRSTZnJbFR8+07KmzudHCZgOiKRCrjhylwv9Xd8gfhVQ==", + "requires": { + "babylon": "^6.18.0" + } + }, + "babel-jest": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-24.9.0.tgz", + "integrity": "sha512-ntuddfyiN+EhMw58PTNL1ph4C9rECiQXjI4nMMBKBaNjXvqLdkXpPRcMSr4iyBrJg/+wz9brFUD6RhOAT6r4Iw==", + "requires": { + "@jest/transform": "^24.9.0", + "@jest/types": "^24.9.0", + "@types/babel__core": "^7.1.0", + "babel-plugin-istanbul": "^5.1.0", + "babel-preset-jest": "^24.9.0", + "chalk": "^2.4.2", + "slash": "^2.0.0" + } + }, + "babel-loader": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-8.1.0.tgz", + "integrity": "sha512-7q7nC1tYOrqvUrN3LQK4GwSk/TQorZSOlO9C+RZDZpODgyN4ZlCqE5q9cDsyWOliN+aU9B4JX01xK9eJXowJLw==", + "requires": { + "find-cache-dir": "^2.1.0", + "loader-utils": "^1.4.0", + "mkdirp": "^0.5.3", + "pify": "^4.0.1", + "schema-utils": "^2.6.5" + }, + "dependencies": { + "pify": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", + "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==" + } + } + }, + "babel-plugin-dynamic-import-node": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.3.tgz", + "integrity": "sha512-jZVI+s9Zg3IqA/kdi0i6UDCybUI3aSBLnglhYbSSjKlV7yF1F/5LWv8MakQmvYpnbJDS6fcBL2KzHSxNCMtWSQ==", + "requires": { + "object.assign": "^4.1.0" + } + }, + "babel-plugin-istanbul": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-5.2.0.tgz", + "integrity": "sha512-5LphC0USA8t4i1zCtjbbNb6jJj/9+X6P37Qfirc/70EQ34xKlMW+a1RHGwxGI+SwWpNwZ27HqvzAobeqaXwiZw==", + "requires": { + "@babel/helper-plugin-utils": "^7.0.0", + "find-up": "^3.0.0", + "istanbul-lib-instrument": "^3.3.0", + "test-exclude": "^5.2.3" + } + }, + "babel-plugin-jest-hoist": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-24.9.0.tgz", + "integrity": "sha512-2EMA2P8Vp7lG0RAzr4HXqtYwacfMErOuv1U3wrvxHX6rD1sV6xS3WXG3r8TRQ2r6w8OhvSdWt+z41hQNwNm3Xw==", + "requires": { + "@types/babel__traverse": "^7.0.6" + } + }, + "babel-plugin-macros": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/babel-plugin-macros/-/babel-plugin-macros-2.8.0.tgz", + "integrity": "sha512-SEP5kJpfGYqYKpBrj5XU3ahw5p5GOHJ0U5ssOSQ/WBVdwkD2Dzlce95exQTs3jOVWPPKLBN2rlEWkCK7dSmLvg==", + "requires": { + "@babel/runtime": "^7.7.2", + "cosmiconfig": "^6.0.0", + "resolve": "^1.12.0" + }, + "dependencies": { + "cosmiconfig": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-6.0.0.tgz", + "integrity": "sha512-xb3ZL6+L8b9JLLCx3ZdoZy4+2ECphCMo2PwqgP1tlfVq6M6YReyzBJtvWWtbDSpNr9hn96pkCiZqUcFEc+54Qg==", + "requires": { + "@types/parse-json": "^4.0.0", + "import-fresh": "^3.1.0", + "parse-json": "^5.0.0", + "path-type": "^4.0.0", + "yaml": "^1.7.2" + } + }, + "import-fresh": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.2.1.tgz", + "integrity": "sha512-6e1q1cnWP2RXD9/keSkxHScg508CdXqXWgWBaETNhyuBFz+kUZlKboh+ISK+bU++DmbHimVBrOz/zzPe0sZ3sQ==", + "requires": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + } + }, + "parse-json": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.0.0.tgz", + "integrity": "sha512-OOY5b7PAEFV0E2Fir1KOkxchnZNCdowAJgQ5NuxjpBKTRP3pQhwkrkxqQjeoKJ+fO7bCpmIZaogI4eZGDMEGOw==", + "requires": { + "@babel/code-frame": "^7.0.0", + "error-ex": "^1.3.1", + "json-parse-better-errors": "^1.0.1", + "lines-and-columns": "^1.1.6" + } + }, + "path-type": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", + "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==" + }, + "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==" + } + } + }, + "babel-plugin-named-asset-import": { + "version": "0.3.6", + "resolved": "https://registry.npmjs.org/babel-plugin-named-asset-import/-/babel-plugin-named-asset-import-0.3.6.tgz", + "integrity": "sha512-1aGDUfL1qOOIoqk9QKGIo2lANk+C7ko/fqH0uIyC71x3PEGz0uVP8ISgfEsFuG+FKmjHTvFK/nNM8dowpmUxLA==" + }, + "babel-plugin-syntax-object-rest-spread": { + "version": "6.13.0", + "resolved": "https://registry.npmjs.org/babel-plugin-syntax-object-rest-spread/-/babel-plugin-syntax-object-rest-spread-6.13.0.tgz", + "integrity": "sha1-/WU28rzhODb/o6VFjEkDpZe7O/U=" + }, + "babel-plugin-transform-object-rest-spread": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-object-rest-spread/-/babel-plugin-transform-object-rest-spread-6.26.0.tgz", + "integrity": "sha1-DzZpLVD+9rfi1LOsFHgTepY7ewY=", + "requires": { + "babel-plugin-syntax-object-rest-spread": "^6.8.0", + "babel-runtime": "^6.26.0" + } + }, + "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==" + }, + "babel-preset-jest": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-24.9.0.tgz", + "integrity": "sha512-izTUuhE4TMfTRPF92fFwD2QfdXaZW08qvWTFCI51V8rW5x00UuPgc3ajRoWofXOuxjfcOM5zzSYsQS3H8KGCAg==", + "requires": { + "@babel/plugin-syntax-object-rest-spread": "^7.0.0", + "babel-plugin-jest-hoist": "^24.9.0" + } + }, + "babel-preset-react-app": { + "version": "9.1.2", + "resolved": "https://registry.npmjs.org/babel-preset-react-app/-/babel-preset-react-app-9.1.2.tgz", + "integrity": "sha512-k58RtQOKH21NyKtzptoAvtAODuAJJs3ZhqBMl456/GnXEQ/0La92pNmwgWoMn5pBTrsvk3YYXdY7zpY4e3UIxA==", + "requires": { + "@babel/core": "7.9.0", + "@babel/plugin-proposal-class-properties": "7.8.3", + "@babel/plugin-proposal-decorators": "7.8.3", + "@babel/plugin-proposal-nullish-coalescing-operator": "7.8.3", + "@babel/plugin-proposal-numeric-separator": "7.8.3", + "@babel/plugin-proposal-optional-chaining": "7.9.0", + "@babel/plugin-transform-flow-strip-types": "7.9.0", + "@babel/plugin-transform-react-display-name": "7.8.3", + "@babel/plugin-transform-runtime": "7.9.0", + "@babel/preset-env": "7.9.0", + "@babel/preset-react": "7.9.1", + "@babel/preset-typescript": "7.9.0", + "@babel/runtime": "7.9.0", + "babel-plugin-macros": "2.8.0", + "babel-plugin-transform-react-remove-prop-types": "0.4.24" + }, + "dependencies": { + "@babel/plugin-proposal-class-properties": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.8.3.tgz", + "integrity": "sha512-EqFhbo7IosdgPgZggHaNObkmO1kNUe3slaKu54d5OWvy+p9QIKOzK1GAEpAIsZtWVtPXUHSMcT4smvDrCfY4AA==", + "requires": { + "@babel/helper-create-class-features-plugin": "^7.8.3", + "@babel/helper-plugin-utils": "^7.8.3" + } + }, + "@babel/plugin-proposal-nullish-coalescing-operator": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.8.3.tgz", + "integrity": "sha512-TS9MlfzXpXKt6YYomudb/KU7nQI6/xnapG6in1uZxoxDghuSMZsPb6D2fyUwNYSAp4l1iR7QtFOjkqcRYcUsfw==", + "requires": { + "@babel/helper-plugin-utils": "^7.8.3", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.0" + } + }, + "@babel/plugin-proposal-numeric-separator": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.8.3.tgz", + "integrity": "sha512-jWioO1s6R/R+wEHizfaScNsAx+xKgwTLNXSh7tTC4Usj3ItsPEhYkEpU4h+lpnBwq7NBVOJXfO6cRFYcX69JUQ==", + "requires": { + "@babel/helper-plugin-utils": "^7.8.3", + "@babel/plugin-syntax-numeric-separator": "^7.8.3" + } + }, + "@babel/plugin-proposal-optional-chaining": { + "version": "7.9.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.9.0.tgz", + "integrity": "sha512-NDn5tu3tcv4W30jNhmc2hyD5c56G6cXx4TesJubhxrJeCvuuMpttxr0OnNCqbZGhFjLrg+NIhxxC+BK5F6yS3w==", + "requires": { + "@babel/helper-plugin-utils": "^7.8.3", + "@babel/plugin-syntax-optional-chaining": "^7.8.0" + } + }, + "@babel/plugin-transform-react-display-name": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.8.3.tgz", + "integrity": "sha512-3Jy/PCw8Fe6uBKtEgz3M82ljt+lTg+xJaM4og+eyu83qLT87ZUSckn0wy7r31jflURWLO83TW6Ylf7lyXj3m5A==", + "requires": { + "@babel/helper-plugin-utils": "^7.8.3" + } + }, + "@babel/preset-env": { + "version": "7.9.0", + "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.9.0.tgz", + "integrity": "sha512-712DeRXT6dyKAM/FMbQTV/FvRCms2hPCx+3weRjZ8iQVQWZejWWk1wwG6ViWMyqb/ouBbGOl5b6aCk0+j1NmsQ==", + "requires": { + "@babel/compat-data": "^7.9.0", + "@babel/helper-compilation-targets": "^7.8.7", + "@babel/helper-module-imports": "^7.8.3", + "@babel/helper-plugin-utils": "^7.8.3", + "@babel/plugin-proposal-async-generator-functions": "^7.8.3", + "@babel/plugin-proposal-dynamic-import": "^7.8.3", + "@babel/plugin-proposal-json-strings": "^7.8.3", + "@babel/plugin-proposal-nullish-coalescing-operator": "^7.8.3", + "@babel/plugin-proposal-numeric-separator": "^7.8.3", + "@babel/plugin-proposal-object-rest-spread": "^7.9.0", + "@babel/plugin-proposal-optional-catch-binding": "^7.8.3", + "@babel/plugin-proposal-optional-chaining": "^7.9.0", + "@babel/plugin-proposal-unicode-property-regex": "^7.8.3", + "@babel/plugin-syntax-async-generators": "^7.8.0", + "@babel/plugin-syntax-dynamic-import": "^7.8.0", + "@babel/plugin-syntax-json-strings": "^7.8.0", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.0", + "@babel/plugin-syntax-numeric-separator": "^7.8.0", + "@babel/plugin-syntax-object-rest-spread": "^7.8.0", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.0", + "@babel/plugin-syntax-optional-chaining": "^7.8.0", + "@babel/plugin-syntax-top-level-await": "^7.8.3", + "@babel/plugin-transform-arrow-functions": "^7.8.3", + "@babel/plugin-transform-async-to-generator": "^7.8.3", + "@babel/plugin-transform-block-scoped-functions": "^7.8.3", + "@babel/plugin-transform-block-scoping": "^7.8.3", + "@babel/plugin-transform-classes": "^7.9.0", + "@babel/plugin-transform-computed-properties": "^7.8.3", + "@babel/plugin-transform-destructuring": "^7.8.3", + "@babel/plugin-transform-dotall-regex": "^7.8.3", + "@babel/plugin-transform-duplicate-keys": "^7.8.3", + "@babel/plugin-transform-exponentiation-operator": "^7.8.3", + "@babel/plugin-transform-for-of": "^7.9.0", + "@babel/plugin-transform-function-name": "^7.8.3", + "@babel/plugin-transform-literals": "^7.8.3", + "@babel/plugin-transform-member-expression-literals": "^7.8.3", + "@babel/plugin-transform-modules-amd": "^7.9.0", + "@babel/plugin-transform-modules-commonjs": "^7.9.0", + "@babel/plugin-transform-modules-systemjs": "^7.9.0", + "@babel/plugin-transform-modules-umd": "^7.9.0", + "@babel/plugin-transform-named-capturing-groups-regex": "^7.8.3", + "@babel/plugin-transform-new-target": "^7.8.3", + "@babel/plugin-transform-object-super": "^7.8.3", + "@babel/plugin-transform-parameters": "^7.8.7", + "@babel/plugin-transform-property-literals": "^7.8.3", + "@babel/plugin-transform-regenerator": "^7.8.7", + "@babel/plugin-transform-reserved-words": "^7.8.3", + "@babel/plugin-transform-shorthand-properties": "^7.8.3", + "@babel/plugin-transform-spread": "^7.8.3", + "@babel/plugin-transform-sticky-regex": "^7.8.3", + "@babel/plugin-transform-template-literals": "^7.8.3", + "@babel/plugin-transform-typeof-symbol": "^7.8.4", + "@babel/plugin-transform-unicode-regex": "^7.8.3", + "@babel/preset-modules": "^0.1.3", + "@babel/types": "^7.9.0", + "browserslist": "^4.9.1", + "core-js-compat": "^3.6.2", + "invariant": "^2.2.2", + "levenary": "^1.1.1", + "semver": "^5.5.0" + } + }, + "@babel/preset-react": { + "version": "7.9.1", + "resolved": "https://registry.npmjs.org/@babel/preset-react/-/preset-react-7.9.1.tgz", + "integrity": "sha512-aJBYF23MPj0RNdp/4bHnAP0NVqqZRr9kl0NAOP4nJCex6OYVio59+dnQzsAWFuogdLyeaKA1hmfUIVZkY5J+TQ==", + "requires": { + "@babel/helper-plugin-utils": "^7.8.3", + "@babel/plugin-transform-react-display-name": "^7.8.3", + "@babel/plugin-transform-react-jsx": "^7.9.1", + "@babel/plugin-transform-react-jsx-development": "^7.9.0", + "@babel/plugin-transform-react-jsx-self": "^7.9.0", + "@babel/plugin-transform-react-jsx-source": "^7.9.0" + } + }, + "@babel/runtime": { + "version": "7.9.0", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.9.0.tgz", + "integrity": "sha512-cTIudHnzuWLS56ik4DnRnqqNf8MkdUzV4iFFI1h7Jo9xvrpQROYaAnaSd2mHLQAzzZAPfATynX5ord6YlNYNMA==", + "requires": { + "regenerator-runtime": "^0.13.4" + } + }, + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==" + } + } + }, + "babel-runtime": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz", + "integrity": "sha1-llxwWGaOgrVde/4E/yM3vItWR/4=", + "requires": { + "core-js": "^2.4.0", + "regenerator-runtime": "^0.11.0" + }, + "dependencies": { + "core-js": { + "version": "2.6.11", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.11.tgz", + "integrity": "sha512-5wjnpaT/3dV+XB4borEsnAYQchn00XSgTAWKDkEqv+K8KevjbzmofK6hfJ9TZIlpj2N0xQpazy7PiRQiWHqzWg==" + }, + "regenerator-runtime": { + "version": "0.11.1", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz", + "integrity": "sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg==" + } + } + }, + "babylon": { + "version": "6.18.0", + "resolved": "https://registry.npmjs.org/babylon/-/babylon-6.18.0.tgz", + "integrity": "sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ==" + }, + "balanced-match": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", + "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=" + }, + "base": { + "version": "0.11.2", + "resolved": "https://registry.npmjs.org/base/-/base-0.11.2.tgz", + "integrity": "sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==", + "requires": { + "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" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "requires": { + "is-descriptor": "^1.0.0" + } + }, + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + } + }, + "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==" + } + } + }, + "base64-js": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.3.1.tgz", + "integrity": "sha512-mLQ4i2QO1ytvGWFWmcngKO//JXAQueZvwEKtjgQFM4jIK0kU+ytMfplL8j+n5mspOfjHwoAg+9yhb7BwAHm36g==" + }, + "batch": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/batch/-/batch-0.6.1.tgz", + "integrity": "sha1-3DQxT05nkxgJP8dgJyUl+UvyXBY=" + }, + "bcrypt-pbkdf": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", + "integrity": "sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=", + "requires": { + "tweetnacl": "^0.14.3" + } + }, + "big.js": { + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz", + "integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==" + }, + "binary-extensions": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.0.0.tgz", + "integrity": "sha512-Phlt0plgpIIBOGTT/ehfFnbNlfsDEiqmzE2KRXoX1bLIlir4X/MR+zSyBEkL05ffWgnRSf/DXv+WrUAVr93/ow==" + }, + "bluebird": { + "version": "3.7.2", + "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz", + "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==" + }, + "bn.js": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.1.2.tgz", + "integrity": "sha512-40rZaf3bUNKTVYu9sIeeEGOg7g14Yvnj9kH7b50EiwX0Q7A6umbvfI5tvHaOERH0XigqKkfLkFQxzb4e6CIXnA==" + }, + "body-parser": { + "version": "1.19.0", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.19.0.tgz", + "integrity": "sha512-dhEPs72UPbDnAQJ9ZKMNTP6ptJaionhP5cBb541nXPlW60Jepo9RV/a4fX4XWW9CuFNK22krhrj1+rgzifNCsw==", + "requires": { + "bytes": "3.1.0", + "content-type": "~1.0.4", + "debug": "2.6.9", + "depd": "~1.1.2", + "http-errors": "1.7.2", + "iconv-lite": "0.4.24", + "on-finished": "~2.3.0", + "qs": "6.7.0", + "raw-body": "2.4.0", + "type-is": "~1.6.17" + }, + "dependencies": { + "bytes": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.0.tgz", + "integrity": "sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg==" + }, + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + }, + "qs": { + "version": "6.7.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.7.0.tgz", + "integrity": "sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ==" + } + } + }, + "bonjour": { + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/bonjour/-/bonjour-3.5.0.tgz", + "integrity": "sha1-jokKGD2O6aI5OzhExpGkK897yfU=", + "requires": { + "array-flatten": "^2.1.0", + "deep-equal": "^1.0.1", + "dns-equal": "^1.0.0", + "dns-txt": "^2.0.2", + "multicast-dns": "^6.0.1", + "multicast-dns-service-types": "^1.1.0" + } + }, + "boolbase": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", + "integrity": "sha1-aN/1++YMUes3cl6p4+0xDcwed24=" + }, + "brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "braces": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", + "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", + "requires": { + "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" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "brorand": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz", + "integrity": "sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8=" + }, + "browser-process-hrtime": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/browser-process-hrtime/-/browser-process-hrtime-1.0.0.tgz", + "integrity": "sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow==" + }, + "browser-resolve": { + "version": "1.11.3", + "resolved": "https://registry.npmjs.org/browser-resolve/-/browser-resolve-1.11.3.tgz", + "integrity": "sha512-exDi1BYWB/6raKHmDTCicQfTkqwN5fioMFV4j8BsfMU4R2DK/QfZfK7kOVkmWCNANf0snkBzqGqAJBao9gZMdQ==", + "requires": { + "resolve": "1.1.7" + }, + "dependencies": { + "resolve": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.1.7.tgz", + "integrity": "sha1-IDEU2CrSxe2ejgQRs5ModeiJ6Xs=" + } + } + }, + "browserify-aes": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.2.0.tgz", + "integrity": "sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==", + "requires": { + "buffer-xor": "^1.0.3", + "cipher-base": "^1.0.0", + "create-hash": "^1.1.0", + "evp_bytestokey": "^1.0.3", + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, + "browserify-cipher": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/browserify-cipher/-/browserify-cipher-1.0.1.tgz", + "integrity": "sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w==", + "requires": { + "browserify-aes": "^1.0.4", + "browserify-des": "^1.0.0", + "evp_bytestokey": "^1.0.0" + } + }, + "browserify-des": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/browserify-des/-/browserify-des-1.0.2.tgz", + "integrity": "sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A==", + "requires": { + "cipher-base": "^1.0.1", + "des.js": "^1.0.0", + "inherits": "^2.0.1", + "safe-buffer": "^5.1.2" + } + }, + "browserify-rsa": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.0.1.tgz", + "integrity": "sha1-IeCr+vbyApzy+vsTNWenAdQTVSQ=", + "requires": { + "bn.js": "^4.1.0", + "randombytes": "^2.0.1" + }, + "dependencies": { + "bn.js": { + "version": "4.11.9", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.9.tgz", + "integrity": "sha512-E6QoYqCKZfgatHTdHzs1RRKP7ip4vvm+EyRUeE2RF0NblwVvb0p6jSVeNTOFxPn26QXN2o6SMfNxKp6kU8zQaw==" + } + } + }, + "browserify-sign": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.2.0.tgz", + "integrity": "sha512-hEZC1KEeYuoHRqhGhTy6gWrpJA3ZDjFWv0DE61643ZnOXAKJb3u7yWcrU0mMc9SwAqK1n7myPGndkp0dFG7NFA==", + "requires": { + "bn.js": "^5.1.1", + "browserify-rsa": "^4.0.1", + "create-hash": "^1.2.0", + "create-hmac": "^1.1.7", + "elliptic": "^6.5.2", + "inherits": "^2.0.4", + "parse-asn1": "^5.1.5", + "readable-stream": "^3.6.0", + "safe-buffer": "^5.2.0" + }, + "dependencies": { + "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==" + } + } + }, + "browserify-zlib": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/browserify-zlib/-/browserify-zlib-0.2.0.tgz", + "integrity": "sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA==", + "requires": { + "pako": "~1.0.5" + } + }, + "browserslist": { + "version": "4.12.1", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.12.1.tgz", + "integrity": "sha512-WMjXwFtPskSW1pQUDJRxvRKRkeCr7usN0O/Za76N+F4oadaTdQHotSGcX9jT/Hs7mSKPkyMFNvqawB/1HzYDKQ==", + "requires": { + "caniuse-lite": "^1.0.30001088", + "electron-to-chromium": "^1.3.481", + "escalade": "^3.0.1", + "node-releases": "^1.1.58" + } + }, + "bser": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/bser/-/bser-2.1.1.tgz", + "integrity": "sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==", + "requires": { + "node-int64": "^0.4.0" + } + }, + "buffer": { + "version": "4.9.2", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-4.9.2.tgz", + "integrity": "sha512-xq+q3SRMOxGivLhBNaUdC64hDTQwejJ+H0T/NB1XMtTVEwNTrfFF3gAxiyW0Bu/xWEGhjVKgUcMhCrUy2+uCWg==", + "requires": { + "base64-js": "^1.0.2", + "ieee754": "^1.1.4", + "isarray": "^1.0.0" + } + }, + "buffer-from": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz", + "integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==" + }, + "buffer-indexof": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/buffer-indexof/-/buffer-indexof-1.1.1.tgz", + "integrity": "sha512-4/rOEg86jivtPTeOUUT61jJO1Ya1TrR/OkqCSZDyq84WJh3LuuiphBYJN+fm5xufIk4XAFcEwte/8WzC8If/1g==" + }, + "buffer-xor": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz", + "integrity": "sha1-JuYe0UIvtw3ULm42cp7VHYVf6Nk=" + }, + "builtin-status-codes": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz", + "integrity": "sha1-hZgoeOIbmOHGZCXgPQF0eI9Wnug=" + }, + "bytes": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz", + "integrity": "sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg=" + }, + "cacache": { + "version": "13.0.1", + "resolved": "https://registry.npmjs.org/cacache/-/cacache-13.0.1.tgz", + "integrity": "sha512-5ZvAxd05HDDU+y9BVvcqYu2LLXmPnQ0hW62h32g4xBTgL/MppR4/04NHfj/ycM2y6lmTnbw6HVi+1eN0Psba6w==", + "requires": { + "chownr": "^1.1.2", + "figgy-pudding": "^3.5.1", + "fs-minipass": "^2.0.0", + "glob": "^7.1.4", + "graceful-fs": "^4.2.2", + "infer-owner": "^1.0.4", + "lru-cache": "^5.1.1", + "minipass": "^3.0.0", + "minipass-collect": "^1.0.2", + "minipass-flush": "^1.0.5", + "minipass-pipeline": "^1.2.2", + "mkdirp": "^0.5.1", + "move-concurrently": "^1.0.1", + "p-map": "^3.0.0", + "promise-inflight": "^1.0.1", + "rimraf": "^2.7.1", + "ssri": "^7.0.0", + "unique-filename": "^1.1.1" + }, + "dependencies": { + "rimraf": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", + "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", + "requires": { + "glob": "^7.1.3" + } + } + } + }, + "cache-base": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz", + "integrity": "sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==", + "requires": { + "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-me-maybe": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/call-me-maybe/-/call-me-maybe-1.0.1.tgz", + "integrity": "sha1-JtII6onje1y95gJQoV8DHBak1ms=" + }, + "caller-callsite": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/caller-callsite/-/caller-callsite-2.0.0.tgz", + "integrity": "sha1-hH4PzgoiN1CpoCfFSzNzGtMVQTQ=", + "requires": { + "callsites": "^2.0.0" + } + }, + "caller-path": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/caller-path/-/caller-path-2.0.0.tgz", + "integrity": "sha1-Ro+DBE42mrIBD6xfBs7uFbsssfQ=", + "requires": { + "caller-callsite": "^2.0.0" + } + }, + "callsites": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-2.0.0.tgz", + "integrity": "sha1-BuuE8A7qQT2oav/vrL/7Ngk7PFA=" + }, + "camel-case": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/camel-case/-/camel-case-4.1.1.tgz", + "integrity": "sha512-7fa2WcG4fYFkclIvEmxBbTvmibwF2/agfEBc6q3lOpVu0A13ltLsA+Hr/8Hp6kp5f+G7hKi6t8lys6XxP+1K6Q==", + "requires": { + "pascal-case": "^3.1.1", + "tslib": "^1.10.0" + } + }, + "camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==" + }, + "caniuse-api": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/caniuse-api/-/caniuse-api-3.0.0.tgz", + "integrity": "sha512-bsTwuIg/BZZK/vreVTYYbSWoe2F+71P7K5QGEX+pT250DZbfU1MQ5prOKpPR+LL6uWKK3KMwMCAS74QB3Um1uw==", + "requires": { + "browserslist": "^4.0.0", + "caniuse-lite": "^1.0.0", + "lodash.memoize": "^4.1.2", + "lodash.uniq": "^4.5.0" + } + }, + "caniuse-lite": { + "version": "1.0.30001088", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001088.tgz", + "integrity": "sha512-6eYUrlShRYveyqKG58HcyOfPgh3zb2xqs7NvT2VVtP3hEUeeWvc3lqhpeMTxYWBBeeaT9A4bKsrtjATm66BTHg==" + }, + "capture-exit": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/capture-exit/-/capture-exit-2.0.0.tgz", + "integrity": "sha512-PiT/hQmTonHhl/HFGN+Lx3JJUznrVYJ3+AQsnthneZbvW7x+f08Tk7yLJTLEOUvBTbduLeeBkxEaYXUOUrRq6g==", + "requires": { + "rsvp": "^4.8.4" + } + }, + "case-sensitive-paths-webpack-plugin": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/case-sensitive-paths-webpack-plugin/-/case-sensitive-paths-webpack-plugin-2.3.0.tgz", + "integrity": "sha512-/4YgnZS8y1UXXmC02xD5rRrBEu6T5ub+mQHLNRj0fzTRbgdBYhsNo2V5EqwgqrExjxsjtF/OpAKAMkKsxbD5XQ==" + }, + "caseless": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", + "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=" + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "chardet": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz", + "integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==" + }, + "chokidar": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.4.0.tgz", + "integrity": "sha512-aXAaho2VJtisB/1fg1+3nlLJqGOuewTzQpd/Tz0yTg2R0e4IGtshYvtjowyEumcBv2z+y4+kc75Mz7j5xJskcQ==", + "requires": { + "anymatch": "~3.1.1", + "braces": "~3.0.2", + "fsevents": "~2.1.2", + "glob-parent": "~5.1.0", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.4.0" + }, + "dependencies": { + "anymatch": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.1.tgz", + "integrity": "sha512-mM8522psRCqzV+6LhomX5wgp25YVibjh8Wj23I5RPkPppSVSjyKD2A2mBJmWGa+KN7f2D6LNh9jkBCeyLktzjg==", + "requires": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + } + }, + "braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "requires": { + "fill-range": "^7.0.1" + } + }, + "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==", + "requires": { + "to-regex-range": "^5.0.1" + } + }, + "is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==" + }, + "normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==" + }, + "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==", + "requires": { + "is-number": "^7.0.0" + } + } + } + }, + "chownr": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz", + "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==" + }, + "chrome-trace-event": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.2.tgz", + "integrity": "sha512-9e/zx1jw7B4CO+c/RXoCsfg/x1AfUBioy4owYH0bJprEYAx5hRFLRhWBqHAG57D0ZM4H7vxbP7bPe0VwhQRYDQ==", + "requires": { + "tslib": "^1.9.0" + } + }, + "ci-info": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz", + "integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==" + }, + "cipher-base": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.4.tgz", + "integrity": "sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==", + "requires": { + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, + "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==", + "requires": { + "arr-union": "^3.1.0", + "define-property": "^0.2.5", + "isobject": "^3.0.0", + "static-extend": "^0.1.1" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "requires": { + "is-descriptor": "^0.1.0" + } + } + } + }, + "clean-css": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-4.2.3.tgz", + "integrity": "sha512-VcMWDN54ZN/DS+g58HYL5/n4Zrqe8vHJpGA8KdgUXFU4fuP/aHNw8eld9SyEIyabIMJX/0RaY/fplOo5hYLSFA==", + "requires": { + "source-map": "~0.6.0" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" + } + } + }, + "clean-stack": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", + "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==" + }, + "cli-cursor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz", + "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==", + "requires": { + "restore-cursor": "^3.1.0" + } + }, + "cli-width": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-2.2.1.tgz", + "integrity": "sha512-GRMWDxpOB6Dgk2E5Uo+3eEBvtOOlimMmpbFiKuLFnQzYDavtLFY3K5ona41jgN/WdRZtG7utuVSVTL4HbZHGkw==" + }, + "cliui": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-5.0.0.tgz", + "integrity": "sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA==", + "requires": { + "string-width": "^3.1.0", + "strip-ansi": "^5.2.0", + "wrap-ansi": "^5.1.0" + }, + "dependencies": { + "emoji-regex": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", + "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==" + }, + "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": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=" + }, + "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==", + "requires": { + "emoji-regex": "^7.0.1", + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^5.1.0" + } + } + } + }, + "clone-deep": { + "version": "0.2.4", + "resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-0.2.4.tgz", + "integrity": "sha1-TnPdCen7lxzDhnDF3O2cGJZIHMY=", + "requires": { + "for-own": "^0.1.3", + "is-plain-object": "^2.0.1", + "kind-of": "^3.0.2", + "lazy-cache": "^1.0.3", + "shallow-clone": "^0.1.2" + } + }, + "clsx": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/clsx/-/clsx-1.1.1.tgz", + "integrity": "sha512-6/bPho624p3S2pMyvP5kKBPXnI3ufHLObBFCfgx+LkeR5lg2XYy2hqZqUf45ypD8COn2bhgGJSUE+l5dhNBieA==" + }, + "co": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", + "integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=" + }, + "coa": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/coa/-/coa-2.0.2.tgz", + "integrity": "sha512-q5/jG+YQnSy4nRTV4F7lPepBJZ8qBNJJDBuJdoejDyLXgmL7IEo+Le2JDZudFTFt7mrCqIRaSjws4ygRCTCAXA==", + "requires": { + "@types/q": "^1.5.1", + "chalk": "^2.4.1", + "q": "^1.1.2" + } + }, + "code-point-at": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", + "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=" + }, + "collection-visit": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz", + "integrity": "sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA=", + "requires": { + "map-visit": "^1.0.0", + "object-visit": "^1.0.0" + } + }, + "color": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/color/-/color-3.1.2.tgz", + "integrity": "sha512-vXTJhHebByxZn3lDvDJYw4lR5+uB3vuoHsuYA5AKuxRVn5wzzIfQKGLBmgdVRHKTJYeK5rvJcHnrd0Li49CFpg==", + "requires": { + "color-convert": "^1.9.1", + "color-string": "^1.5.2" + } + }, + "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==", + "requires": { + "color-name": "1.1.3" + } + }, + "color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=" + }, + "color-string": { + "version": "1.5.3", + "resolved": "https://registry.npmjs.org/color-string/-/color-string-1.5.3.tgz", + "integrity": "sha512-dC2C5qeWoYkxki5UAXapdjqO672AM4vZuPGRQfO8b5HKuKGBbKWpITyDYN7TOFKvRW7kOgAn3746clDBMDJyQw==", + "requires": { + "color-name": "^1.0.0", + "simple-swizzle": "^0.2.2" + } + }, + "colorette": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/colorette/-/colorette-1.2.0.tgz", + "integrity": "sha512-soRSroY+OF/8OdA3PTQXwaDJeMc7TfknKKrxeSCencL2a4+Tx5zhxmmv7hdpCjhKBjehzp8+bwe/T68K0hpIjw==" + }, + "combined-stream": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "requires": { + "delayed-stream": "~1.0.0" + } + }, + "commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==" + }, + "common-tags": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/common-tags/-/common-tags-1.8.0.tgz", + "integrity": "sha512-6P6g0uetGpW/sdyUy/iQQCbFF0kWVMSIVSyYz7Zgjcgh8mgw8PQzDNZeyZ5DQ2gM7LBoZPHmnjz8rUthkBG5tw==" + }, + "commondir": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", + "integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=" + }, + "component-emitter": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.0.tgz", + "integrity": "sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==" + }, + "compose-function": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/compose-function/-/compose-function-3.0.3.tgz", + "integrity": "sha1-ntZ18TzFRQHTCVCkhv9qe6OrGF8=", + "requires": { + "arity-n": "^1.0.4" + } + }, + "compressible": { + "version": "2.0.18", + "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.18.tgz", + "integrity": "sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==", + "requires": { + "mime-db": ">= 1.43.0 < 2" + } + }, + "compression": { + "version": "1.7.4", + "resolved": "https://registry.npmjs.org/compression/-/compression-1.7.4.tgz", + "integrity": "sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ==", + "requires": { + "accepts": "~1.3.5", + "bytes": "3.0.0", + "compressible": "~2.0.16", + "debug": "2.6.9", + "on-headers": "~1.0.2", + "safe-buffer": "5.1.2", + "vary": "~1.1.2" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + } + } + }, + "concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=" + }, + "concat-stream": { + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz", + "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==", + "requires": { + "buffer-from": "^1.0.0", + "inherits": "^2.0.3", + "readable-stream": "^2.2.2", + "typedarray": "^0.0.6" + }, + "dependencies": { + "readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "requires": { + "safe-buffer": "~5.1.0" + } + } + } + }, + "confusing-browser-globals": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/confusing-browser-globals/-/confusing-browser-globals-1.0.9.tgz", + "integrity": "sha512-KbS1Y0jMtyPgIxjO7ZzMAuUpAKMt1SzCL9fsrKsX6b0zJPTaT0SiSPmewwVZg9UAO83HVIlEhZF84LIjZ0lmAw==" + }, + "connect-history-api-fallback": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/connect-history-api-fallback/-/connect-history-api-fallback-1.6.0.tgz", + "integrity": "sha512-e54B99q/OUoH64zYYRf3HBP5z24G38h5D3qXu23JGRoigpX5Ss4r9ZnDk3g0Z8uQC2x2lPaJ+UlWBc1ZWBWdLg==" + }, + "console-browserify": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/console-browserify/-/console-browserify-1.2.0.tgz", + "integrity": "sha512-ZMkYO/LkF17QvCPqM0gxw8yUzigAOZOSWSHg91FH6orS7vcEj5dVZTidN2fQ14yBSdg97RqhSNwLUXInd52OTA==" + }, + "constants-browserify": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/constants-browserify/-/constants-browserify-1.0.0.tgz", + "integrity": "sha1-wguW2MYXdIqvHBYCF2DNJ/y4y3U=" + }, + "contains-path": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/contains-path/-/contains-path-0.1.0.tgz", + "integrity": "sha1-/ozxhP9mcLa67wGp1IYaXL7EEgo=" + }, + "content-disposition": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.3.tgz", + "integrity": "sha512-ExO0774ikEObIAEV9kDo50o+79VCUdEB6n6lzKgGwupcVeRlhrj3qGAfwq8G6uBJjkqLrhT0qEYFcWng8z1z0g==", + "requires": { + "safe-buffer": "5.1.2" + } + }, + "content-type": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz", + "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==" + }, + "convert-source-map": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.7.0.tgz", + "integrity": "sha512-4FJkXzKXEDB1snCFZlLP4gpC3JILicCpGbzG9f9G7tGqGCzETQ2hWPrcinA9oU4wtf2biUaEH5065UnMeR33oA==", + "requires": { + "safe-buffer": "~5.1.1" + } + }, + "cookie": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.0.tgz", + "integrity": "sha512-+Hp8fLp57wnUSt0tY0tHEXh4voZRDnoIrZPqlo3DPiI4y9lwg/jqx+1Om94/W6ZaPDOUbnjOt/99w66zk+l1Xg==" + }, + "cookie-signature": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", + "integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw=" + }, + "copy-concurrently": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/copy-concurrently/-/copy-concurrently-1.0.5.tgz", + "integrity": "sha512-f2domd9fsVDFtaFcbaRZuYXwtdmnzqbADSwhSWYxYB/Q8zsdUUFMXVRwXGDMWmbEzAn1kdRrtI1T/KTFOL4X2A==", + "requires": { + "aproba": "^1.1.1", + "fs-write-stream-atomic": "^1.0.8", + "iferr": "^0.1.5", + "mkdirp": "^0.5.1", + "rimraf": "^2.5.4", + "run-queue": "^1.0.0" + } + }, + "copy-descriptor": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz", + "integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=" + }, + "core-js": { + "version": "3.6.5", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.6.5.tgz", + "integrity": "sha512-vZVEEwZoIsI+vPEuoF9Iqf5H7/M3eeQqWlQnYa8FSKKePuYTf5MWnxb5SDAzCa60b3JBRS5g9b+Dq7b1y/RCrA==" + }, + "core-js-compat": { + "version": "3.6.5", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.6.5.tgz", + "integrity": "sha512-7ItTKOhOZbznhXAQ2g/slGg1PJV5zDO/WdkTwi7UEOJmkvsE32PWvx6mKtDjiMpjnR2CNf6BAD6sSxIlv7ptng==", + "requires": { + "browserslist": "^4.8.5", + "semver": "7.0.0" + }, + "dependencies": { + "semver": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.0.0.tgz", + "integrity": "sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A==" + } + } + }, + "core-js-pure": { + "version": "3.6.5", + "resolved": "https://registry.npmjs.org/core-js-pure/-/core-js-pure-3.6.5.tgz", + "integrity": "sha512-lacdXOimsiD0QyNf9BC/mxivNJ/ybBGJXQFKzRekp1WTHoVUWsUHEn+2T8GJAzzIhyOuXA+gOxCVN3l+5PLPUA==" + }, + "core-util-is": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", + "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=" + }, + "cosmiconfig": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-5.2.1.tgz", + "integrity": "sha512-H65gsXo1SKjf8zmrJ67eJk8aIRKV5ff2D4uKZIBZShbhGSpEmsQOPW/SKMKYhSTrqR7ufy6RP69rPogdaPh/kA==", + "requires": { + "import-fresh": "^2.0.0", + "is-directory": "^0.3.1", + "js-yaml": "^3.13.1", + "parse-json": "^4.0.0" + } + }, + "create-ecdh": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/create-ecdh/-/create-ecdh-4.0.3.tgz", + "integrity": "sha512-GbEHQPMOswGpKXM9kCWVrremUcBmjteUaQ01T9rkKCPDXfUHX0IoP9LpHYo2NPFampa4e+/pFDc3jQdxrxQLaw==", + "requires": { + "bn.js": "^4.1.0", + "elliptic": "^6.0.0" + }, + "dependencies": { + "bn.js": { + "version": "4.11.9", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.9.tgz", + "integrity": "sha512-E6QoYqCKZfgatHTdHzs1RRKP7ip4vvm+EyRUeE2RF0NblwVvb0p6jSVeNTOFxPn26QXN2o6SMfNxKp6kU8zQaw==" + } + } + }, + "create-hash": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/create-hash/-/create-hash-1.2.0.tgz", + "integrity": "sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==", + "requires": { + "cipher-base": "^1.0.1", + "inherits": "^2.0.1", + "md5.js": "^1.3.4", + "ripemd160": "^2.0.1", + "sha.js": "^2.4.0" + } + }, + "create-hmac": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/create-hmac/-/create-hmac-1.1.7.tgz", + "integrity": "sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==", + "requires": { + "cipher-base": "^1.0.3", + "create-hash": "^1.1.0", + "inherits": "^2.0.1", + "ripemd160": "^2.0.0", + "safe-buffer": "^5.0.1", + "sha.js": "^2.4.8" + } + }, + "cross-spawn": { + "version": "6.0.5", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", + "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", + "requires": { + "nice-try": "^1.0.4", + "path-key": "^2.0.1", + "semver": "^5.5.0", + "shebang-command": "^1.2.0", + "which": "^1.2.9" + }, + "dependencies": { + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==" + } + } + }, + "crypto-browserify": { + "version": "3.12.0", + "resolved": "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.12.0.tgz", + "integrity": "sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg==", + "requires": { + "browserify-cipher": "^1.0.0", + "browserify-sign": "^4.0.0", + "create-ecdh": "^4.0.0", + "create-hash": "^1.1.0", + "create-hmac": "^1.1.0", + "diffie-hellman": "^5.0.0", + "inherits": "^2.0.1", + "pbkdf2": "^3.0.3", + "public-encrypt": "^4.0.0", + "randombytes": "^2.0.0", + "randomfill": "^1.0.3" + } + }, + "css": { + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/css/-/css-2.2.4.tgz", + "integrity": "sha512-oUnjmWpy0niI3x/mPL8dVEI1l7MnG3+HHyRPHf+YFSbK+svOhXpmSOcDURUh2aOCgl2grzrOPt1nHLuCVFULLw==", + "requires": { + "inherits": "^2.0.3", + "source-map": "^0.6.1", + "source-map-resolve": "^0.5.2", + "urix": "^0.1.0" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" + } + } + }, + "css-blank-pseudo": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/css-blank-pseudo/-/css-blank-pseudo-0.1.4.tgz", + "integrity": "sha512-LHz35Hr83dnFeipc7oqFDmsjHdljj3TQtxGGiNWSOsTLIAubSm4TEz8qCaKFpk7idaQ1GfWscF4E6mgpBysA1w==", + "requires": { + "postcss": "^7.0.5" + } + }, + "css-color-names": { + "version": "0.0.4", + "resolved": "https://registry.npmjs.org/css-color-names/-/css-color-names-0.0.4.tgz", + "integrity": "sha1-gIrcLnnPhHOAabZGyyDsJ762KeA=" + }, + "css-declaration-sorter": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/css-declaration-sorter/-/css-declaration-sorter-4.0.1.tgz", + "integrity": "sha512-BcxQSKTSEEQUftYpBVnsH4SF05NTuBokb19/sBt6asXGKZ/6VP7PLG1CBCkFDYOnhXhPh0jMhO6xZ71oYHXHBA==", + "requires": { + "postcss": "^7.0.1", + "timsort": "^0.3.0" + } + }, + "css-has-pseudo": { + "version": "0.10.0", + "resolved": "https://registry.npmjs.org/css-has-pseudo/-/css-has-pseudo-0.10.0.tgz", + "integrity": "sha512-Z8hnfsZu4o/kt+AuFzeGpLVhFOGO9mluyHBaA2bA8aCGTwah5sT3WV/fTHH8UNZUytOIImuGPrl/prlb4oX4qQ==", + "requires": { + "postcss": "^7.0.6", + "postcss-selector-parser": "^5.0.0-rc.4" + }, + "dependencies": { + "cssesc": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-2.0.0.tgz", + "integrity": "sha512-MsCAG1z9lPdoO/IUMLSBWBSVxVtJ1395VGIQ+Fc2gNdkQ1hNDnQdw3YhA71WJCBW1vdwA0cAnk/DnW6bqoEUYg==" + }, + "postcss-selector-parser": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-5.0.0.tgz", + "integrity": "sha512-w+zLE5Jhg6Liz8+rQOWEAwtwkyqpfnmsinXjXg6cY7YIONZZtgvE0v2O0uhQBs0peNomOJwWRKt6JBfTdTd3OQ==", + "requires": { + "cssesc": "^2.0.0", + "indexes-of": "^1.0.1", + "uniq": "^1.0.1" + } + } + } + }, + "css-loader": { + "version": "3.4.2", + "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-3.4.2.tgz", + "integrity": "sha512-jYq4zdZT0oS0Iykt+fqnzVLRIeiPWhka+7BqPn+oSIpWJAHak5tmB/WZrJ2a21JhCeFyNnnlroSl8c+MtVndzA==", + "requires": { + "camelcase": "^5.3.1", + "cssesc": "^3.0.0", + "icss-utils": "^4.1.1", + "loader-utils": "^1.2.3", + "normalize-path": "^3.0.0", + "postcss": "^7.0.23", + "postcss-modules-extract-imports": "^2.0.0", + "postcss-modules-local-by-default": "^3.0.2", + "postcss-modules-scope": "^2.1.1", + "postcss-modules-values": "^3.0.0", + "postcss-value-parser": "^4.0.2", + "schema-utils": "^2.6.0" + }, + "dependencies": { + "normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==" + } + } + }, + "css-prefers-color-scheme": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/css-prefers-color-scheme/-/css-prefers-color-scheme-3.1.1.tgz", + "integrity": "sha512-MTu6+tMs9S3EUqzmqLXEcgNRbNkkD/TGFvowpeoWJn5Vfq7FMgsmRQs9X5NXAURiOBmOxm/lLjsDNXDE6k9bhg==", + "requires": { + "postcss": "^7.0.5" + } + }, + "css-select": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/css-select/-/css-select-2.1.0.tgz", + "integrity": "sha512-Dqk7LQKpwLoH3VovzZnkzegqNSuAziQyNZUcrdDM401iY+R5NkGBXGmtO05/yaXQziALuPogeG0b7UAgjnTJTQ==", + "requires": { + "boolbase": "^1.0.0", + "css-what": "^3.2.1", + "domutils": "^1.7.0", + "nth-check": "^1.0.2" + } + }, + "css-select-base-adapter": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/css-select-base-adapter/-/css-select-base-adapter-0.1.1.tgz", + "integrity": "sha512-jQVeeRG70QI08vSTwf1jHxp74JoZsr2XSgETae8/xC8ovSnL2WF87GTLO86Sbwdt2lK4Umg4HnnwMO4YF3Ce7w==" + }, + "css-tree": { + "version": "1.0.0-alpha.37", + "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-1.0.0-alpha.37.tgz", + "integrity": "sha512-DMxWJg0rnz7UgxKT0Q1HU/L9BeJI0M6ksor0OgqOnF+aRCDWg/N2641HmVyU9KVIu0OVVWOb2IpC9A+BJRnejg==", + "requires": { + "mdn-data": "2.0.4", + "source-map": "^0.6.1" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" + } + } + }, + "css-vendor": { + "version": "2.0.8", + "resolved": "https://registry.npmjs.org/css-vendor/-/css-vendor-2.0.8.tgz", + "integrity": "sha512-x9Aq0XTInxrkuFeHKbYC7zWY8ai7qJ04Kxd9MnvbC1uO5DagxoHQjm4JvG+vCdXOoFtCjbL2XSZfxmoYa9uQVQ==", + "requires": { + "@babel/runtime": "^7.8.3", + "is-in-browser": "^1.0.2" + } + }, + "css-what": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/css-what/-/css-what-3.3.0.tgz", + "integrity": "sha512-pv9JPyatiPaQ6pf4OvD/dbfm0o5LviWmwxNWzblYf/1u9QZd0ihV+PMwy5jdQWQ3349kZmKEx9WXuSka2dM4cg==" + }, + "css.escape": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/css.escape/-/css.escape-1.5.1.tgz", + "integrity": "sha1-QuJ9T6BK4y+TGktNQZH6nN3ul8s=" + }, + "cssdb": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/cssdb/-/cssdb-4.4.0.tgz", + "integrity": "sha512-LsTAR1JPEM9TpGhl/0p3nQecC2LJ0kD8X5YARu1hk/9I1gril5vDtMZyNxcEpxxDj34YNck/ucjuoUd66K03oQ==" + }, + "cssesc": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", + "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==" + }, + "cssnano": { + "version": "4.1.10", + "resolved": "https://registry.npmjs.org/cssnano/-/cssnano-4.1.10.tgz", + "integrity": "sha512-5wny+F6H4/8RgNlaqab4ktc3e0/blKutmq8yNlBFXA//nSFFAqAngjNVRzUvCgYROULmZZUoosL/KSoZo5aUaQ==", + "requires": { + "cosmiconfig": "^5.0.0", + "cssnano-preset-default": "^4.0.7", + "is-resolvable": "^1.0.0", + "postcss": "^7.0.0" + } + }, + "cssnano-preset-default": { + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/cssnano-preset-default/-/cssnano-preset-default-4.0.7.tgz", + "integrity": "sha512-x0YHHx2h6p0fCl1zY9L9roD7rnlltugGu7zXSKQx6k2rYw0Hi3IqxcoAGF7u9Q5w1nt7vK0ulxV8Lo+EvllGsA==", + "requires": { + "css-declaration-sorter": "^4.0.1", + "cssnano-util-raw-cache": "^4.0.1", + "postcss": "^7.0.0", + "postcss-calc": "^7.0.1", + "postcss-colormin": "^4.0.3", + "postcss-convert-values": "^4.0.1", + "postcss-discard-comments": "^4.0.2", + "postcss-discard-duplicates": "^4.0.2", + "postcss-discard-empty": "^4.0.1", + "postcss-discard-overridden": "^4.0.1", + "postcss-merge-longhand": "^4.0.11", + "postcss-merge-rules": "^4.0.3", + "postcss-minify-font-values": "^4.0.2", + "postcss-minify-gradients": "^4.0.2", + "postcss-minify-params": "^4.0.2", + "postcss-minify-selectors": "^4.0.2", + "postcss-normalize-charset": "^4.0.1", + "postcss-normalize-display-values": "^4.0.2", + "postcss-normalize-positions": "^4.0.2", + "postcss-normalize-repeat-style": "^4.0.2", + "postcss-normalize-string": "^4.0.2", + "postcss-normalize-timing-functions": "^4.0.2", + "postcss-normalize-unicode": "^4.0.1", + "postcss-normalize-url": "^4.0.1", + "postcss-normalize-whitespace": "^4.0.2", + "postcss-ordered-values": "^4.1.2", + "postcss-reduce-initial": "^4.0.3", + "postcss-reduce-transforms": "^4.0.2", + "postcss-svgo": "^4.0.2", + "postcss-unique-selectors": "^4.0.1" + } + }, + "cssnano-util-get-arguments": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/cssnano-util-get-arguments/-/cssnano-util-get-arguments-4.0.0.tgz", + "integrity": "sha1-7ToIKZ8h11dBsg87gfGU7UnMFQ8=" + }, + "cssnano-util-get-match": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/cssnano-util-get-match/-/cssnano-util-get-match-4.0.0.tgz", + "integrity": "sha1-wOTKB/U4a7F+xeUiULT1lhNlFW0=" + }, + "cssnano-util-raw-cache": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/cssnano-util-raw-cache/-/cssnano-util-raw-cache-4.0.1.tgz", + "integrity": "sha512-qLuYtWK2b2Dy55I8ZX3ky1Z16WYsx544Q0UWViebptpwn/xDBmog2TLg4f+DBMg1rJ6JDWtn96WHbOKDWt1WQA==", + "requires": { + "postcss": "^7.0.0" + } + }, + "cssnano-util-same-parent": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/cssnano-util-same-parent/-/cssnano-util-same-parent-4.0.1.tgz", + "integrity": "sha512-WcKx5OY+KoSIAxBW6UBBRay1U6vkYheCdjyVNDm85zt5K9mHoGOfsOsqIszfAqrQQFIIKgjh2+FDgIj/zsl21Q==" + }, + "csso": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/csso/-/csso-4.0.3.tgz", + "integrity": "sha512-NL3spysxUkcrOgnpsT4Xdl2aiEiBG6bXswAABQVHcMrfjjBisFOKwLDOmf4wf32aPdcJws1zds2B0Rg+jqMyHQ==", + "requires": { + "css-tree": "1.0.0-alpha.39" + }, + "dependencies": { + "css-tree": { + "version": "1.0.0-alpha.39", + "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-1.0.0-alpha.39.tgz", + "integrity": "sha512-7UvkEYgBAHRG9Nt980lYxjsTrCyHFN53ky3wVsDkiMdVqylqRt+Zc+jm5qw7/qyOvN2dHSYtX0e4MbCCExSvnA==", + "requires": { + "mdn-data": "2.0.6", + "source-map": "^0.6.1" + } + }, + "mdn-data": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.6.tgz", + "integrity": "sha512-rQvjv71olwNHgiTbfPZFkJtjNMciWgswYeciZhtvWLO8bmX3TnhyA62I6sTWOyZssWHJJjY6/KiWwqQsWWsqOA==" + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" + } + } + }, + "cssom": { + "version": "0.3.8", + "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.3.8.tgz", + "integrity": "sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==" + }, + "cssstyle": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-1.4.0.tgz", + "integrity": "sha512-GBrLZYZ4X4x6/QEoBnIrqb8B/f5l4+8me2dkom/j1Gtbxy0kBv6OGzKuAsGM75bkGwGAFkt56Iwg28S3XTZgSA==", + "requires": { + "cssom": "0.3.x" + } + }, + "csstype": { + "version": "2.6.10", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-2.6.10.tgz", + "integrity": "sha512-D34BqZU4cIlMCY93rZHbrq9pjTAQJ3U8S8rfBqjwHxkGPThWFjzZDQpgMJY0QViLxth6ZKYiwFBo14RdN44U/w==" + }, + "cyclist": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/cyclist/-/cyclist-1.0.1.tgz", + "integrity": "sha1-WW6WmP0MgOEgOMK4LW6xs1tiJNk=" + }, + "d": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/d/-/d-1.0.1.tgz", + "integrity": "sha512-m62ShEObQ39CfralilEQRjH6oAMtNCV1xJyEx5LpRYUVN+EviphDgUc/F3hnYbADmkiNs67Y+3ylmlG7Lnu+FA==", + "requires": { + "es5-ext": "^0.10.50", + "type": "^1.0.1" + } + }, + "damerau-levenshtein": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/damerau-levenshtein/-/damerau-levenshtein-1.0.6.tgz", + "integrity": "sha512-JVrozIeElnj3QzfUIt8tB8YMluBJom4Vw9qTPpjGYQ9fYlB3D/rb6OordUxf3xeFB35LKWs0xqcO5U6ySvBtug==" + }, + "dashdash": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", + "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=", + "requires": { + "assert-plus": "^1.0.0" + } + }, + "data-urls": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-1.1.0.tgz", + "integrity": "sha512-YTWYI9se1P55u58gL5GkQHW4P6VJBJ5iBT+B5a7i2Tjadhv52paJG0qHX4A0OR6/t52odI64KP2YvFpkDOi3eQ==", + "requires": { + "abab": "^2.0.0", + "whatwg-mimetype": "^2.2.0", + "whatwg-url": "^7.0.0" + }, + "dependencies": { + "whatwg-url": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-7.1.0.tgz", + "integrity": "sha512-WUu7Rg1DroM7oQvGWfOiAK21n74Gg+T4elXEQYkOhtyLeWiJFoOGLXPKI/9gzIie9CtwVLm8wtw6YJdKyxSjeg==", + "requires": { + "lodash.sortby": "^4.7.0", + "tr46": "^1.0.1", + "webidl-conversions": "^4.0.2" + } + } + } + }, + "debug": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", + "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", + "requires": { + "ms": "^2.1.1" + } + }, + "decamelize": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", + "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=" + }, + "decode-uri-component": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz", + "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=" + }, + "deep-equal": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-1.1.1.tgz", + "integrity": "sha512-yd9c5AdiqVcR+JjcwUQb9DkhJc8ngNr0MahEBGvDiJw8puWab2yZlh+nkasOnZP+EGTAP6rRp2JzJhJZzvNF8g==", + "requires": { + "is-arguments": "^1.0.4", + "is-date-object": "^1.0.1", + "is-regex": "^1.0.4", + "object-is": "^1.0.1", + "object-keys": "^1.1.1", + "regexp.prototype.flags": "^1.2.0" + } + }, + "deep-is": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz", + "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=" + }, + "default-gateway": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/default-gateway/-/default-gateway-4.2.0.tgz", + "integrity": "sha512-h6sMrVB1VMWVrW13mSc6ia/DwYYw5MN6+exNu1OaJeFac5aSAvwM7lZ0NVfTABuSkQelr4h5oebg3KB1XPdjgA==", + "requires": { + "execa": "^1.0.0", + "ip-regex": "^2.1.0" + } + }, + "define-properties": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", + "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==", + "requires": { + "object-keys": "^1.0.12" + } + }, + "define-property": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz", + "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==", + "requires": { + "is-descriptor": "^1.0.2", + "isobject": "^3.0.1" + }, + "dependencies": { + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + } + }, + "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==" + } + } + }, + "del": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/del/-/del-4.1.1.tgz", + "integrity": "sha512-QwGuEUouP2kVwQenAsOof5Fv8K9t3D8Ca8NxcXKrIpEHjTXK5J2nXLdP+ALI1cgv8wj7KuwBhTwBkOZSJKM5XQ==", + "requires": { + "@types/glob": "^7.1.1", + "globby": "^6.1.0", + "is-path-cwd": "^2.0.0", + "is-path-in-cwd": "^2.0.0", + "p-map": "^2.0.0", + "pify": "^4.0.1", + "rimraf": "^2.6.3" + }, + "dependencies": { + "globby": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-6.1.0.tgz", + "integrity": "sha1-9abXDoOV4hyFj7BInWTfAkJNUGw=", + "requires": { + "array-union": "^1.0.1", + "glob": "^7.0.3", + "object-assign": "^4.0.1", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0" + }, + "dependencies": { + "pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=" + } + } + }, + "p-map": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-2.1.0.tgz", + "integrity": "sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw==" + }, + "pify": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", + "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==" + } + } + }, + "delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=" + }, + "depd": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", + "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=" + }, + "des.js": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/des.js/-/des.js-1.0.1.tgz", + "integrity": "sha512-Q0I4pfFrv2VPd34/vfLrFOoRmlYj3OV50i7fskps1jZWK1kApMWWT9G6RRUeYedLcBDIhnSDaUvJMb3AhUlaEA==", + "requires": { + "inherits": "^2.0.1", + "minimalistic-assert": "^1.0.0" + } + }, + "destroy": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz", + "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=" + }, + "detect-newline": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/detect-newline/-/detect-newline-2.1.0.tgz", + "integrity": "sha1-9B8cEL5LAOh7XxPaaAdZ8sW/0+I=" + }, + "detect-node": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/detect-node/-/detect-node-2.0.4.tgz", + "integrity": "sha512-ZIzRpLJrOj7jjP2miAtgqIfmzbxa4ZOr5jJc601zklsfEx9oTzmmj2nVpIPRpNlRTIh8lc1kyViIY7BWSGNmKw==" + }, + "detect-port-alt": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/detect-port-alt/-/detect-port-alt-1.1.6.tgz", + "integrity": "sha512-5tQykt+LqfJFBEYaDITx7S7cR7mJ/zQmLXZ2qt5w04ainYZw6tBf9dBunMjVeVOdYVRUzUOE4HkY5J7+uttb5Q==", + "requires": { + "address": "^1.0.1", + "debug": "^2.6.0" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + } + } + }, + "diff-sequences": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-24.9.0.tgz", + "integrity": "sha512-Dj6Wk3tWyTE+Fo1rW8v0Xhwk80um6yFYKbuAxc9c3EZxIHFDYwbi34Uk42u1CdnIiVorvt4RmlSDjIPyzGC2ew==" + }, + "diffie-hellman": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/diffie-hellman/-/diffie-hellman-5.0.3.tgz", + "integrity": "sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg==", + "requires": { + "bn.js": "^4.1.0", + "miller-rabin": "^4.0.0", + "randombytes": "^2.0.0" + }, + "dependencies": { + "bn.js": { + "version": "4.11.9", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.9.tgz", + "integrity": "sha512-E6QoYqCKZfgatHTdHzs1RRKP7ip4vvm+EyRUeE2RF0NblwVvb0p6jSVeNTOFxPn26QXN2o6SMfNxKp6kU8zQaw==" + } + } + }, + "dir-glob": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-2.0.0.tgz", + "integrity": "sha512-37qirFDz8cA5fimp9feo43fSuRo2gHwaIn6dXL8Ber1dGwUosDrGZeCCXq57WnIqE4aQ+u3eQZzsk1yOzhdwag==", + "requires": { + "arrify": "^1.0.1", + "path-type": "^3.0.0" + } + }, + "dns-equal": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/dns-equal/-/dns-equal-1.0.0.tgz", + "integrity": "sha1-s55/HabrCnW6nBcySzR1PEfgZU0=" + }, + "dns-packet": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/dns-packet/-/dns-packet-1.3.1.tgz", + "integrity": "sha512-0UxfQkMhYAUaZI+xrNZOz/as5KgDU0M/fQ9b6SpkyLbk3GEswDi6PADJVaYJradtRVsRIlF1zLyOodbcTCDzUg==", + "requires": { + "ip": "^1.1.0", + "safe-buffer": "^5.0.1" + } + }, + "dns-txt": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/dns-txt/-/dns-txt-2.0.2.tgz", + "integrity": "sha1-uR2Ab10nGI5Ks+fRB9iBocxGQrY=", + "requires": { + "buffer-indexof": "^1.0.0" + } + }, + "doctrine": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", + "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", + "requires": { + "esutils": "^2.0.2" + } + }, + "dom-accessibility-api": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/dom-accessibility-api/-/dom-accessibility-api-0.3.0.tgz", + "integrity": "sha512-PzwHEmsRP3IGY4gv/Ug+rMeaTIyTJvadCb+ujYXYeIylbHJezIyNToe8KfEgHTCEYyC+/bUghYOGg8yMGlZ6vA==" + }, + "dom-converter": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/dom-converter/-/dom-converter-0.2.0.tgz", + "integrity": "sha512-gd3ypIPfOMr9h5jIKq8E3sHOTCjeirnl0WK5ZdS1AW0Odt0b1PaWaHdJ4Qk4klv+YB9aJBS7mESXjFoDQPu6DA==", + "requires": { + "utila": "~0.4" + } + }, + "dom-helpers": { + "version": "5.1.4", + "resolved": "https://registry.npmjs.org/dom-helpers/-/dom-helpers-5.1.4.tgz", + "integrity": "sha512-TjMyeVUvNEnOnhzs6uAn9Ya47GmMo3qq7m+Lr/3ON0Rs5kHvb8I+SQYjLUSYn7qhEm0QjW0yrBkvz9yOrwwz1A==", + "requires": { + "@babel/runtime": "^7.8.7", + "csstype": "^2.6.7" + } + }, + "dom-serializer": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.2.2.tgz", + "integrity": "sha512-2/xPb3ORsQ42nHYiSunXkDjPLBaEj/xTwUO4B7XCZQTRk7EBtTOPaygh10YAAh2OI1Qrp6NWfpAhzswj0ydt9g==", + "requires": { + "domelementtype": "^2.0.1", + "entities": "^2.0.0" + }, + "dependencies": { + "domelementtype": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.0.1.tgz", + "integrity": "sha512-5HOHUDsYZWV8FGWN0Njbr/Rn7f/eWSQi1v7+HsUVwXgn8nWWlL64zKDkS0n8ZmQ3mlWOMuXOnR+7Nx/5tMO5AQ==" + } + } + }, + "domain-browser": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/domain-browser/-/domain-browser-1.2.0.tgz", + "integrity": "sha512-jnjyiM6eRyZl2H+W8Q/zLMA481hzi0eszAaBUzIVnmYVDBbnLxVNnfu1HgEBvCbL+71FrxMl3E6lpKH7Ge3OXA==" + }, + "domelementtype": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.3.1.tgz", + "integrity": "sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w==" + }, + "domexception": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/domexception/-/domexception-1.0.1.tgz", + "integrity": "sha512-raigMkn7CJNNo6Ihro1fzG7wr3fHuYVytzquZKX5n0yizGsTcYgzdIUwj1X9pK0VvjeihV+XiclP+DjwbsSKug==", + "requires": { + "webidl-conversions": "^4.0.2" + } + }, + "domhandler": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-2.4.2.tgz", + "integrity": "sha512-JiK04h0Ht5u/80fdLMCEmV4zkNh2BcoMFBmZ/91WtYZ8qVXSKjiw7fXMgFPnHcSZgOo3XdinHvmnDUeMf5R4wA==", + "requires": { + "domelementtype": "1" + } + }, + "domutils": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.7.0.tgz", + "integrity": "sha512-Lgd2XcJ/NjEw+7tFvfKxOzCYKZsdct5lczQ2ZaQY8Djz7pfAD3Gbp8ySJWtreII/vDlMVmxwa6pHmdxIYgttDg==", + "requires": { + "dom-serializer": "0", + "domelementtype": "1" + } + }, + "dot-case": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/dot-case/-/dot-case-3.0.3.tgz", + "integrity": "sha512-7hwEmg6RiSQfm/GwPL4AAWXKy3YNNZA3oFv2Pdiey0mwkRCPZ9x6SZbkLcn8Ma5PYeVokzoD4Twv2n7LKp5WeA==", + "requires": { + "no-case": "^3.0.3", + "tslib": "^1.10.0" + } + }, + "dot-prop": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-5.2.0.tgz", + "integrity": "sha512-uEUyaDKoSQ1M4Oq8l45hSE26SnTxL6snNnqvK/VWx5wJhmff5z0FUVJDKDanor/6w3kzE3i7XZOk+7wC0EXr1A==", + "requires": { + "is-obj": "^2.0.0" + } + }, + "dotenv": { + "version": "8.2.0", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-8.2.0.tgz", + "integrity": "sha512-8sJ78ElpbDJBHNeBzUbUVLsqKdccaa/BXF1uPTw3GrvQTBgrQrtObr2mUrE38vzYd8cEv+m/JBfDLioYcfXoaw==" + }, + "dotenv-expand": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/dotenv-expand/-/dotenv-expand-5.1.0.tgz", + "integrity": "sha512-YXQl1DSa4/PQyRfgrv6aoNjhasp/p4qs9FjJ4q4cQk+8m4r6k4ZSiEyytKG8f8W9gi8WsQtIObNmKd+tMzNTmA==" + }, + "duplexer": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/duplexer/-/duplexer-0.1.1.tgz", + "integrity": "sha1-rOb/gIwc5mtX0ev5eXessCM0z8E=" + }, + "duplexify": { + "version": "3.7.1", + "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-3.7.1.tgz", + "integrity": "sha512-07z8uv2wMyS51kKhD1KsdXJg5WQ6t93RneqRxUHnskXVtlYYkLqM0gqStQZ3pj073g687jPCHrqNfCzawLYh5g==", + "requires": { + "end-of-stream": "^1.0.0", + "inherits": "^2.0.1", + "readable-stream": "^2.0.0", + "stream-shift": "^1.0.0" + }, + "dependencies": { + "readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "requires": { + "safe-buffer": "~5.1.0" + } + } + } + }, + "ecc-jsbn": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", + "integrity": "sha1-OoOpBOVDUyh4dMVkt1SThoSamMk=", + "requires": { + "jsbn": "~0.1.0", + "safer-buffer": "^2.1.0" + } + }, + "ee-first": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", + "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=" + }, + "electron-to-chromium": { + "version": "1.3.483", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.483.tgz", + "integrity": "sha512-+05RF8S9rk8S0G8eBCqBRBaRq7+UN3lDs2DAvnG8SBSgQO3hjy0+qt4CmRk5eiuGbTcaicgXfPmBi31a+BD3lg==" + }, + "elliptic": { + "version": "6.5.3", + "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.3.tgz", + "integrity": "sha512-IMqzv5wNQf+E6aHeIqATs0tOLeOTwj1QKbRcS3jBbYkl5oLAserA8yJTT7/VyHUYG91PRmPyeQDObKLPpeS4dw==", + "requires": { + "bn.js": "^4.4.0", + "brorand": "^1.0.1", + "hash.js": "^1.0.0", + "hmac-drbg": "^1.0.0", + "inherits": "^2.0.1", + "minimalistic-assert": "^1.0.0", + "minimalistic-crypto-utils": "^1.0.0" + }, + "dependencies": { + "bn.js": { + "version": "4.11.9", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.9.tgz", + "integrity": "sha512-E6QoYqCKZfgatHTdHzs1RRKP7ip4vvm+EyRUeE2RF0NblwVvb0p6jSVeNTOFxPn26QXN2o6SMfNxKp6kU8zQaw==" + } + } + }, + "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==" + }, + "emojis-list": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz", + "integrity": "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==" + }, + "encodeurl": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", + "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=" + }, + "end-of-stream": { + "version": "1.4.4", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", + "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", + "requires": { + "once": "^1.4.0" + } + }, + "enhanced-resolve": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-4.2.0.tgz", + "integrity": "sha512-S7eiFb/erugyd1rLb6mQ3Vuq+EXHv5cpCkNqqIkYkBgN2QdFnyCZzFBleqwGEx4lgNGYij81BWnCrFNK7vxvjQ==", + "requires": { + "graceful-fs": "^4.1.2", + "memory-fs": "^0.5.0", + "tapable": "^1.0.0" + }, + "dependencies": { + "memory-fs": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.5.0.tgz", + "integrity": "sha512-jA0rdU5KoQMC0e6ppoNRtpp6vjFq6+NY7r8hywnC7V+1Xj/MtHwGIbB1QaK/dunyjWteJzmkpd7ooeWg10T7GA==", + "requires": { + "errno": "^0.1.3", + "readable-stream": "^2.0.1" + } + }, + "readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "requires": { + "safe-buffer": "~5.1.0" + } + } + } + }, + "entities": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/entities/-/entities-2.0.3.tgz", + "integrity": "sha512-MyoZ0jgnLvB2X3Lg5HqpFmn1kybDiIfEQmKzTb5apr51Rb+T3KdmMiqa70T+bhGnyv7bQ6WMj2QMHpGMmlrUYQ==" + }, + "errno": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/errno/-/errno-0.1.7.tgz", + "integrity": "sha512-MfrRBDWzIWifgq6tJj60gkAwtLNb6sQPlcFrSOflcP1aFmmruKQ2wRnze/8V6kgyz7H3FF8Npzv78mZ7XLLflg==", + "requires": { + "prr": "~1.0.1" + } + }, + "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==", + "requires": { + "is-arrayish": "^0.2.1" + } + }, + "es-abstract": { + "version": "1.17.6", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.17.6.tgz", + "integrity": "sha512-Fr89bON3WFyUi5EvAeI48QTWX0AyekGgLA8H+c+7fbfCkJwRWRMLd8CQedNEyJuoYYhmtEqY92pgte1FAhBlhw==", + "requires": { + "es-to-primitive": "^1.2.1", + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.1", + "is-callable": "^1.2.0", + "is-regex": "^1.1.0", + "object-inspect": "^1.7.0", + "object-keys": "^1.1.1", + "object.assign": "^4.1.0", + "string.prototype.trimend": "^1.0.1", + "string.prototype.trimstart": "^1.0.1" + } + }, + "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==", + "requires": { + "is-callable": "^1.1.4", + "is-date-object": "^1.0.1", + "is-symbol": "^1.0.2" + } + }, + "es5-ext": { + "version": "0.10.53", + "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.53.tgz", + "integrity": "sha512-Xs2Stw6NiNHWypzRTY1MtaG/uJlwCk8kH81920ma8mvN8Xq1gsfhZvpkImLQArw8AHnv8MT2I45J3c0R8slE+Q==", + "requires": { + "es6-iterator": "~2.0.3", + "es6-symbol": "~3.1.3", + "next-tick": "~1.0.0" + } + }, + "es6-iterator": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/es6-iterator/-/es6-iterator-2.0.3.tgz", + "integrity": "sha1-p96IkUGgWpSwhUQDstCg+/qY87c=", + "requires": { + "d": "1", + "es5-ext": "^0.10.35", + "es6-symbol": "^3.1.1" + } + }, + "es6-symbol": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.3.tgz", + "integrity": "sha512-NJ6Yn3FuDinBaBRWl/q5X/s4koRHBrgKAu+yGI6JCBeiu3qrcbJhwT2GeR/EXVfylRk8dpQVJoLEFhK+Mu31NA==", + "requires": { + "d": "^1.0.1", + "ext": "^1.1.2" + } + }, + "escalade": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.0.1.tgz", + "integrity": "sha512-DR6NO3h9niOT+MZs7bjxlj2a1k+POu5RN8CLTPX2+i78bRi9eLe7+0zXgUHMnGXWybYcL61E9hGhPKqedy8tQA==" + }, + "escape-html": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", + "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=" + }, + "escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=" + }, + "escodegen": { + "version": "1.14.3", + "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.14.3.tgz", + "integrity": "sha512-qFcX0XJkdg+PB3xjZZG/wKSuT1PnQWx57+TVSjIMmILd2yC/6ByYElPwJnslDsuWuSAp4AwJGumarAAmJch5Kw==", + "requires": { + "esprima": "^4.0.1", + "estraverse": "^4.2.0", + "esutils": "^2.0.2", + "optionator": "^0.8.1", + "source-map": "~0.6.1" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "optional": true + } + } + }, + "eslint": { + "version": "6.8.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-6.8.0.tgz", + "integrity": "sha512-K+Iayyo2LtyYhDSYwz5D5QdWw0hCacNzyq1Y821Xna2xSJj7cijoLLYmLxTQgcgZ9mC61nryMy9S7GRbYpI5Ig==", + "requires": { + "@babel/code-frame": "^7.0.0", + "ajv": "^6.10.0", + "chalk": "^2.1.0", + "cross-spawn": "^6.0.5", + "debug": "^4.0.1", + "doctrine": "^3.0.0", + "eslint-scope": "^5.0.0", + "eslint-utils": "^1.4.3", + "eslint-visitor-keys": "^1.1.0", + "espree": "^6.1.2", + "esquery": "^1.0.1", + "esutils": "^2.0.2", + "file-entry-cache": "^5.0.1", + "functional-red-black-tree": "^1.0.1", + "glob-parent": "^5.0.0", + "globals": "^12.1.0", + "ignore": "^4.0.6", + "import-fresh": "^3.0.0", + "imurmurhash": "^0.1.4", + "inquirer": "^7.0.0", + "is-glob": "^4.0.0", + "js-yaml": "^3.13.1", + "json-stable-stringify-without-jsonify": "^1.0.1", + "levn": "^0.3.0", + "lodash": "^4.17.14", + "minimatch": "^3.0.4", + "mkdirp": "^0.5.1", + "natural-compare": "^1.4.0", + "optionator": "^0.8.3", + "progress": "^2.0.0", + "regexpp": "^2.0.1", + "semver": "^6.1.2", + "strip-ansi": "^5.2.0", + "strip-json-comments": "^3.0.1", + "table": "^5.2.3", + "text-table": "^0.2.0", + "v8-compile-cache": "^2.0.3" + }, + "dependencies": { + "eslint-utils": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-1.4.3.tgz", + "integrity": "sha512-fbBN5W2xdY45KulGXmLHZ3c3FHfVYmKg0IrAKGOkT/464PQsx2UeIzfz1RmEci+KLm1bBaAzZAh8+/E+XAeZ8Q==", + "requires": { + "eslint-visitor-keys": "^1.1.0" + } + }, + "globals": { + "version": "12.4.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-12.4.0.tgz", + "integrity": "sha512-BWICuzzDvDoH54NHKCseDanAhE3CeDorgDL5MT6LMXXj2WCnd9UC2szdk4AWLfjdgNBCXLUanXYcpBBKOSWGwg==", + "requires": { + "type-fest": "^0.8.1" + } + }, + "import-fresh": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.2.1.tgz", + "integrity": "sha512-6e1q1cnWP2RXD9/keSkxHScg508CdXqXWgWBaETNhyuBFz+kUZlKboh+ISK+bU++DmbHimVBrOz/zzPe0sZ3sQ==", + "requires": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + } + }, + "regexpp": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-2.0.1.tgz", + "integrity": "sha512-lv0M6+TkDVniA3aD1Eg0DVpfU/booSu7Eev3TDO/mZKHBfVjgCGTV4t4buppESEYDtkArYFOxTJWv6S5C+iaNw==" + }, + "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==" + } + } + }, + "eslint-config-react-app": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/eslint-config-react-app/-/eslint-config-react-app-5.2.1.tgz", + "integrity": "sha512-pGIZ8t0mFLcV+6ZirRgYK6RVqUIKRIi9MmgzUEmrIknsn3AdO0I32asO86dJgloHq+9ZPl8UIg8mYrvgP5u2wQ==", + "requires": { + "confusing-browser-globals": "^1.0.9" + } + }, + "eslint-import-resolver-node": { + "version": "0.3.4", + "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.4.tgz", + "integrity": "sha512-ogtf+5AB/O+nM6DIeBUNr2fuT7ot9Qg/1harBfBtaP13ekEWFQEEMP94BCB7zaNW3gyY+8SHYF00rnqYwXKWOA==", + "requires": { + "debug": "^2.6.9", + "resolve": "^1.13.1" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + } + } + }, + "eslint-loader": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/eslint-loader/-/eslint-loader-3.0.3.tgz", + "integrity": "sha512-+YRqB95PnNvxNp1HEjQmvf9KNvCin5HXYYseOXVC2U0KEcw4IkQ2IQEBG46j7+gW39bMzeu0GsUhVbBY3Votpw==", + "requires": { + "fs-extra": "^8.1.0", + "loader-fs-cache": "^1.0.2", + "loader-utils": "^1.2.3", + "object-hash": "^2.0.1", + "schema-utils": "^2.6.1" + } + }, + "eslint-module-utils": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.6.0.tgz", + "integrity": "sha512-6j9xxegbqe8/kZY8cYpcp0xhbK0EgJlg3g9mib3/miLaExuuwc3n5UEfSnU6hWMbT0FAYVvDbL9RrRgpUeQIvA==", + "requires": { + "debug": "^2.6.9", + "pkg-dir": "^2.0.0" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "requires": { + "ms": "2.0.0" + } + }, + "find-up": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", + "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", + "requires": { + "locate-path": "^2.0.0" + } + }, + "locate-path": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", + "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", + "requires": { + "p-locate": "^2.0.0", + "path-exists": "^3.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + }, + "p-limit": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", + "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", + "requires": { + "p-try": "^1.0.0" + } + }, + "p-locate": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", + "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", + "requires": { + "p-limit": "^1.1.0" + } + }, + "p-try": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", + "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=" + }, + "pkg-dir": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-2.0.0.tgz", + "integrity": "sha1-9tXREJ4Z1j7fQo4L1X4Sd3YVM0s=", + "requires": { + "find-up": "^2.1.0" + } + } + } + }, + "eslint-plugin-flowtype": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-flowtype/-/eslint-plugin-flowtype-4.6.0.tgz", + "integrity": "sha512-W5hLjpFfZyZsXfo5anlu7HM970JBDqbEshAJUkeczP6BFCIfJXuiIBQXyberLRtOStT0OGPF8efeTbxlHk4LpQ==", + "requires": { + "lodash": "^4.17.15" + } + }, + "eslint-plugin-import": { + "version": "2.20.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.20.1.tgz", + "integrity": "sha512-qQHgFOTjguR+LnYRoToeZWT62XM55MBVXObHM6SKFd1VzDcX/vqT1kAz8ssqigh5eMj8qXcRoXXGZpPP6RfdCw==", + "requires": { + "array-includes": "^3.0.3", + "array.prototype.flat": "^1.2.1", + "contains-path": "^0.1.0", + "debug": "^2.6.9", + "doctrine": "1.5.0", + "eslint-import-resolver-node": "^0.3.2", + "eslint-module-utils": "^2.4.1", + "has": "^1.0.3", + "minimatch": "^3.0.4", + "object.values": "^1.1.0", + "read-pkg-up": "^2.0.0", + "resolve": "^1.12.0" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "requires": { + "ms": "2.0.0" + } + }, + "doctrine": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-1.5.0.tgz", + "integrity": "sha1-N53Ocw9hZvds76TmcHoVmwLFpvo=", + "requires": { + "esutils": "^2.0.2", + "isarray": "^1.0.0" + } + }, + "find-up": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", + "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", + "requires": { + "locate-path": "^2.0.0" + } + }, + "load-json-file": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-2.0.0.tgz", + "integrity": "sha1-eUfkIUmvgNaWy/eXvKq8/h/inKg=", + "requires": { + "graceful-fs": "^4.1.2", + "parse-json": "^2.2.0", + "pify": "^2.0.0", + "strip-bom": "^3.0.0" + } + }, + "locate-path": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", + "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", + "requires": { + "p-locate": "^2.0.0", + "path-exists": "^3.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + }, + "p-limit": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", + "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", + "requires": { + "p-try": "^1.0.0" + } + }, + "p-locate": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", + "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", + "requires": { + "p-limit": "^1.1.0" + } + }, + "p-try": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", + "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=" + }, + "parse-json": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", + "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=", + "requires": { + "error-ex": "^1.2.0" + } + }, + "path-type": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-2.0.0.tgz", + "integrity": "sha1-8BLMuEFbcJb8LaoQVMPXI4lZTHM=", + "requires": { + "pify": "^2.0.0" + } + }, + "pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=" + }, + "read-pkg": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-2.0.0.tgz", + "integrity": "sha1-jvHAYjxqbbDcZxPEv6xGMysjaPg=", + "requires": { + "load-json-file": "^2.0.0", + "normalize-package-data": "^2.3.2", + "path-type": "^2.0.0" + } + }, + "read-pkg-up": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-2.0.0.tgz", + "integrity": "sha1-a3KoBImE4MQeeVEP1en6mbO1Sb4=", + "requires": { + "find-up": "^2.0.0", + "read-pkg": "^2.0.0" + } + } + } + }, + "eslint-plugin-jsx-a11y": { + "version": "6.2.3", + "resolved": "https://registry.npmjs.org/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.2.3.tgz", + "integrity": "sha512-CawzfGt9w83tyuVekn0GDPU9ytYtxyxyFZ3aSWROmnRRFQFT2BiPJd7jvRdzNDi6oLWaS2asMeYSNMjWTV4eNg==", + "requires": { + "@babel/runtime": "^7.4.5", + "aria-query": "^3.0.0", + "array-includes": "^3.0.3", + "ast-types-flow": "^0.0.7", + "axobject-query": "^2.0.2", + "damerau-levenshtein": "^1.0.4", + "emoji-regex": "^7.0.2", + "has": "^1.0.3", + "jsx-ast-utils": "^2.2.1" + }, + "dependencies": { + "emoji-regex": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", + "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==" + } + } + }, + "eslint-plugin-react": { + "version": "7.19.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.19.0.tgz", + "integrity": "sha512-SPT8j72CGuAP+JFbT0sJHOB80TX/pu44gQ4vXH/cq+hQTiY2PuZ6IHkqXJV6x1b28GDdo1lbInjKUrrdUf0LOQ==", + "requires": { + "array-includes": "^3.1.1", + "doctrine": "^2.1.0", + "has": "^1.0.3", + "jsx-ast-utils": "^2.2.3", + "object.entries": "^1.1.1", + "object.fromentries": "^2.0.2", + "object.values": "^1.1.1", + "prop-types": "^15.7.2", + "resolve": "^1.15.1", + "semver": "^6.3.0", + "string.prototype.matchall": "^4.0.2", + "xregexp": "^4.3.0" + }, + "dependencies": { + "doctrine": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", + "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", + "requires": { + "esutils": "^2.0.2" + } + }, + "resolve": { + "version": "1.17.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.17.0.tgz", + "integrity": "sha512-ic+7JYiV8Vi2yzQGFWOkiZD5Z9z7O2Zhm9XMaTxdJExKasieFCr+yXZ/WmXsckHiKl12ar0y6XiXDx3m4RHn1w==", + "requires": { + "path-parse": "^1.0.6" + } + } + } + }, + "eslint-plugin-react-hooks": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-1.7.0.tgz", + "integrity": "sha512-iXTCFcOmlWvw4+TOE8CLWj6yX1GwzT0Y6cUfHHZqWnSk144VmVIRcVGtUAzrLES7C798lmvnt02C7rxaOX1HNA==" + }, + "eslint-scope": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.0.tgz", + "integrity": "sha512-iiGRvtxWqgtx5m8EyQUJihBloE4EnYeGE/bz1wSPwJE6tZuJUtHlhqDM4Xj2ukE8Dyy1+HCZ4hE0fzIVMzb58w==", + "requires": { + "esrecurse": "^4.1.0", + "estraverse": "^4.1.1" + } + }, + "eslint-utils": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-2.1.0.tgz", + "integrity": "sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg==", + "requires": { + "eslint-visitor-keys": "^1.1.0" + } + }, + "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==" + }, + "espree": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/espree/-/espree-6.2.1.tgz", + "integrity": "sha512-ysCxRQY3WaXJz9tdbWOwuWr5Y/XrPTGX9Kiz3yoUXwW0VZ4w30HTkQLaGx/+ttFjF8i+ACbArnB4ce68a9m5hw==", + "requires": { + "acorn": "^7.1.1", + "acorn-jsx": "^5.2.0", + "eslint-visitor-keys": "^1.1.0" + } + }, + "esprima": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==" + }, + "esquery": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.3.1.tgz", + "integrity": "sha512-olpvt9QG0vniUBZspVRN6lwB7hOZoTRtT+jzR+tS4ffYx2mzbw+z0XCOk44aaLYKApNX5nMm+E+P6o25ip/DHQ==", + "requires": { + "estraverse": "^5.1.0" + }, + "dependencies": { + "estraverse": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.1.0.tgz", + "integrity": "sha512-FyohXK+R0vE+y1nHLoBM7ZTyqRpqAlhdZHCWIWEviFLiGB8b04H6bQs8G+XTthacvT8VuwvteiP7RJSxMs8UEw==" + } + } + }, + "esrecurse": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.2.1.tgz", + "integrity": "sha512-64RBB++fIOAXPw3P9cy89qfMlvZEXZkqqJkjqqXIvzP5ezRZjW+lPWjw35UX/3EhUPFYbg5ER4JYgDw4007/DQ==", + "requires": { + "estraverse": "^4.1.0" + } + }, + "estraverse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==" + }, + "esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==" + }, + "etag": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", + "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=" + }, + "eventemitter3": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.4.tgz", + "integrity": "sha512-rlaVLnVxtxvoyLsQQFBx53YmXHDxRIzzTLbdfxqi4yocpSjAxXwkU0cScM5JgSKMqEhrZpnvQ2D9gjylR0AimQ==" + }, + "events": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/events/-/events-3.1.0.tgz", + "integrity": "sha512-Rv+u8MLHNOdMjTAFeT3nCjHn2aGlx435FP/sDHNaRhDEMwyI/aB22Kj2qIN8R0cw3z28psEQLYwxVKLsKrMgWg==" + }, + "eventsource": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/eventsource/-/eventsource-1.0.7.tgz", + "integrity": "sha512-4Ln17+vVT0k8aWq+t/bF5arcS3EpT9gYtW66EPacdj/mAFevznsnyoHLPy2BA8gbIQeIHoPsvwmfBftfcG//BQ==", + "requires": { + "original": "^1.0.0" + } + }, + "evp_bytestokey": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz", + "integrity": "sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==", + "requires": { + "md5.js": "^1.3.4", + "safe-buffer": "^5.1.1" + } + }, + "exec-sh": { + "version": "0.3.4", + "resolved": "https://registry.npmjs.org/exec-sh/-/exec-sh-0.3.4.tgz", + "integrity": "sha512-sEFIkc61v75sWeOe72qyrqg2Qg0OuLESziUDk/O/z2qgS15y2gWVFrI6f2Qn/qw/0/NCfCEsmNA4zOjkwEZT1A==" + }, + "execa": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz", + "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==", + "requires": { + "cross-spawn": "^6.0.0", + "get-stream": "^4.0.0", + "is-stream": "^1.1.0", + "npm-run-path": "^2.0.0", + "p-finally": "^1.0.0", + "signal-exit": "^3.0.0", + "strip-eof": "^1.0.0" + } + }, + "exit": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz", + "integrity": "sha1-BjJjj42HfMghB9MKD/8aF8uhzQw=" + }, + "expand-brackets": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", + "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=", + "requires": { + "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" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "requires": { + "ms": "2.0.0" + } + }, + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "requires": { + "is-descriptor": "^0.1.0" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "requires": { + "is-extendable": "^0.1.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + } + } + }, + "expect": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/expect/-/expect-24.9.0.tgz", + "integrity": "sha512-wvVAx8XIol3Z5m9zvZXiyZOQ+sRJqNTIm6sGjdWlaZIeupQGO3WbYI+15D/AmEwZywL6wtJkbAbJtzkOfBuR0Q==", + "requires": { + "@jest/types": "^24.9.0", + "ansi-styles": "^3.2.0", + "jest-get-type": "^24.9.0", + "jest-matcher-utils": "^24.9.0", + "jest-message-util": "^24.9.0", + "jest-regex-util": "^24.9.0" + } + }, + "express": { + "version": "4.17.1", + "resolved": "https://registry.npmjs.org/express/-/express-4.17.1.tgz", + "integrity": "sha512-mHJ9O79RqluphRrcw2X/GTh3k9tVv8YcoyY4Kkh4WDMUYKRZUq0h1o0w2rrrxBqM7VoeUVqgb27xlEMXTnYt4g==", + "requires": { + "accepts": "~1.3.7", + "array-flatten": "1.1.1", + "body-parser": "1.19.0", + "content-disposition": "0.5.3", + "content-type": "~1.0.4", + "cookie": "0.4.0", + "cookie-signature": "1.0.6", + "debug": "2.6.9", + "depd": "~1.1.2", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "finalhandler": "~1.1.2", + "fresh": "0.5.2", + "merge-descriptors": "1.0.1", + "methods": "~1.1.2", + "on-finished": "~2.3.0", + "parseurl": "~1.3.3", + "path-to-regexp": "0.1.7", + "proxy-addr": "~2.0.5", + "qs": "6.7.0", + "range-parser": "~1.2.1", + "safe-buffer": "5.1.2", + "send": "0.17.1", + "serve-static": "1.14.1", + "setprototypeof": "1.1.1", + "statuses": "~1.5.0", + "type-is": "~1.6.18", + "utils-merge": "1.0.1", + "vary": "~1.1.2" + }, + "dependencies": { + "array-flatten": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", + "integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=" + }, + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + }, + "qs": { + "version": "6.7.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.7.0.tgz", + "integrity": "sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ==" + } + } + }, + "ext": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/ext/-/ext-1.4.0.tgz", + "integrity": "sha512-Key5NIsUxdqKg3vIsdw9dSuXpPCQ297y6wBjL30edxwPgt2E44WcWBZey/ZvUc6sERLTxKdyCu4gZFmUbk1Q7A==", + "requires": { + "type": "^2.0.0" + }, + "dependencies": { + "type": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/type/-/type-2.0.0.tgz", + "integrity": "sha512-KBt58xCHry4Cejnc2ISQAF7QY+ORngsWfxezO68+12hKV6lQY8P/psIkcbjeHWn7MqcgciWJyCCevFMJdIXpow==" + } + } + }, + "extend": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==" + }, + "extend-shallow": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", + "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", + "requires": { + "assign-symbols": "^1.0.0", + "is-extendable": "^1.0.1" + }, + "dependencies": { + "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==", + "requires": { + "is-plain-object": "^2.0.4" + } + } + } + }, + "external-editor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-3.1.0.tgz", + "integrity": "sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==", + "requires": { + "chardet": "^0.7.0", + "iconv-lite": "^0.4.24", + "tmp": "^0.0.33" + } + }, + "extglob": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", + "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", + "requires": { + "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" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "requires": { + "is-descriptor": "^1.0.0" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "requires": { + "is-extendable": "^0.1.0" + } + }, + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + } + }, + "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==" + } + } + }, + "extsprintf": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", + "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=" + }, + "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==" + }, + "fast-glob": { + "version": "2.2.7", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-2.2.7.tgz", + "integrity": "sha512-g1KuQwHOZAmOZMuBtHdxDtju+T2RT8jgCC9aANsbpdiDDTSnjgfuVsIBNKbUeJI3oKMRExcfNDtJl4OhbffMsw==", + "requires": { + "@mrmlnc/readdir-enhanced": "^2.2.1", + "@nodelib/fs.stat": "^1.1.2", + "glob-parent": "^3.1.0", + "is-glob": "^4.0.0", + "merge2": "^1.2.3", + "micromatch": "^3.1.10" + }, + "dependencies": { + "glob-parent": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", + "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=", + "requires": { + "is-glob": "^3.1.0", + "path-dirname": "^1.0.0" + }, + "dependencies": { + "is-glob": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", + "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", + "requires": { + "is-extglob": "^2.1.0" + } + } + } + } + } + }, + "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==" + }, + "fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=" + }, + "faye-websocket": { + "version": "0.10.0", + "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.10.0.tgz", + "integrity": "sha1-TkkvjQTftviQA1B/btvy1QHnxvQ=", + "requires": { + "websocket-driver": ">=0.5.1" + } + }, + "fb-watchman": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.1.tgz", + "integrity": "sha512-DkPJKQeY6kKwmuMretBhr7G6Vodr7bFwDYTXIkfG1gjvNpaxBTQV3PbXg6bR1c1UP4jPOX0jHUbbHANL9vRjVg==", + "requires": { + "bser": "2.1.1" + } + }, + "figgy-pudding": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/figgy-pudding/-/figgy-pudding-3.5.2.tgz", + "integrity": "sha512-0btnI/H8f2pavGMN8w40mlSKOfTK2SVJmBfBeVIj3kNw0swwgzyRq0d5TJVOwodFmtvpPeWPN/MCcfuWF0Ezbw==" + }, + "figures": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-3.2.0.tgz", + "integrity": "sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==", + "requires": { + "escape-string-regexp": "^1.0.5" + } + }, + "file-entry-cache": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-5.0.1.tgz", + "integrity": "sha512-bCg29ictuBaKUwwArK4ouCaqDgLZcysCFLmM/Yn/FDoqndh/9vNuQfXRDvTuXKLxfD/JtZQGKFT8MGcJBK644g==", + "requires": { + "flat-cache": "^2.0.1" + } + }, + "file-loader": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/file-loader/-/file-loader-4.3.0.tgz", + "integrity": "sha512-aKrYPYjF1yG3oX0kWRrqrSMfgftm7oJW5M+m4owoldH5C51C0RkIwB++JbRvEW3IU6/ZG5n8UvEcdgwOt2UOWA==", + "requires": { + "loader-utils": "^1.2.3", + "schema-utils": "^2.5.0" + } + }, + "filesize": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/filesize/-/filesize-6.0.1.tgz", + "integrity": "sha512-u4AYWPgbI5GBhs6id1KdImZWn5yfyFrrQ8OWZdN7ZMfA8Bf4HcO0BGo9bmUIEV8yrp8I1xVfJ/dn90GtFNNJcg==" + }, + "fill-range": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", + "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", + "requires": { + "extend-shallow": "^2.0.1", + "is-number": "^3.0.0", + "repeat-string": "^1.6.1", + "to-regex-range": "^2.1.0" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "finalhandler": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz", + "integrity": "sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==", + "requires": { + "debug": "2.6.9", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "on-finished": "~2.3.0", + "parseurl": "~1.3.3", + "statuses": "~1.5.0", + "unpipe": "~1.0.0" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + } + } + }, + "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==", + "requires": { + "commondir": "^1.0.1", + "make-dir": "^2.0.0", + "pkg-dir": "^3.0.0" + } + }, + "find-up": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", + "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "requires": { + "locate-path": "^3.0.0" + } + }, + "flat-cache": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-2.0.1.tgz", + "integrity": "sha512-LoQe6yDuUMDzQAEH8sgmh4Md6oZnc/7PjtwjNFSzveXqSHt6ka9fPBuso7IGf9Rz4uqnSnWiFH2B/zj24a5ReA==", + "requires": { + "flatted": "^2.0.0", + "rimraf": "2.6.3", + "write": "1.0.3" + } + }, + "flatted": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-2.0.2.tgz", + "integrity": "sha512-r5wGx7YeOwNWNlCA0wQ86zKyDLMQr+/RB8xy74M4hTphfmjlijTSSXGuH8rnvKZnfT9i+75zmd8jcKdMR4O6jA==" + }, + "flatten": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/flatten/-/flatten-1.0.3.tgz", + "integrity": "sha512-dVsPA/UwQ8+2uoFe5GHtiBMu48dWLTdsuEd7CKGlZlD78r1TTWBvDuFaFGKCo/ZfEr95Uk56vZoX86OsHkUeIg==" + }, + "flush-write-stream": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/flush-write-stream/-/flush-write-stream-1.1.1.tgz", + "integrity": "sha512-3Z4XhFZ3992uIq0XOqb9AreonueSYphE6oYbpt5+3u06JWklbsPkNv3ZKkP9Bz/r+1MWCaMoSQ28P85+1Yc77w==", + "requires": { + "inherits": "^2.0.3", + "readable-stream": "^2.3.6" + }, + "dependencies": { + "readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "requires": { + "safe-buffer": "~5.1.0" + } + } + } + }, + "follow-redirects": { + "version": "1.12.1", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.12.1.tgz", + "integrity": "sha512-tmRv0AVuR7ZyouUHLeNSiO6pqulF7dYa3s19c6t+wz9LD69/uSzdMxJ2S91nTI9U3rt/IldxpzMOFejp6f0hjg==" + }, + "for-in": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", + "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=" + }, + "for-own": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/for-own/-/for-own-0.1.5.tgz", + "integrity": "sha1-UmXGgaTylNq78XyVCbZ2OqhFEM4=", + "requires": { + "for-in": "^1.0.1" + } + }, + "forever-agent": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", + "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=" + }, + "fork-ts-checker-webpack-plugin": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/fork-ts-checker-webpack-plugin/-/fork-ts-checker-webpack-plugin-3.1.1.tgz", + "integrity": "sha512-DuVkPNrM12jR41KM2e+N+styka0EgLkTnXmNcXdgOM37vtGeY+oCBK/Jx0hzSeEU6memFCtWb4htrHPMDfwwUQ==", + "requires": { + "babel-code-frame": "^6.22.0", + "chalk": "^2.4.1", + "chokidar": "^3.3.0", + "micromatch": "^3.1.10", + "minimatch": "^3.0.4", + "semver": "^5.6.0", + "tapable": "^1.0.0", + "worker-rpc": "^0.1.0" + }, + "dependencies": { + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==" + } + } + }, + "form-data": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz", + "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==", + "requires": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.6", + "mime-types": "^2.1.12" + } + }, + "forwarded": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.1.2.tgz", + "integrity": "sha1-mMI9qxF1ZXuMBXPozszZGw/xjIQ=" + }, + "fragment-cache": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz", + "integrity": "sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk=", + "requires": { + "map-cache": "^0.2.2" + } + }, + "fresh": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", + "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=" + }, + "from2": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/from2/-/from2-2.3.0.tgz", + "integrity": "sha1-i/tVAr3kpNNs/e6gB/zKIdfjgq8=", + "requires": { + "inherits": "^2.0.1", + "readable-stream": "^2.0.0" + }, + "dependencies": { + "readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "requires": { + "safe-buffer": "~5.1.0" + } + } + } + }, + "fs-extra": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz", + "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==", + "requires": { + "graceful-fs": "^4.2.0", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" + } + }, + "fs-minipass": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz", + "integrity": "sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==", + "requires": { + "minipass": "^3.0.0" + } + }, + "fs-write-stream-atomic": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/fs-write-stream-atomic/-/fs-write-stream-atomic-1.0.10.tgz", + "integrity": "sha1-tH31NJPvkR33VzHnCp3tAYnbQMk=", + "requires": { + "graceful-fs": "^4.1.2", + "iferr": "^0.1.5", + "imurmurhash": "^0.1.4", + "readable-stream": "1 || 2" + }, + "dependencies": { + "readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "requires": { + "safe-buffer": "~5.1.0" + } + } + } + }, + "fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=" + }, + "fsevents": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.1.2.tgz", + "integrity": "sha512-R4wDiBwZ0KzpgOWetKDug1FZcYhqYnUYKtfZYt4mD5SBz76q0KR4Q9o7GIPamsVPGmW3EYPPJ0dOOjvx32ldZA==", + "optional": true + }, + "function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" + }, + "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": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=" + }, + "gensync": { + "version": "1.0.0-beta.1", + "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.1.tgz", + "integrity": "sha512-r8EC6NO1sngH/zdD9fiRDLdcgnbayXah+mLgManTaIZJqEC1MZstmnox8KpnI2/fxQwrp5OpCOYWLp4rBl4Jcg==" + }, + "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==" + }, + "get-own-enumerable-property-symbols": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/get-own-enumerable-property-symbols/-/get-own-enumerable-property-symbols-3.0.2.tgz", + "integrity": "sha512-I0UBV/XOz1XkIJHEUDMZAbzCThU/H8DxmSfmdGcKPnVhu2VfFqr34jr9777IyaTYvxjedWhqVIilEDsCdP5G6g==" + }, + "get-stream": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", + "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", + "requires": { + "pump": "^3.0.0" + } + }, + "get-value": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz", + "integrity": "sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=" + }, + "getpass": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", + "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=", + "requires": { + "assert-plus": "^1.0.0" + } + }, + "glob": { + "version": "7.1.6", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", + "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "glob-parent": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.1.tgz", + "integrity": "sha512-FnI+VGOpnlGHWZxthPGR+QhR78fuiK0sNLkHQv+bL9fQi57lNNdquIbna/WrfROrolq8GK5Ek6BiMwqL/voRYQ==", + "requires": { + "is-glob": "^4.0.1" + } + }, + "glob-to-regexp": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.3.0.tgz", + "integrity": "sha1-jFoUlNIGbFcMw7/kSWF1rMTVAqs=" + }, + "global-modules": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-2.0.0.tgz", + "integrity": "sha512-NGbfmJBp9x8IxyJSd1P+otYK8vonoJactOogrVfFRIAEY1ukil8RSKDz2Yo7wh1oihl51l/r6W4epkeKJHqL8A==", + "requires": { + "global-prefix": "^3.0.0" + } + }, + "global-prefix": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-3.0.0.tgz", + "integrity": "sha512-awConJSVCHVGND6x3tmMaKcQvwXLhjdkmomy2W+Goaui8YPgYgXJZewhg3fWC+DlfqqQuWg8AwqjGTD2nAPVWg==", + "requires": { + "ini": "^1.3.5", + "kind-of": "^6.0.2", + "which": "^1.3.1" + }, + "dependencies": { + "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==" + } + } + }, + "globals": { + "version": "11.12.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", + "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==" + }, + "globby": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/globby/-/globby-8.0.2.tgz", + "integrity": "sha512-yTzMmKygLp8RUpG1Ymu2VXPSJQZjNAZPD4ywgYEaG7e4tBJeUQBO8OpXrf1RCNcEs5alsoJYPAMiIHP0cmeC7w==", + "requires": { + "array-union": "^1.0.1", + "dir-glob": "2.0.0", + "fast-glob": "^2.0.2", + "glob": "^7.1.2", + "ignore": "^3.3.5", + "pify": "^3.0.0", + "slash": "^1.0.0" + }, + "dependencies": { + "ignore": { + "version": "3.3.10", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-3.3.10.tgz", + "integrity": "sha512-Pgs951kaMm5GXP7MOvxERINe3gsaVjUWFm+UZPSq9xYriQAksyhg0csnS0KXSNRD5NmNdapXEpjxG49+AKh/ug==" + }, + "slash": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-1.0.0.tgz", + "integrity": "sha1-xB8vbDn8FtHNF61LXYlhFK5HDVU=" + } + } + }, + "graceful-fs": { + "version": "4.2.4", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.4.tgz", + "integrity": "sha512-WjKPNJF79dtJAVniUlGGWHYGz2jWxT6VhN/4m1NdkbZ2nOsEF+cI1Edgql5zCRhs/VsQYRvrXctxktVXZUkixw==" + }, + "growly": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/growly/-/growly-1.3.0.tgz", + "integrity": "sha1-8QdIy+dq+WS3yWyTxrzCivEgwIE=" + }, + "gzip-size": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/gzip-size/-/gzip-size-5.1.1.tgz", + "integrity": "sha512-FNHi6mmoHvs1mxZAds4PpdCS6QG8B4C1krxJsMutgxl5t3+GlRTzzI3NEkifXx2pVsOvJdOGSmIgDhQ55FwdPA==", + "requires": { + "duplexer": "^0.1.1", + "pify": "^4.0.1" + }, + "dependencies": { + "pify": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", + "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==" + } + } + }, + "handle-thing": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/handle-thing/-/handle-thing-2.0.1.tgz", + "integrity": "sha512-9Qn4yBxelxoh2Ow62nP+Ka/kMnOXRi8BXnRaUwezLNhqelnN49xKz4F/dPP8OYLxLxq6JDtZb2i9XznUQbNPTg==" + }, + "har-schema": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", + "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=" + }, + "har-validator": { + "version": "5.1.3", + "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.3.tgz", + "integrity": "sha512-sNvOCzEQNr/qrvJgc3UG/kD4QtlHycrzwS+6mfTrrSq97BvaYcPZZI1ZSqGSPR73Cxn4LKTD4PttRwfU7jWq5g==", + "requires": { + "ajv": "^6.5.5", + "har-schema": "^2.0.0" + } + }, + "harmony-reflect": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/harmony-reflect/-/harmony-reflect-1.6.1.tgz", + "integrity": "sha512-WJTeyp0JzGtHcuMsi7rw2VwtkvLa+JyfEKJCFyfcS0+CDkjQ5lHPu7zEhFZP+PDSRrEgXa5Ah0l1MbgbE41XjA==" + }, + "has": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", + "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "requires": { + "function-bind": "^1.1.1" + } + }, + "has-ansi": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", + "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=", + "requires": { + "ansi-regex": "^2.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=" + } + } + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=" + }, + "has-symbols": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.1.tgz", + "integrity": "sha512-PLcsoqu++dmEIZB+6totNFKq/7Do+Z0u4oT0zKOJNl3lYK6vGwwu2hjHs+68OEZbTjiUE9bgOABXbP/GvrS0Kg==" + }, + "has-value": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz", + "integrity": "sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc=", + "requires": { + "get-value": "^2.0.6", + "has-values": "^1.0.0", + "isobject": "^3.0.0" + } + }, + "has-values": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-values/-/has-values-1.0.0.tgz", + "integrity": "sha1-lbC2P+whRmGab+V/51Yo1aOe/k8=", + "requires": { + "is-number": "^3.0.0", + "kind-of": "^4.0.0" + }, + "dependencies": { + "kind-of": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", + "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "hash-base": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.1.0.tgz", + "integrity": "sha512-1nmYp/rhMDiE7AYkDw+lLwlAzz0AntGIe51F3RfFfEqyQ3feY2eI/NcwC6umIQVOASPMsWJLJScWKSSvzL9IVA==", + "requires": { + "inherits": "^2.0.4", + "readable-stream": "^3.6.0", + "safe-buffer": "^5.2.0" + }, + "dependencies": { + "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==" + } + } + }, + "hash.js": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.7.tgz", + "integrity": "sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==", + "requires": { + "inherits": "^2.0.3", + "minimalistic-assert": "^1.0.1" + } + }, + "he": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", + "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==" + }, + "hex-color-regex": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/hex-color-regex/-/hex-color-regex-1.1.0.tgz", + "integrity": "sha512-l9sfDFsuqtOqKDsQdqrMRk0U85RZc0RtOR9yPI7mRVOa4FsR/BVnZ0shmQRM96Ji99kYZP/7hn1cedc1+ApsTQ==" + }, + "hmac-drbg": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz", + "integrity": "sha1-0nRXAQJabHdabFRXk+1QL8DGSaE=", + "requires": { + "hash.js": "^1.0.3", + "minimalistic-assert": "^1.0.0", + "minimalistic-crypto-utils": "^1.0.1" + } + }, + "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==", + "requires": { + "react-is": "^16.7.0" + } + }, + "hosted-git-info": { + "version": "2.8.8", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.8.tgz", + "integrity": "sha512-f/wzC2QaWBs7t9IYqB4T3sR1xviIViXJRJTWBlx2Gf3g0Xi5vI7Yy4koXQ1c9OYDGHN9sBy1DQ2AB8fqZBWhUg==" + }, + "hpack.js": { + "version": "2.1.6", + "resolved": "https://registry.npmjs.org/hpack.js/-/hpack.js-2.1.6.tgz", + "integrity": "sha1-h3dMCUnlE/QuhFdbPEVoH63ioLI=", + "requires": { + "inherits": "^2.0.1", + "obuf": "^1.0.0", + "readable-stream": "^2.0.1", + "wbuf": "^1.1.0" + }, + "dependencies": { + "readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "requires": { + "safe-buffer": "~5.1.0" + } + } + } + }, + "hsl-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/hsl-regex/-/hsl-regex-1.0.0.tgz", + "integrity": "sha1-1JMwx4ntgZ4nakwNJy3/owsY/m4=" + }, + "hsla-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/hsla-regex/-/hsla-regex-1.0.0.tgz", + "integrity": "sha1-wc56MWjIxmFAM6S194d/OyJfnDg=" + }, + "html-comment-regex": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/html-comment-regex/-/html-comment-regex-1.1.2.tgz", + "integrity": "sha512-P+M65QY2JQ5Y0G9KKdlDpo0zK+/OHptU5AaBwUfAIDJZk1MYf32Frm84EcOytfJE0t5JvkAnKlmjsXDnWzCJmQ==" + }, + "html-encoding-sniffer": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-1.0.2.tgz", + "integrity": "sha512-71lZziiDnsuabfdYiUeWdCVyKuqwWi23L8YeIgV9jSSZHCtb6wB1BKWooH7L3tn4/FuZJMVWyNaIDr4RGmaSYw==", + "requires": { + "whatwg-encoding": "^1.0.1" + } + }, + "html-entities": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/html-entities/-/html-entities-1.3.1.tgz", + "integrity": "sha512-rhE/4Z3hIhzHAUKbW8jVcCyuT5oJCXXqhN/6mXXVCpzTmvJnoH2HL/bt3EZ6p55jbFJBeAe1ZNpL5BugLujxNA==" + }, + "html-escaper": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz", + "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==" + }, + "html-minifier-terser": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/html-minifier-terser/-/html-minifier-terser-5.1.1.tgz", + "integrity": "sha512-ZPr5MNObqnV/T9akshPKbVgyOqLmy+Bxo7juKCfTfnjNniTAMdy4hz21YQqoofMBJD2kdREaqPPdThoR78Tgxg==", + "requires": { + "camel-case": "^4.1.1", + "clean-css": "^4.2.3", + "commander": "^4.1.1", + "he": "^1.2.0", + "param-case": "^3.0.3", + "relateurl": "^0.2.7", + "terser": "^4.6.3" + }, + "dependencies": { + "commander": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-4.1.1.tgz", + "integrity": "sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==" + } + } + }, + "html-webpack-plugin": { + "version": "4.0.0-beta.11", + "resolved": "https://registry.npmjs.org/html-webpack-plugin/-/html-webpack-plugin-4.0.0-beta.11.tgz", + "integrity": "sha512-4Xzepf0qWxf8CGg7/WQM5qBB2Lc/NFI7MhU59eUDTkuQp3skZczH4UA1d6oQyDEIoMDgERVhRyTdtUPZ5s5HBg==", + "requires": { + "html-minifier-terser": "^5.0.1", + "loader-utils": "^1.2.3", + "lodash": "^4.17.15", + "pretty-error": "^2.1.1", + "tapable": "^1.1.3", + "util.promisify": "1.0.0" + }, + "dependencies": { + "util.promisify": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/util.promisify/-/util.promisify-1.0.0.tgz", + "integrity": "sha512-i+6qA2MPhvoKLuxnJNpXAGhg7HphQOSUq2LKMZD0m15EiskXUkMvKdF4Uui0WYeCUGea+o2cw/ZuwehtfsrNkA==", + "requires": { + "define-properties": "^1.1.2", + "object.getownpropertydescriptors": "^2.0.3" + } + } + } + }, + "htmlparser2": { + "version": "3.10.1", + "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-3.10.1.tgz", + "integrity": "sha512-IgieNijUMbkDovyoKObU1DUhm1iwNYE/fuifEoEHfd1oZKZDaONBSkal7Y01shxsM49R4XaMdGez3WnF9UfiCQ==", + "requires": { + "domelementtype": "^1.3.1", + "domhandler": "^2.3.0", + "domutils": "^1.5.1", + "entities": "^1.1.1", + "inherits": "^2.0.1", + "readable-stream": "^3.1.1" + }, + "dependencies": { + "entities": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/entities/-/entities-1.1.2.tgz", + "integrity": "sha512-f2LZMYl1Fzu7YSBKg+RoROelpOaNrcGmE9AZubeDfrCEia483oW4MI4VyFd5VNHIgQ/7qm1I0wUHK1eJnn2y2w==" + } + } + }, + "http-deceiver": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/http-deceiver/-/http-deceiver-1.2.7.tgz", + "integrity": "sha1-+nFolEq5pRnTN8sL7HKE3D5yPYc=" + }, + "http-errors": { + "version": "1.7.2", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.7.2.tgz", + "integrity": "sha512-uUQBt3H/cSIVfch6i1EuPNy/YsRSOUBXTVfZ+yR7Zjez3qjBz6i9+i4zjNaoqcoFVI4lQJ5plg63TvGfRSDCRg==", + "requires": { + "depd": "~1.1.2", + "inherits": "2.0.3", + "setprototypeof": "1.1.1", + "statuses": ">= 1.5.0 < 2", + "toidentifier": "1.0.0" + }, + "dependencies": { + "inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=" + } + } + }, + "http-parser-js": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.5.2.tgz", + "integrity": "sha512-opCO9ASqg5Wy2FNo7A0sxy71yGbbkJJXLdgMK04Tcypw9jr2MgWbyubb0+WdmDmGnFflO7fRbqbaihh/ENDlRQ==" + }, + "http-proxy": { + "version": "1.18.1", + "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.18.1.tgz", + "integrity": "sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==", + "requires": { + "eventemitter3": "^4.0.0", + "follow-redirects": "^1.0.0", + "requires-port": "^1.0.0" + } + }, + "http-proxy-middleware": { + "version": "0.19.1", + "resolved": "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-0.19.1.tgz", + "integrity": "sha512-yHYTgWMQO8VvwNS22eLLloAkvungsKdKTLO8AJlftYIKNfJr3GK3zK0ZCfzDDGUBttdGc8xFy1mCitvNKQtC3Q==", + "requires": { + "http-proxy": "^1.17.0", + "is-glob": "^4.0.0", + "lodash": "^4.17.11", + "micromatch": "^3.1.10" + } + }, + "http-signature": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", + "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=", + "requires": { + "assert-plus": "^1.0.0", + "jsprim": "^1.2.2", + "sshpk": "^1.7.0" + } + }, + "https-browserify": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/https-browserify/-/https-browserify-1.0.0.tgz", + "integrity": "sha1-7AbBDgo0wPL68Zn3/X/Hj//QPHM=" + }, + "hyphenate-style-name": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/hyphenate-style-name/-/hyphenate-style-name-1.0.3.tgz", + "integrity": "sha512-EcuixamT82oplpoJ2XU4pDtKGWQ7b00CD9f1ug9IaQ3p1bkHMiKCZ9ut9QDI6qsa6cpUuB+A/I+zLtdNK4n2DQ==" + }, + "iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "requires": { + "safer-buffer": ">= 2.1.2 < 3" + } + }, + "icss-utils": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/icss-utils/-/icss-utils-4.1.1.tgz", + "integrity": "sha512-4aFq7wvWyMHKgxsH8QQtGpvbASCf+eM3wPRLI6R+MgAnTCZ6STYsRvttLvRWK0Nfif5piF394St3HeJDaljGPA==", + "requires": { + "postcss": "^7.0.14" + } + }, + "identity-obj-proxy": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/identity-obj-proxy/-/identity-obj-proxy-3.0.0.tgz", + "integrity": "sha1-lNK9qWCERT7zb7xarsN+D3nx/BQ=", + "requires": { + "harmony-reflect": "^1.4.6" + } + }, + "ieee754": { + "version": "1.1.13", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.1.13.tgz", + "integrity": "sha512-4vf7I2LYV/HaWerSo3XmlMkp5eZ83i+/CDluXi/IGTs/O1sejBNhTtnxzmRZfvOUqj7lZjqHkeTvpgSFDlWZTg==" + }, + "iferr": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/iferr/-/iferr-0.1.5.tgz", + "integrity": "sha1-xg7taebY/bazEEofy8ocGS3FtQE=" + }, + "ignore": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", + "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==" + }, + "immer": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/immer/-/immer-1.10.0.tgz", + "integrity": "sha512-O3sR1/opvCDGLEVcvrGTMtLac8GJ5IwZC4puPrLuRj3l7ICKvkmA0vGuU9OW8mV9WIBRnaxp5GJh9IEAaNOoYg==" + }, + "import-cwd": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/import-cwd/-/import-cwd-2.1.0.tgz", + "integrity": "sha1-qmzzbnInYShcs3HsZRn1PiQ1sKk=", + "requires": { + "import-from": "^2.1.0" + } + }, + "import-fresh": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-2.0.0.tgz", + "integrity": "sha1-2BNVwVYS04bGH53dOSLUMEgipUY=", + "requires": { + "caller-path": "^2.0.0", + "resolve-from": "^3.0.0" + } + }, + "import-from": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/import-from/-/import-from-2.1.0.tgz", + "integrity": "sha1-M1238qev/VOqpHHUuAId7ja387E=", + "requires": { + "resolve-from": "^3.0.0" + } + }, + "import-local": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/import-local/-/import-local-2.0.0.tgz", + "integrity": "sha512-b6s04m3O+s3CGSbqDIyP4R6aAwAeYlVq9+WUWep6iHa8ETRf9yei1U48C5MmfJmV9AiLYYBKPMq/W+/WRpQmCQ==", + "requires": { + "pkg-dir": "^3.0.0", + "resolve-cwd": "^2.0.0" + } + }, + "imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=" + }, + "indent-string": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", + "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==" + }, + "indexes-of": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/indexes-of/-/indexes-of-1.0.1.tgz", + "integrity": "sha1-8w9xbI4r00bHtn0985FVZqfAVgc=" + }, + "infer-owner": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/infer-owner/-/infer-owner-1.0.4.tgz", + "integrity": "sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A==" + }, + "inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "requires": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" + }, + "ini": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.5.tgz", + "integrity": "sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw==" + }, + "inquirer": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-7.2.0.tgz", + "integrity": "sha512-E0c4rPwr9ByePfNlTIB8z51kK1s2n6jrHuJeEHENl/sbq2G/S1auvibgEwNR4uSyiU+PiYHqSwsgGiXjG8p5ZQ==", + "requires": { + "ansi-escapes": "^4.2.1", + "chalk": "^3.0.0", + "cli-cursor": "^3.1.0", + "cli-width": "^2.0.0", + "external-editor": "^3.0.3", + "figures": "^3.0.0", + "lodash": "^4.17.15", + "mute-stream": "0.0.8", + "run-async": "^2.4.0", + "rxjs": "^6.5.3", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0", + "through": "^2.3.6" + }, + "dependencies": { + "ansi-styles": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.2.1.tgz", + "integrity": "sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA==", + "requires": { + "@types/color-name": "^1.1.1", + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", + "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "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==", + "requires": { + "color-name": "~1.1.4" + } + }, + "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==" + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" + }, + "strip-ansi": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", + "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", + "requires": { + "ansi-regex": "^5.0.0" + } + }, + "supports-color": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.1.0.tgz", + "integrity": "sha512-oRSIpR8pxT1Wr2FquTNnGet79b3BWljqOuoW/h4oBhxJ/HUbX5nX6JSruTkvXDCFMwDPvsaTTbvMLKZWSy0R5g==", + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "internal-ip": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/internal-ip/-/internal-ip-4.3.0.tgz", + "integrity": "sha512-S1zBo1D6zcsyuC6PMmY5+55YMILQ9av8lotMx447Bq6SAgo/sDK6y6uUKmuYhW7eacnIhFfsPmCNYdDzsnnDCg==", + "requires": { + "default-gateway": "^4.2.0", + "ipaddr.js": "^1.9.0" + } + }, + "internal-slot": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.2.tgz", + "integrity": "sha512-2cQNfwhAfJIkU4KZPkDI+Gj5yNNnbqi40W9Gge6dfnk4TocEVm00B3bdiL+JINrbGJil2TeHvM4rETGzk/f/0g==", + "requires": { + "es-abstract": "^1.17.0-next.1", + "has": "^1.0.3", + "side-channel": "^1.0.2" + } + }, + "invariant": { + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz", + "integrity": "sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==", + "requires": { + "loose-envify": "^1.0.0" + } + }, + "invert-kv": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-2.0.0.tgz", + "integrity": "sha512-wPVv/y/QQ/Uiirj/vh3oP+1Ww+AWehmi1g5fFWGPF6IpCBCDVrhgHRMvrLfdYcwDh3QJbGXDW4JAuzxElLSqKA==" + }, + "ip": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/ip/-/ip-1.1.5.tgz", + "integrity": "sha1-vd7XARQpCCjAoDnnLvJfWq7ENUo=" + }, + "ip-regex": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/ip-regex/-/ip-regex-2.1.0.tgz", + "integrity": "sha1-+ni/XS5pE8kRzp+BnuUUa7bYROk=" + }, + "ipaddr.js": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", + "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==" + }, + "is-absolute-url": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-absolute-url/-/is-absolute-url-2.1.0.tgz", + "integrity": "sha1-UFMN+4T8yap9vnhS6Do3uTufKqY=" + }, + "is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "requires": { + "kind-of": "^3.0.2" + } + }, + "is-arguments": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.0.4.tgz", + "integrity": "sha512-xPh0Rmt8NE65sNzvyUmWgI1tz3mKq74lGA0mL8LYZcoIzKOzDh6HmrYm3d18k60nHerC8A9Km8kYu87zfSFnLA==" + }, + "is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=" + }, + "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==", + "requires": { + "binary-extensions": "^2.0.0" + } + }, + "is-buffer": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", + "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==" + }, + "is-callable": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.0.tgz", + "integrity": "sha512-pyVD9AaGLxtg6srb2Ng6ynWJqkHU9bEM087AKck0w8QwDarTfNcpIYoU8x8Hv2Icm8u6kFJM18Dag8lyqGkviw==" + }, + "is-ci": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-2.0.0.tgz", + "integrity": "sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w==", + "requires": { + "ci-info": "^2.0.0" + } + }, + "is-color-stop": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-color-stop/-/is-color-stop-1.1.0.tgz", + "integrity": "sha1-z/9HGu5N1cnhWFmPvhKWe1za00U=", + "requires": { + "css-color-names": "^0.0.4", + "hex-color-regex": "^1.1.0", + "hsl-regex": "^1.0.0", + "hsla-regex": "^1.0.0", + "rgb-regex": "^1.0.1", + "rgba-regex": "^1.0.0" + } + }, + "is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "requires": { + "kind-of": "^3.0.2" + } + }, + "is-date-object": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.2.tgz", + "integrity": "sha512-USlDT524woQ08aoZFzh3/Z6ch9Y/EWXEHQ/AaRN0SkKq4t2Jw2R2339tSXmwuVoY7LLlBCbOIlx2myP/L5zk0g==" + }, + "is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "requires": { + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" + }, + "dependencies": { + "kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==" + } + } + }, + "is-directory": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/is-directory/-/is-directory-0.3.1.tgz", + "integrity": "sha1-YTObbyR1/Hcv2cnYP1yFddwVSuE=" + }, + "is-docker": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.0.0.tgz", + "integrity": "sha512-pJEdRugimx4fBMra5z2/5iRdZ63OhYV0vr0Dwm5+xtW4D1FvRkB8hamMIhnWfyJeDdyr/aa7BDyNbtG38VxgoQ==" + }, + "is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=" + }, + "is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=" + }, + "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==" + }, + "is-generator-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-generator-fn/-/is-generator-fn-2.1.0.tgz", + "integrity": "sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==" + }, + "is-glob": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz", + "integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==", + "requires": { + "is-extglob": "^2.1.1" + } + }, + "is-in-browser": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/is-in-browser/-/is-in-browser-1.1.3.tgz", + "integrity": "sha1-Vv9NtoOgeMYILrldrX3GLh0E+DU=" + }, + "is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "requires": { + "kind-of": "^3.0.2" + } + }, + "is-obj": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-2.0.0.tgz", + "integrity": "sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==" + }, + "is-path-cwd": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-2.2.0.tgz", + "integrity": "sha512-w942bTcih8fdJPJmQHFzkS76NEP8Kzzvmw92cXsazb8intwLqPibPPdXf4ANdKV3rYMuuQYGIWtvz9JilB3NFQ==" + }, + "is-path-in-cwd": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-path-in-cwd/-/is-path-in-cwd-2.1.0.tgz", + "integrity": "sha512-rNocXHgipO+rvnP6dk3zI20RpOtrAM/kzbB258Uw5BWr3TpXi861yzjo16Dn4hUox07iw5AyeMLHWsujkjzvRQ==", + "requires": { + "is-path-inside": "^2.1.0" + } + }, + "is-path-inside": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-2.1.0.tgz", + "integrity": "sha512-wiyhTzfDWsvwAW53OBWF5zuvaOGlZ6PwYxAbPVDhpm+gM09xKQGjBq/8uYN12aDvMxnAnq3dxTyoSoRNmg5YFg==", + "requires": { + "path-is-inside": "^1.0.2" + } + }, + "is-plain-obj": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz", + "integrity": "sha1-caUMhCnfync8kqOQpKA7OfzVHT4=" + }, + "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==", + "requires": { + "isobject": "^3.0.1" + } + }, + "is-regex": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.0.tgz", + "integrity": "sha512-iI97M8KTWID2la5uYXlkbSDQIg4F6o1sYboZKKTDpnDQMLtUL86zxhgDet3Q2SriaYsyGqZ6Mn2SjbRKeLHdqw==", + "requires": { + "has-symbols": "^1.0.1" + } + }, + "is-regexp": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-regexp/-/is-regexp-1.0.0.tgz", + "integrity": "sha1-/S2INUXEa6xaYz57mgnof6LLUGk=" + }, + "is-resolvable": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-resolvable/-/is-resolvable-1.1.0.tgz", + "integrity": "sha512-qgDYXFSR5WvEfuS5dMj6oTMEbrrSaM0CrFk2Yiq/gXnBvD9pMa2jGXxyhGLfvhZpuMZe18CJpFxAt3CRs42NMg==" + }, + "is-root": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-root/-/is-root-2.1.0.tgz", + "integrity": "sha512-AGOriNp96vNBd3HtU+RzFEc75FfR5ymiYv8E553I71SCeXBiMsVDUtdio1OEFvrPyLIQ9tVR5RxXIFe5PUFjMg==" + }, + "is-stream": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", + "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=" + }, + "is-string": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.5.tgz", + "integrity": "sha512-buY6VNRjhQMiF1qWDouloZlQbRhDPCebwxSjxMjxgemYT46YMd2NR0/H+fBhEfWX4A/w9TBJ+ol+okqJKFE6vQ==" + }, + "is-svg": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-svg/-/is-svg-3.0.0.tgz", + "integrity": "sha512-gi4iHK53LR2ujhLVVj+37Ykh9GLqYHX6JOVXbLAucaG/Cqw9xwdFOjDM2qeifLs1sF1npXXFvDu0r5HNgCMrzQ==", + "requires": { + "html-comment-regex": "^1.1.0" + } + }, + "is-symbol": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.3.tgz", + "integrity": "sha512-OwijhaRSgqvhm/0ZdAcXNZt9lYdKFpcRDT5ULUuYXPoT794UNOdU+gpT6Rzo7b4V2HUl/op6GqY894AZwv9faQ==", + "requires": { + "has-symbols": "^1.0.1" + } + }, + "is-typedarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", + "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=" + }, + "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==" + }, + "is-wsl": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-1.1.0.tgz", + "integrity": "sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0=" + }, + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" + }, + "isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=" + }, + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=" + }, + "isstream": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", + "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=" + }, + "istanbul-lib-coverage": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.5.tgz", + "integrity": "sha512-8aXznuEPCJvGnMSRft4udDRDtb1V3pkQkMMI5LI+6HuQz5oQ4J2UFn1H82raA3qJtyOLkkwVqICBQkjnGtn5mA==" + }, + "istanbul-lib-instrument": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-3.3.0.tgz", + "integrity": "sha512-5nnIN4vo5xQZHdXno/YDXJ0G+I3dAm4XgzfSVTPLQpj/zAV2dV6Juy0yaf10/zrJOJeHoN3fraFe+XRq2bFVZA==", + "requires": { + "@babel/generator": "^7.4.0", + "@babel/parser": "^7.4.3", + "@babel/template": "^7.4.0", + "@babel/traverse": "^7.4.3", + "@babel/types": "^7.4.0", + "istanbul-lib-coverage": "^2.0.5", + "semver": "^6.0.0" + } + }, + "istanbul-lib-report": { + "version": "2.0.8", + "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-2.0.8.tgz", + "integrity": "sha512-fHBeG573EIihhAblwgxrSenp0Dby6tJMFR/HvlerBsrCTD5bkUuoNtn3gVh29ZCS824cGGBPn7Sg7cNk+2xUsQ==", + "requires": { + "istanbul-lib-coverage": "^2.0.5", + "make-dir": "^2.1.0", + "supports-color": "^6.1.0" + }, + "dependencies": { + "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==", + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "istanbul-lib-source-maps": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-3.0.6.tgz", + "integrity": "sha512-R47KzMtDJH6X4/YW9XTx+jrLnZnscW4VpNN+1PViSYTejLVPWv7oov+Duf8YQSPyVRUvueQqz1TcsC6mooZTXw==", + "requires": { + "debug": "^4.1.1", + "istanbul-lib-coverage": "^2.0.5", + "make-dir": "^2.1.0", + "rimraf": "^2.6.3", + "source-map": "^0.6.1" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" + } + } + }, + "istanbul-reports": { + "version": "2.2.7", + "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-2.2.7.tgz", + "integrity": "sha512-uu1F/L1o5Y6LzPVSVZXNOoD/KXpJue9aeLRd0sM9uMXfZvzomB0WxVamWb5ue8kA2vVWEmW7EG+A5n3f1kqHKg==", + "requires": { + "html-escaper": "^2.0.0" + } + }, + "jest": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest/-/jest-24.9.0.tgz", + "integrity": "sha512-YvkBL1Zm7d2B1+h5fHEOdyjCG+sGMz4f8D86/0HiqJ6MB4MnDc8FgP5vdWsGnemOQro7lnYo8UakZ3+5A0jxGw==", + "requires": { + "import-local": "^2.0.0", + "jest-cli": "^24.9.0" + }, + "dependencies": { + "jest-cli": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-24.9.0.tgz", + "integrity": "sha512-+VLRKyitT3BWoMeSUIHRxV/2g8y9gw91Jh5z2UmXZzkZKpbC08CSehVxgHUwTpy+HwGcns/tqafQDJW7imYvGg==", + "requires": { + "@jest/core": "^24.9.0", + "@jest/test-result": "^24.9.0", + "@jest/types": "^24.9.0", + "chalk": "^2.0.1", + "exit": "^0.1.2", + "import-local": "^2.0.0", + "is-ci": "^2.0.0", + "jest-config": "^24.9.0", + "jest-util": "^24.9.0", + "jest-validate": "^24.9.0", + "prompts": "^2.0.1", + "realpath-native": "^1.1.0", + "yargs": "^13.3.0" + } + } + } + }, + "jest-changed-files": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-24.9.0.tgz", + "integrity": "sha512-6aTWpe2mHF0DhL28WjdkO8LyGjs3zItPET4bMSeXU6T3ub4FPMw+mcOcbdGXQOAfmLcxofD23/5Bl9Z4AkFwqg==", + "requires": { + "@jest/types": "^24.9.0", + "execa": "^1.0.0", + "throat": "^4.0.0" + } + }, + "jest-config": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-24.9.0.tgz", + "integrity": "sha512-RATtQJtVYQrp7fvWg6f5y3pEFj9I+H8sWw4aKxnDZ96mob5i5SD6ZEGWgMLXQ4LE8UurrjbdlLWdUeo+28QpfQ==", + "requires": { + "@babel/core": "^7.1.0", + "@jest/test-sequencer": "^24.9.0", + "@jest/types": "^24.9.0", + "babel-jest": "^24.9.0", + "chalk": "^2.0.1", + "glob": "^7.1.1", + "jest-environment-jsdom": "^24.9.0", + "jest-environment-node": "^24.9.0", + "jest-get-type": "^24.9.0", + "jest-jasmine2": "^24.9.0", + "jest-regex-util": "^24.3.0", + "jest-resolve": "^24.9.0", + "jest-util": "^24.9.0", + "jest-validate": "^24.9.0", + "micromatch": "^3.1.10", + "pretty-format": "^24.9.0", + "realpath-native": "^1.1.0" + } + }, + "jest-diff": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-24.9.0.tgz", + "integrity": "sha512-qMfrTs8AdJE2iqrTp0hzh7kTd2PQWrsFyj9tORoKmu32xjPjeE4NyjVRDz8ybYwqS2ik8N4hsIpiVTyFeo2lBQ==", + "requires": { + "chalk": "^2.0.1", + "diff-sequences": "^24.9.0", + "jest-get-type": "^24.9.0", + "pretty-format": "^24.9.0" + } + }, + "jest-docblock": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-24.9.0.tgz", + "integrity": "sha512-F1DjdpDMJMA1cN6He0FNYNZlo3yYmOtRUnktrT9Q37njYzC5WEaDdmbynIgy0L/IvXvvgsG8OsqhLPXTpfmZAA==", + "requires": { + "detect-newline": "^2.1.0" + } + }, + "jest-each": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-24.9.0.tgz", + "integrity": "sha512-ONi0R4BvW45cw8s2Lrx8YgbeXL1oCQ/wIDwmsM3CqM/nlblNCPmnC3IPQlMbRFZu3wKdQ2U8BqM6lh3LJ5Bsog==", + "requires": { + "@jest/types": "^24.9.0", + "chalk": "^2.0.1", + "jest-get-type": "^24.9.0", + "jest-util": "^24.9.0", + "pretty-format": "^24.9.0" + } + }, + "jest-environment-jsdom": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-environment-jsdom/-/jest-environment-jsdom-24.9.0.tgz", + "integrity": "sha512-Zv9FV9NBRzLuALXjvRijO2351DRQeLYXtpD4xNvfoVFw21IOKNhZAEUKcbiEtjTkm2GsJ3boMVgkaR7rN8qetA==", + "requires": { + "@jest/environment": "^24.9.0", + "@jest/fake-timers": "^24.9.0", + "@jest/types": "^24.9.0", + "jest-mock": "^24.9.0", + "jest-util": "^24.9.0", + "jsdom": "^11.5.1" + } + }, + "jest-environment-jsdom-fourteen": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/jest-environment-jsdom-fourteen/-/jest-environment-jsdom-fourteen-1.0.1.tgz", + "integrity": "sha512-DojMX1sY+at5Ep+O9yME34CdidZnO3/zfPh8UW+918C5fIZET5vCjfkegixmsi7AtdYfkr4bPlIzmWnlvQkP7Q==", + "requires": { + "@jest/environment": "^24.3.0", + "@jest/fake-timers": "^24.3.0", + "@jest/types": "^24.3.0", + "jest-mock": "^24.0.0", + "jest-util": "^24.0.0", + "jsdom": "^14.1.0" + }, + "dependencies": { + "acorn": { + "version": "6.4.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.4.1.tgz", + "integrity": "sha512-ZVA9k326Nwrj3Cj9jlh3wGFutC2ZornPNARZwsNYqQYgN0EsV2d53w5RN/co65Ohn4sUAUtb1rSUAOD6XN9idA==" + }, + "jsdom": { + "version": "14.1.0", + "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-14.1.0.tgz", + "integrity": "sha512-O901mfJSuTdwU2w3Sn+74T+RnDVP+FuV5fH8tcPWyqrseRAb0s5xOtPgCFiPOtLcyK7CLIJwPyD83ZqQWvA5ng==", + "requires": { + "abab": "^2.0.0", + "acorn": "^6.0.4", + "acorn-globals": "^4.3.0", + "array-equal": "^1.0.0", + "cssom": "^0.3.4", + "cssstyle": "^1.1.1", + "data-urls": "^1.1.0", + "domexception": "^1.0.1", + "escodegen": "^1.11.0", + "html-encoding-sniffer": "^1.0.2", + "nwsapi": "^2.1.3", + "parse5": "5.1.0", + "pn": "^1.1.0", + "request": "^2.88.0", + "request-promise-native": "^1.0.5", + "saxes": "^3.1.9", + "symbol-tree": "^3.2.2", + "tough-cookie": "^2.5.0", + "w3c-hr-time": "^1.0.1", + "w3c-xmlserializer": "^1.1.2", + "webidl-conversions": "^4.0.2", + "whatwg-encoding": "^1.0.5", + "whatwg-mimetype": "^2.3.0", + "whatwg-url": "^7.0.0", + "ws": "^6.1.2", + "xml-name-validator": "^3.0.0" + } + }, + "parse5": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-5.1.0.tgz", + "integrity": "sha512-fxNG2sQjHvlVAYmzBZS9YlDp6PTSSDwa98vkD4QgVDDCAo84z5X1t5XyJQ62ImdLXx5NdIIfihey6xpum9/gRQ==" + }, + "whatwg-url": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-7.1.0.tgz", + "integrity": "sha512-WUu7Rg1DroM7oQvGWfOiAK21n74Gg+T4elXEQYkOhtyLeWiJFoOGLXPKI/9gzIie9CtwVLm8wtw6YJdKyxSjeg==", + "requires": { + "lodash.sortby": "^4.7.0", + "tr46": "^1.0.1", + "webidl-conversions": "^4.0.2" + } + }, + "ws": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/ws/-/ws-6.2.1.tgz", + "integrity": "sha512-GIyAXC2cB7LjvpgMt9EKS2ldqr0MTrORaleiOno6TweZ6r3TKtoFQWay/2PceJ3RuBasOHzXNn5Lrw1X0bEjqA==", + "requires": { + "async-limiter": "~1.0.0" + } + } + } + }, + "jest-environment-node": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-24.9.0.tgz", + "integrity": "sha512-6d4V2f4nxzIzwendo27Tr0aFm+IXWa0XEUnaH6nU0FMaozxovt+sfRvh4J47wL1OvF83I3SSTu0XK+i4Bqe7uA==", + "requires": { + "@jest/environment": "^24.9.0", + "@jest/fake-timers": "^24.9.0", + "@jest/types": "^24.9.0", + "jest-mock": "^24.9.0", + "jest-util": "^24.9.0" + } + }, + "jest-get-type": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-24.9.0.tgz", + "integrity": "sha512-lUseMzAley4LhIcpSP9Jf+fTrQ4a1yHQwLNeeVa2cEmbCGeoZAtYPOIv8JaxLD/sUpKxetKGP+gsHl8f8TSj8Q==" + }, + "jest-haste-map": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-24.9.0.tgz", + "integrity": "sha512-kfVFmsuWui2Sj1Rp1AJ4D9HqJwE4uwTlS/vO+eRUaMmd54BFpli2XhMQnPC2k4cHFVbB2Q2C+jtI1AGLgEnCjQ==", + "requires": { + "@jest/types": "^24.9.0", + "anymatch": "^2.0.0", + "fb-watchman": "^2.0.0", + "fsevents": "^1.2.7", + "graceful-fs": "^4.1.15", + "invariant": "^2.2.4", + "jest-serializer": "^24.9.0", + "jest-util": "^24.9.0", + "jest-worker": "^24.9.0", + "micromatch": "^3.1.10", + "sane": "^4.0.3", + "walker": "^1.0.7" + }, + "dependencies": { + "fsevents": { + "version": "1.2.13", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.13.tgz", + "integrity": "sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw==", + "optional": true + } + } + }, + "jest-jasmine2": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-jasmine2/-/jest-jasmine2-24.9.0.tgz", + "integrity": "sha512-Cq7vkAgaYKp+PsX+2/JbTarrk0DmNhsEtqBXNwUHkdlbrTBLtMJINADf2mf5FkowNsq8evbPc07/qFO0AdKTzw==", + "requires": { + "@babel/traverse": "^7.1.0", + "@jest/environment": "^24.9.0", + "@jest/test-result": "^24.9.0", + "@jest/types": "^24.9.0", + "chalk": "^2.0.1", + "co": "^4.6.0", + "expect": "^24.9.0", + "is-generator-fn": "^2.0.0", + "jest-each": "^24.9.0", + "jest-matcher-utils": "^24.9.0", + "jest-message-util": "^24.9.0", + "jest-runtime": "^24.9.0", + "jest-snapshot": "^24.9.0", + "jest-util": "^24.9.0", + "pretty-format": "^24.9.0", + "throat": "^4.0.0" + } + }, + "jest-leak-detector": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-24.9.0.tgz", + "integrity": "sha512-tYkFIDsiKTGwb2FG1w8hX9V0aUb2ot8zY/2nFg087dUageonw1zrLMP4W6zsRO59dPkTSKie+D4rhMuP9nRmrA==", + "requires": { + "jest-get-type": "^24.9.0", + "pretty-format": "^24.9.0" + } + }, + "jest-matcher-utils": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-24.9.0.tgz", + "integrity": "sha512-OZz2IXsu6eaiMAwe67c1T+5tUAtQyQx27/EMEkbFAGiw52tB9em+uGbzpcgYVpA8wl0hlxKPZxrly4CXU/GjHA==", + "requires": { + "chalk": "^2.0.1", + "jest-diff": "^24.9.0", + "jest-get-type": "^24.9.0", + "pretty-format": "^24.9.0" + } + }, + "jest-message-util": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-24.9.0.tgz", + "integrity": "sha512-oCj8FiZ3U0hTP4aSui87P4L4jC37BtQwUMqk+zk/b11FR19BJDeZsZAvIHutWnmtw7r85UmR3CEWZ0HWU2mAlw==", + "requires": { + "@babel/code-frame": "^7.0.0", + "@jest/test-result": "^24.9.0", + "@jest/types": "^24.9.0", + "@types/stack-utils": "^1.0.1", + "chalk": "^2.0.1", + "micromatch": "^3.1.10", + "slash": "^2.0.0", + "stack-utils": "^1.0.1" + } + }, + "jest-mock": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-24.9.0.tgz", + "integrity": "sha512-3BEYN5WbSq9wd+SyLDES7AHnjH9A/ROBwmz7l2y+ol+NtSFO8DYiEBzoO1CeFc9a8DYy10EO4dDFVv/wN3zl1w==", + "requires": { + "@jest/types": "^24.9.0" + } + }, + "jest-pnp-resolver": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/jest-pnp-resolver/-/jest-pnp-resolver-1.2.2.tgz", + "integrity": "sha512-olV41bKSMm8BdnuMsewT4jqlZ8+3TCARAXjZGT9jcoSnrfUnRCqnMoF9XEeoWjbzObpqF9dRhHQj0Xb9QdF6/w==" + }, + "jest-regex-util": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-24.9.0.tgz", + "integrity": "sha512-05Cmb6CuxaA+Ys6fjr3PhvV3bGQmO+2p2La4hFbU+W5uOc479f7FdLXUWXw4pYMAhhSZIuKHwSXSu6CsSBAXQA==" + }, + "jest-resolve": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-24.9.0.tgz", + "integrity": "sha512-TaLeLVL1l08YFZAt3zaPtjiVvyy4oSA6CRe+0AFPPVX3Q/VI0giIWWoAvoS5L96vj9Dqxj4fB5p2qrHCmTU/MQ==", + "requires": { + "@jest/types": "^24.9.0", + "browser-resolve": "^1.11.3", + "chalk": "^2.0.1", + "jest-pnp-resolver": "^1.2.1", + "realpath-native": "^1.1.0" + } + }, + "jest-resolve-dependencies": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-24.9.0.tgz", + "integrity": "sha512-Fm7b6AlWnYhT0BXy4hXpactHIqER7erNgIsIozDXWl5dVm+k8XdGVe1oTg1JyaFnOxarMEbax3wyRJqGP2Pq+g==", + "requires": { + "@jest/types": "^24.9.0", + "jest-regex-util": "^24.3.0", + "jest-snapshot": "^24.9.0" + } + }, + "jest-runner": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-24.9.0.tgz", + "integrity": "sha512-KksJQyI3/0mhcfspnxxEOBueGrd5E4vV7ADQLT9ESaCzz02WnbdbKWIf5Mkaucoaj7obQckYPVX6JJhgUcoWWg==", + "requires": { + "@jest/console": "^24.7.1", + "@jest/environment": "^24.9.0", + "@jest/test-result": "^24.9.0", + "@jest/types": "^24.9.0", + "chalk": "^2.4.2", + "exit": "^0.1.2", + "graceful-fs": "^4.1.15", + "jest-config": "^24.9.0", + "jest-docblock": "^24.3.0", + "jest-haste-map": "^24.9.0", + "jest-jasmine2": "^24.9.0", + "jest-leak-detector": "^24.9.0", + "jest-message-util": "^24.9.0", + "jest-resolve": "^24.9.0", + "jest-runtime": "^24.9.0", + "jest-util": "^24.9.0", + "jest-worker": "^24.6.0", + "source-map-support": "^0.5.6", + "throat": "^4.0.0" + } + }, + "jest-runtime": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-24.9.0.tgz", + "integrity": "sha512-8oNqgnmF3v2J6PVRM2Jfuj8oX3syKmaynlDMMKQ4iyzbQzIG6th5ub/lM2bCMTmoTKM3ykcUYI2Pw9xwNtjMnw==", + "requires": { + "@jest/console": "^24.7.1", + "@jest/environment": "^24.9.0", + "@jest/source-map": "^24.3.0", + "@jest/transform": "^24.9.0", + "@jest/types": "^24.9.0", + "@types/yargs": "^13.0.0", + "chalk": "^2.0.1", + "exit": "^0.1.2", + "glob": "^7.1.3", + "graceful-fs": "^4.1.15", + "jest-config": "^24.9.0", + "jest-haste-map": "^24.9.0", + "jest-message-util": "^24.9.0", + "jest-mock": "^24.9.0", + "jest-regex-util": "^24.3.0", + "jest-resolve": "^24.9.0", + "jest-snapshot": "^24.9.0", + "jest-util": "^24.9.0", + "jest-validate": "^24.9.0", + "realpath-native": "^1.1.0", + "slash": "^2.0.0", + "strip-bom": "^3.0.0", + "yargs": "^13.3.0" + } + }, + "jest-serializer": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-serializer/-/jest-serializer-24.9.0.tgz", + "integrity": "sha512-DxYipDr8OvfrKH3Kel6NdED3OXxjvxXZ1uIY2I9OFbGg+vUkkg7AGvi65qbhbWNPvDckXmzMPbK3u3HaDO49bQ==" + }, + "jest-snapshot": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-24.9.0.tgz", + "integrity": "sha512-uI/rszGSs73xCM0l+up7O7a40o90cnrk429LOiK3aeTvfC0HHmldbd81/B7Ix81KSFe1lwkbl7GnBGG4UfuDew==", + "requires": { + "@babel/types": "^7.0.0", + "@jest/types": "^24.9.0", + "chalk": "^2.0.1", + "expect": "^24.9.0", + "jest-diff": "^24.9.0", + "jest-get-type": "^24.9.0", + "jest-matcher-utils": "^24.9.0", + "jest-message-util": "^24.9.0", + "jest-resolve": "^24.9.0", + "mkdirp": "^0.5.1", + "natural-compare": "^1.4.0", + "pretty-format": "^24.9.0", + "semver": "^6.2.0" + } + }, + "jest-util": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-24.9.0.tgz", + "integrity": "sha512-x+cZU8VRmOJxbA1K5oDBdxQmdq0OIdADarLxk0Mq+3XS4jgvhG/oKGWcIDCtPG0HgjxOYvF+ilPJQsAyXfbNOg==", + "requires": { + "@jest/console": "^24.9.0", + "@jest/fake-timers": "^24.9.0", + "@jest/source-map": "^24.9.0", + "@jest/test-result": "^24.9.0", + "@jest/types": "^24.9.0", + "callsites": "^3.0.0", + "chalk": "^2.0.1", + "graceful-fs": "^4.1.15", + "is-ci": "^2.0.0", + "mkdirp": "^0.5.1", + "slash": "^2.0.0", + "source-map": "^0.6.0" + }, + "dependencies": { + "callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==" + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" + } + } + }, + "jest-validate": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-24.9.0.tgz", + "integrity": "sha512-HPIt6C5ACwiqSiwi+OfSSHbK8sG7akG8eATl+IPKaeIjtPOeBUd/g3J7DghugzxrGjI93qS/+RPKe1H6PqvhRQ==", + "requires": { + "@jest/types": "^24.9.0", + "camelcase": "^5.3.1", + "chalk": "^2.0.1", + "jest-get-type": "^24.9.0", + "leven": "^3.1.0", + "pretty-format": "^24.9.0" + } + }, + "jest-watch-typeahead": { + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/jest-watch-typeahead/-/jest-watch-typeahead-0.4.2.tgz", + "integrity": "sha512-f7VpLebTdaXs81rg/oj4Vg/ObZy2QtGzAmGLNsqUS5G5KtSN68tFcIsbvNODfNyQxU78g7D8x77o3bgfBTR+2Q==", + "requires": { + "ansi-escapes": "^4.2.1", + "chalk": "^2.4.1", + "jest-regex-util": "^24.9.0", + "jest-watcher": "^24.3.0", + "slash": "^3.0.0", + "string-length": "^3.1.0", + "strip-ansi": "^5.0.0" + }, + "dependencies": { + "slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==" + }, + "string-length": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/string-length/-/string-length-3.1.0.tgz", + "integrity": "sha512-Ttp5YvkGm5v9Ijagtaz1BnN+k9ObpvS0eIBblPMp2YWL8FBmi9qblQ9fexc2k/CXFgrTIteU3jAw3payCnwSTA==", + "requires": { + "astral-regex": "^1.0.0", + "strip-ansi": "^5.2.0" + } + } + } + }, + "jest-watcher": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-24.9.0.tgz", + "integrity": "sha512-+/fLOfKPXXYJDYlks62/4R4GoT+GU1tYZed99JSCOsmzkkF7727RqKrjNAxtfO4YpGv11wybgRvCjR73lK2GZw==", + "requires": { + "@jest/test-result": "^24.9.0", + "@jest/types": "^24.9.0", + "@types/yargs": "^13.0.0", + "ansi-escapes": "^3.0.0", + "chalk": "^2.0.1", + "jest-util": "^24.9.0", + "string-length": "^2.0.0" + }, + "dependencies": { + "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==" + } + } + }, + "jest-worker": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-24.9.0.tgz", + "integrity": "sha512-51PE4haMSXcHohnSMdM42anbvZANYTqMrr52tVKPqqsPJMzoP6FYYDVqahX/HrAoKEKz3uUPzSvKs9A3qR4iVw==", + "requires": { + "merge-stream": "^2.0.0", + "supports-color": "^6.1.0" + }, + "dependencies": { + "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==", + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" + }, + "js-yaml": { + "version": "3.14.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.0.tgz", + "integrity": "sha512-/4IbIeHcD9VMHFqDR/gQ7EdZdLimOvW2DdcxFjdyyZ9NsbS+ccrXqVWDtab/lRl5AlUqmpBx8EhPaWR+OtY17A==", + "requires": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + } + }, + "jsbn": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", + "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=" + }, + "jsdom": { + "version": "11.12.0", + "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-11.12.0.tgz", + "integrity": "sha512-y8Px43oyiBM13Zc1z780FrfNLJCXTL40EWlty/LXUtcjykRBNgLlCjWXpfSPBl2iv+N7koQN+dvqszHZgT/Fjw==", + "requires": { + "abab": "^2.0.0", + "acorn": "^5.5.3", + "acorn-globals": "^4.1.0", + "array-equal": "^1.0.0", + "cssom": ">= 0.3.2 < 0.4.0", + "cssstyle": "^1.0.0", + "data-urls": "^1.0.0", + "domexception": "^1.0.1", + "escodegen": "^1.9.1", + "html-encoding-sniffer": "^1.0.2", + "left-pad": "^1.3.0", + "nwsapi": "^2.0.7", + "parse5": "4.0.0", + "pn": "^1.1.0", + "request": "^2.87.0", + "request-promise-native": "^1.0.5", + "sax": "^1.2.4", + "symbol-tree": "^3.2.2", + "tough-cookie": "^2.3.4", + "w3c-hr-time": "^1.0.1", + "webidl-conversions": "^4.0.2", + "whatwg-encoding": "^1.0.3", + "whatwg-mimetype": "^2.1.0", + "whatwg-url": "^6.4.1", + "ws": "^5.2.0", + "xml-name-validator": "^3.0.0" + }, + "dependencies": { + "acorn": { + "version": "5.7.4", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.7.4.tgz", + "integrity": "sha512-1D++VG7BhrtvQpNbBzovKNc1FLGGEE/oGe7b9xJm/RFHMBeUaUGpluV9RLjZa47YFdPcDAenEYuq9pQPcMdLJg==" + } + } + }, + "jsesc": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", + "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==" + }, + "json-parse-better-errors": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", + "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==" + }, + "json-schema": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz", + "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=" + }, + "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==" + }, + "json-stable-stringify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify/-/json-stable-stringify-1.0.1.tgz", + "integrity": "sha1-mnWdOcXy/1A/1TAGRu1EX4jE+a8=", + "requires": { + "jsonify": "~0.0.0" + } + }, + "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": "sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=" + }, + "json-stringify-safe": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", + "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=" + }, + "json3": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/json3/-/json3-3.3.3.tgz", + "integrity": "sha512-c7/8mbUsKigAbLkD5B010BK4D9LZm7A1pNItkEwiUZRpIN66exu/e7YQWysGun+TRKaJp8MhemM+VkfWv42aCA==" + }, + "json5": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.1.3.tgz", + "integrity": "sha512-KXPvOm8K9IJKFM0bmdn8QXh7udDh1g/giieX0NLCaMnb4hEiVFqnop2ImTXCc5e0/oHz3LTqmHGtExn5hfMkOA==", + "requires": { + "minimist": "^1.2.5" + } + }, + "jsonfile": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", + "integrity": "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=", + "requires": { + "graceful-fs": "^4.1.6" + } + }, + "jsonify": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/jsonify/-/jsonify-0.0.0.tgz", + "integrity": "sha1-LHS27kHZPKUbe1qu6PUDYx0lKnM=" + }, + "jsprim": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz", + "integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=", + "requires": { + "assert-plus": "1.0.0", + "extsprintf": "1.3.0", + "json-schema": "0.2.3", + "verror": "1.10.0" + } + }, + "jss": { + "version": "10.3.0", + "resolved": "https://registry.npmjs.org/jss/-/jss-10.3.0.tgz", + "integrity": "sha512-B5sTRW9B6uHaUVzSo9YiMEOEp3UX8lWevU0Fsv+xtRnsShmgCfIYX44bTH8bPJe6LQKqEXku3ulKuHLbxBS97Q==", + "requires": { + "@babel/runtime": "^7.3.1", + "csstype": "^2.6.5", + "is-in-browser": "^1.1.3", + "tiny-warning": "^1.0.2" + } + }, + "jss-plugin-camel-case": { + "version": "10.3.0", + "resolved": "https://registry.npmjs.org/jss-plugin-camel-case/-/jss-plugin-camel-case-10.3.0.tgz", + "integrity": "sha512-tadWRi/SLWqLK3EUZEdDNJL71F3ST93Zrl9JYMjV0QDqKPAl0Liue81q7m/nFUpnSTXczbKDy4wq8rI8o7WFqA==", + "requires": { + "@babel/runtime": "^7.3.1", + "hyphenate-style-name": "^1.0.3", + "jss": "^10.3.0" + } + }, + "jss-plugin-default-unit": { + "version": "10.3.0", + "resolved": "https://registry.npmjs.org/jss-plugin-default-unit/-/jss-plugin-default-unit-10.3.0.tgz", + "integrity": "sha512-tT5KkIXAsZOSS9WDSe8m8lEHIjoEOj4Pr0WrG0WZZsMXZ1mVLFCSsD2jdWarQWDaRNyMj/I4d7czRRObhOxSuw==", + "requires": { + "@babel/runtime": "^7.3.1", + "jss": "^10.3.0" + } + }, + "jss-plugin-global": { + "version": "10.3.0", + "resolved": "https://registry.npmjs.org/jss-plugin-global/-/jss-plugin-global-10.3.0.tgz", + "integrity": "sha512-etYTG/y3qIR/vxZnKY+J3wXwObyBDNhBiB3l/EW9/pE3WHE//BZdK8LFvQcrCO48sZW1Z6paHo6klxUPP7WbzA==", + "requires": { + "@babel/runtime": "^7.3.1", + "jss": "^10.3.0" + } + }, + "jss-plugin-nested": { + "version": "10.3.0", + "resolved": "https://registry.npmjs.org/jss-plugin-nested/-/jss-plugin-nested-10.3.0.tgz", + "integrity": "sha512-qWiEkoXNEkkZ+FZrWmUGpf+zBsnEOmKXhkjNX85/ZfWhH9dfGxUCKuJFuOWFM+rjQfxV4csfesq4hY0jk8Qt0w==", + "requires": { + "@babel/runtime": "^7.3.1", + "jss": "^10.3.0", + "tiny-warning": "^1.0.2" + } + }, + "jss-plugin-props-sort": { + "version": "10.3.0", + "resolved": "https://registry.npmjs.org/jss-plugin-props-sort/-/jss-plugin-props-sort-10.3.0.tgz", + "integrity": "sha512-boetORqL/lfd7BWeFD3K+IyPqyIC+l3CRrdZr+NPq7Noqp+xyg/0MR7QisgzpxCEulk+j2CRcEUoZsvgPC4nTg==", + "requires": { + "@babel/runtime": "^7.3.1", + "jss": "^10.3.0" + } + }, + "jss-plugin-rule-value-function": { + "version": "10.3.0", + "resolved": "https://registry.npmjs.org/jss-plugin-rule-value-function/-/jss-plugin-rule-value-function-10.3.0.tgz", + "integrity": "sha512-7WiMrKIHH3rwxTuJki9+7nY11r1UXqaUZRhHvqTD4/ZE+SVhvtD5Tx21ivNxotwUSleucA/8boX+NF21oXzr5Q==", + "requires": { + "@babel/runtime": "^7.3.1", + "jss": "^10.3.0", + "tiny-warning": "^1.0.2" + } + }, + "jss-plugin-vendor-prefixer": { + "version": "10.3.0", + "resolved": "https://registry.npmjs.org/jss-plugin-vendor-prefixer/-/jss-plugin-vendor-prefixer-10.3.0.tgz", + "integrity": "sha512-sZQbrcZyP5V0ADjCLwUA1spVWoaZvM7XZ+2fSeieZFBj31cRsnV7X70FFDerMHeiHAXKWzYek+67nMDjhrZAVQ==", + "requires": { + "@babel/runtime": "^7.3.1", + "css-vendor": "^2.0.8", + "jss": "^10.3.0" + } + }, + "jsx-ast-utils": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-2.4.1.tgz", + "integrity": "sha512-z1xSldJ6imESSzOjd3NNkieVJKRlKYSOtMG8SFyCj2FIrvSaSuli/WjpBkEzCBoR9bYYYFgqJw61Xhu7Lcgk+w==", + "requires": { + "array-includes": "^3.1.1", + "object.assign": "^4.1.0" + } + }, + "killable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/killable/-/killable-1.0.1.tgz", + "integrity": "sha512-LzqtLKlUwirEUyl/nicirVmNiPvYs7l5n8wOPP7fyJVpUPkvCnW/vuiXGpylGUlnPDnB7311rARzAt3Mhswpjg==" + }, + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "requires": { + "is-buffer": "^1.1.5" + } + }, + "kleur": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz", + "integrity": "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==" + }, + "last-call-webpack-plugin": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/last-call-webpack-plugin/-/last-call-webpack-plugin-3.0.0.tgz", + "integrity": "sha512-7KI2l2GIZa9p2spzPIVZBYyNKkN+e/SQPpnjlTiPhdbDW3F86tdKKELxKpzJ5sgU19wQWsACULZmpTPYHeWO5w==", + "requires": { + "lodash": "^4.17.5", + "webpack-sources": "^1.1.0" + } + }, + "lazy-cache": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-1.0.4.tgz", + "integrity": "sha1-odePw6UEdMuAhF07O24dpJpEbo4=" + }, + "lcid": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/lcid/-/lcid-2.0.0.tgz", + "integrity": "sha512-avPEb8P8EGnwXKClwsNUgryVjllcRqtMYa49NTsbQagYuT1DcXnl1915oxWjoyGrXR6zH/Y0Zc96xWsPcoDKeA==", + "requires": { + "invert-kv": "^2.0.0" + } + }, + "left-pad": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/left-pad/-/left-pad-1.3.0.tgz", + "integrity": "sha512-XI5MPzVNApjAyhQzphX8BkmKsKUxD4LdyK24iZeQGinBN9yTQT3bFlCBy/aVx2HrNcqQGsdot8ghrjyrvMCoEA==" + }, + "leven": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz", + "integrity": "sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==" + }, + "levenary": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/levenary/-/levenary-1.1.1.tgz", + "integrity": "sha512-mkAdOIt79FD6irqjYSs4rdbnlT5vRonMEvBVPVb3XmevfS8kgRXwfes0dhPdEtzTWD/1eNE/Bm/G1iRt6DcnQQ==", + "requires": { + "leven": "^3.1.0" + } + }, + "levn": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", + "integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=", + "requires": { + "prelude-ls": "~1.1.2", + "type-check": "~0.3.2" + } + }, + "lines-and-columns": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.1.6.tgz", + "integrity": "sha1-HADHQ7QzzQpOgHWPe2SldEDZ/wA=" + }, + "load-json-file": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-4.0.0.tgz", + "integrity": "sha1-L19Fq5HjMhYjT9U62rZo607AmTs=", + "requires": { + "graceful-fs": "^4.1.2", + "parse-json": "^4.0.0", + "pify": "^3.0.0", + "strip-bom": "^3.0.0" + } + }, + "loader-fs-cache": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/loader-fs-cache/-/loader-fs-cache-1.0.3.tgz", + "integrity": "sha512-ldcgZpjNJj71n+2Mf6yetz+c9bM4xpKtNds4LbqXzU/PTdeAX0g3ytnU1AJMEcTk2Lex4Smpe3Q/eCTsvUBxbA==", + "requires": { + "find-cache-dir": "^0.1.1", + "mkdirp": "^0.5.1" + }, + "dependencies": { + "find-cache-dir": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-0.1.1.tgz", + "integrity": "sha1-yN765XyKUqinhPnjHFfHQumToLk=", + "requires": { + "commondir": "^1.0.1", + "mkdirp": "^0.5.1", + "pkg-dir": "^1.0.0" + } + }, + "find-up": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", + "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=", + "requires": { + "path-exists": "^2.0.0", + "pinkie-promise": "^2.0.0" + } + }, + "path-exists": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz", + "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=", + "requires": { + "pinkie-promise": "^2.0.0" + } + }, + "pkg-dir": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-1.0.0.tgz", + "integrity": "sha1-ektQio1bstYp1EcFb/TpyTFM89Q=", + "requires": { + "find-up": "^1.0.0" + } + } + } + }, + "loader-runner": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-2.4.0.tgz", + "integrity": "sha512-Jsmr89RcXGIwivFY21FcRrisYZfvLMTWx5kOLc+JTxtpBOG6xML0vzbc6SEQG2FO9/4Fc3wW4LVcB5DmGflaRw==" + }, + "loader-utils": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.0.tgz", + "integrity": "sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA==", + "requires": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^1.0.1" + }, + "dependencies": { + "json5": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", + "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", + "requires": { + "minimist": "^1.2.0" + } + } + } + }, + "locate-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", + "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "requires": { + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" + } + }, + "lodash": { + "version": "4.17.15", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz", + "integrity": "sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==" + }, + "lodash._reinterpolate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/lodash._reinterpolate/-/lodash._reinterpolate-3.0.0.tgz", + "integrity": "sha1-DM8tiRZq8Ds2Y8eWU4t1rG4RTZ0=" + }, + "lodash.memoize": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz", + "integrity": "sha1-vMbEmkKihA7Zl/Mj6tpezRguC/4=" + }, + "lodash.sortby": { + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/lodash.sortby/-/lodash.sortby-4.7.0.tgz", + "integrity": "sha1-7dFMgk4sycHgsKG0K7UhBRakJDg=" + }, + "lodash.template": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.template/-/lodash.template-4.5.0.tgz", + "integrity": "sha512-84vYFxIkmidUiFxidA/KjjH9pAycqW+h980j7Fuz5qxRtO9pgB7MDFTdys1N7A5mcucRiDyEq4fusljItR1T/A==", + "requires": { + "lodash._reinterpolate": "^3.0.0", + "lodash.templatesettings": "^4.0.0" + } + }, + "lodash.templatesettings": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/lodash.templatesettings/-/lodash.templatesettings-4.2.0.tgz", + "integrity": "sha512-stgLz+i3Aa9mZgnjr/O+v9ruKZsPsndy7qPZOchbqk2cnTU1ZaldKK+v7m54WoKIyxiuMZTKT2H81F8BeAc3ZQ==", + "requires": { + "lodash._reinterpolate": "^3.0.0" + } + }, + "lodash.uniq": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.5.0.tgz", + "integrity": "sha1-0CJTc662Uq3BvILklFM5qEJ1R3M=" + }, + "loglevel": { + "version": "1.6.8", + "resolved": "https://registry.npmjs.org/loglevel/-/loglevel-1.6.8.tgz", + "integrity": "sha512-bsU7+gc9AJ2SqpzxwU3+1fedl8zAntbtC5XYlt3s2j1hJcn2PsXSmgN8TaLG/J1/2mod4+cE/3vNL70/c1RNCA==" + }, + "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==", + "requires": { + "js-tokens": "^3.0.0 || ^4.0.0" + } + }, + "lower-case": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-2.0.1.tgz", + "integrity": "sha512-LiWgfDLLb1dwbFQZsSglpRj+1ctGnayXz3Uv0/WO8n558JycT5fg6zkNcnW0G68Nn0aEldTFeEfmjCfmqry/rQ==", + "requires": { + "tslib": "^1.10.0" + } + }, + "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==", + "requires": { + "yallist": "^3.0.2" + }, + "dependencies": { + "yallist": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==" + } + } + }, + "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==", + "requires": { + "pify": "^4.0.1", + "semver": "^5.6.0" + }, + "dependencies": { + "pify": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", + "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==" + }, + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==" + } + } + }, + "makeerror": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/makeerror/-/makeerror-1.0.11.tgz", + "integrity": "sha1-4BpckQnyr3lmDk6LlYd5AYT1qWw=", + "requires": { + "tmpl": "1.0.x" + } + }, + "mamacro": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/mamacro/-/mamacro-0.0.3.tgz", + "integrity": "sha512-qMEwh+UujcQ+kbz3T6V+wAmO2U8veoq2w+3wY8MquqwVA3jChfwY+Tk52GZKDfACEPjuZ7r2oJLejwpt8jtwTA==" + }, + "map-age-cleaner": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/map-age-cleaner/-/map-age-cleaner-0.1.3.tgz", + "integrity": "sha512-bJzx6nMoP6PDLPBFmg7+xRKeFZvFboMrGlxmNj9ClvX53KrmvM5bXFXEWjbz4cz1AFn+jWJ9z/DJSz7hrs0w3w==", + "requires": { + "p-defer": "^1.0.0" + } + }, + "map-cache": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz", + "integrity": "sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=" + }, + "map-visit": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz", + "integrity": "sha1-7Nyo8TFE5mDxtb1B8S80edmN+48=", + "requires": { + "object-visit": "^1.0.0" + } + }, + "md5.js": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/md5.js/-/md5.js-1.3.5.tgz", + "integrity": "sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg==", + "requires": { + "hash-base": "^3.0.0", + "inherits": "^2.0.1", + "safe-buffer": "^5.1.2" + } + }, + "mdn-data": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.4.tgz", + "integrity": "sha512-iV3XNKw06j5Q7mi6h+9vbx23Tv7JkjEVgKHW4pimwyDGWm0OIQntJJ+u1C6mg6mK1EaTv42XQ7w76yuzH7M2cA==" + }, + "media-typer": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", + "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=" + }, + "mem": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/mem/-/mem-4.3.0.tgz", + "integrity": "sha512-qX2bG48pTqYRVmDB37rn/6PT7LcR8T7oAX3bf99u1Tt1nzxYfxkgqDwUwolPlXweM0XzBOBFzSx4kfp7KP1s/w==", + "requires": { + "map-age-cleaner": "^0.1.1", + "mimic-fn": "^2.0.0", + "p-is-promise": "^2.0.0" + } + }, + "memory-fs": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.4.1.tgz", + "integrity": "sha1-OpoguEYlI+RHz7x+i7gO1me/xVI=", + "requires": { + "errno": "^0.1.3", + "readable-stream": "^2.0.1" + }, + "dependencies": { + "readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "requires": { + "safe-buffer": "~5.1.0" + } + } + } + }, + "merge-deep": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/merge-deep/-/merge-deep-3.0.2.tgz", + "integrity": "sha512-T7qC8kg4Zoti1cFd8Cr0M+qaZfOwjlPDEdZIIPPB2JZctjaPM4fX+i7HOId69tAti2fvO6X5ldfYUONDODsrkA==", + "requires": { + "arr-union": "^3.1.0", + "clone-deep": "^0.2.4", + "kind-of": "^3.0.2" + } + }, + "merge-descriptors": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", + "integrity": "sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E=" + }, + "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==" + }, + "merge2": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==" + }, + "methods": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", + "integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=" + }, + "microevent.ts": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/microevent.ts/-/microevent.ts-0.1.1.tgz", + "integrity": "sha512-jo1OfR4TaEwd5HOrt5+tAZ9mqT4jmpNAusXtyfNzqVm9uiSYFZlKM1wYL4oU7azZW/PxQW53wM0S6OR1JHNa2g==" + }, + "micromatch": { + "version": "3.1.10", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", + "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", + "requires": { + "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" + }, + "dependencies": { + "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==" + } + } + }, + "miller-rabin": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/miller-rabin/-/miller-rabin-4.0.1.tgz", + "integrity": "sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA==", + "requires": { + "bn.js": "^4.0.0", + "brorand": "^1.0.1" + }, + "dependencies": { + "bn.js": { + "version": "4.11.9", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.9.tgz", + "integrity": "sha512-E6QoYqCKZfgatHTdHzs1RRKP7ip4vvm+EyRUeE2RF0NblwVvb0p6jSVeNTOFxPn26QXN2o6SMfNxKp6kU8zQaw==" + } + } + }, + "mime": { + "version": "2.4.6", + "resolved": "https://registry.npmjs.org/mime/-/mime-2.4.6.tgz", + "integrity": "sha512-RZKhC3EmpBchfTGBVb8fb+RL2cWyw/32lshnsETttkBAyAUXSGHxbEJWWRXc751DrIxG1q04b8QwMbAwkRPpUA==" + }, + "mime-db": { + "version": "1.44.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.44.0.tgz", + "integrity": "sha512-/NOTfLrsPBVeH7YtFPgsVWveuL+4SjjYxaQ1xtM1KMFj7HdxlBlxeyNLzhyJVx7r4rZGJAZ/6lkKCitSc/Nmpg==" + }, + "mime-types": { + "version": "2.1.27", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.27.tgz", + "integrity": "sha512-JIhqnCasI9yD+SsmkquHBxTSEuZdQX5BuQnS2Vc7puQQQ+8yiP5AY5uWhpdv4YL4VM5c6iliiYWPgJ/nJQLp7w==", + "requires": { + "mime-db": "1.44.0" + } + }, + "mimic-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==" + }, + "min-indent": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/min-indent/-/min-indent-1.0.1.tgz", + "integrity": "sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==" + }, + "mini-css-extract-plugin": { + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/mini-css-extract-plugin/-/mini-css-extract-plugin-0.9.0.tgz", + "integrity": "sha512-lp3GeY7ygcgAmVIcRPBVhIkf8Us7FZjA+ILpal44qLdSu11wmjKQ3d9k15lfD7pO4esu9eUIAW7qiYIBppv40A==", + "requires": { + "loader-utils": "^1.1.0", + "normalize-url": "1.9.1", + "schema-utils": "^1.0.0", + "webpack-sources": "^1.1.0" + }, + "dependencies": { + "schema-utils": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz", + "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==", + "requires": { + "ajv": "^6.1.0", + "ajv-errors": "^1.0.0", + "ajv-keywords": "^3.1.0" + } + } + } + }, + "minimalistic-assert": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", + "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==" + }, + "minimalistic-crypto-utils": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz", + "integrity": "sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo=" + }, + "minimatch": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "minimist": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", + "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==" + }, + "minipass": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.1.3.tgz", + "integrity": "sha512-Mgd2GdMVzY+x3IJ+oHnVM+KG3lA5c8tnabyJKmHSaG2kAGpudxuOf8ToDkhumF7UzME7DecbQE9uOZhNm7PuJg==", + "requires": { + "yallist": "^4.0.0" + } + }, + "minipass-collect": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/minipass-collect/-/minipass-collect-1.0.2.tgz", + "integrity": "sha512-6T6lH0H8OG9kITm/Jm6tdooIbogG9e0tLgpY6mphXSm/A9u8Nq1ryBG+Qspiub9LjWlBPsPS3tWQ/Botq4FdxA==", + "requires": { + "minipass": "^3.0.0" + } + }, + "minipass-flush": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/minipass-flush/-/minipass-flush-1.0.5.tgz", + "integrity": "sha512-JmQSYYpPUqX5Jyn1mXaRwOda1uQ8HP5KAT/oDSLCzt1BYRhQU0/hDtsB1ufZfEEzMZ9aAVmsBw8+FWsIXlClWw==", + "requires": { + "minipass": "^3.0.0" + } + }, + "minipass-pipeline": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/minipass-pipeline/-/minipass-pipeline-1.2.3.tgz", + "integrity": "sha512-cFOknTvng5vqnwOpDsZTWhNll6Jf8o2x+/diplafmxpuIymAjzoOolZG0VvQf3V2HgqzJNhnuKHYp2BqDgz8IQ==", + "requires": { + "minipass": "^3.0.0" + } + }, + "mississippi": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/mississippi/-/mississippi-3.0.0.tgz", + "integrity": "sha512-x471SsVjUtBRtcvd4BzKE9kFC+/2TeWgKCgw0bZcw1b9l2X3QX5vCWgF+KaZaYm87Ss//rHnWryupDrgLvmSkA==", + "requires": { + "concat-stream": "^1.5.0", + "duplexify": "^3.4.2", + "end-of-stream": "^1.1.0", + "flush-write-stream": "^1.0.0", + "from2": "^2.1.0", + "parallel-transform": "^1.1.0", + "pump": "^3.0.0", + "pumpify": "^1.3.3", + "stream-each": "^1.1.0", + "through2": "^2.0.0" + } + }, + "mixin-deep": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.2.tgz", + "integrity": "sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA==", + "requires": { + "for-in": "^1.0.2", + "is-extendable": "^1.0.1" + }, + "dependencies": { + "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==", + "requires": { + "is-plain-object": "^2.0.4" + } + } + } + }, + "mixin-object": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/mixin-object/-/mixin-object-2.0.1.tgz", + "integrity": "sha1-T7lJRB2rGCVA8f4DW6YOGUel5X4=", + "requires": { + "for-in": "^0.1.3", + "is-extendable": "^0.1.1" + }, + "dependencies": { + "for-in": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/for-in/-/for-in-0.1.8.tgz", + "integrity": "sha1-2Hc5COMSVhCZUrH9ubP6hn0ndeE=" + } + } + }, + "mkdirp": { + "version": "0.5.5", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", + "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==", + "requires": { + "minimist": "^1.2.5" + } + }, + "move-concurrently": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/move-concurrently/-/move-concurrently-1.0.1.tgz", + "integrity": "sha1-viwAX9oy4LKa8fBdfEszIUxwH5I=", + "requires": { + "aproba": "^1.1.1", + "copy-concurrently": "^1.0.0", + "fs-write-stream-atomic": "^1.0.8", + "mkdirp": "^0.5.1", + "rimraf": "^2.5.4", + "run-queue": "^1.0.3" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + }, + "multicast-dns": { + "version": "6.2.3", + "resolved": "https://registry.npmjs.org/multicast-dns/-/multicast-dns-6.2.3.tgz", + "integrity": "sha512-ji6J5enbMyGRHIAkAOu3WdV8nggqviKCEKtXcOqfphZZtQrmHKycfynJ2V7eVPUA4NhJ6V7Wf4TmGbTwKE9B6g==", + "requires": { + "dns-packet": "^1.3.1", + "thunky": "^1.0.2" + } + }, + "multicast-dns-service-types": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/multicast-dns-service-types/-/multicast-dns-service-types-1.1.0.tgz", + "integrity": "sha1-iZ8R2WhuXgXLkbNdXw5jt3PPyQE=" + }, + "mute-stream": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.8.tgz", + "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==" + }, + "nanomatch": { + "version": "1.2.13", + "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.13.tgz", + "integrity": "sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==", + "requires": { + "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" + }, + "dependencies": { + "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==" + } + } + }, + "natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=" + }, + "negotiator": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.2.tgz", + "integrity": "sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw==" + }, + "neo-async": { + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.1.tgz", + "integrity": "sha512-iyam8fBuCUpWeKPGpaNMetEocMt364qkCsfL9JuhjXX6dRnguRVOfk2GZaDpPjcOKiiXCPINZC1GczQ7iTq3Zw==" + }, + "next-tick": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/next-tick/-/next-tick-1.0.0.tgz", + "integrity": "sha1-yobR/ogoFpsBICCOPchCS524NCw=" + }, + "nice-try": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz", + "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==" + }, + "no-case": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/no-case/-/no-case-3.0.3.tgz", + "integrity": "sha512-ehY/mVQCf9BL0gKfsJBvFJen+1V//U+0HQMPrWct40ixE4jnv0bfvxDbWtAHL9EcaPEOJHVVYKoQn1TlZUB8Tw==", + "requires": { + "lower-case": "^2.0.1", + "tslib": "^1.10.0" + } + }, + "node-forge": { + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-0.9.0.tgz", + "integrity": "sha512-7ASaDa3pD+lJ3WvXFsxekJQelBKRpne+GOVbLbtHYdd7pFspyeuJHnWfLplGf3SwKGbfs/aYl5V/JCIaHVUKKQ==" + }, + "node-int64": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz", + "integrity": "sha1-h6kGXNs1XTGC2PlM4RGIuCXGijs=" + }, + "node-libs-browser": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/node-libs-browser/-/node-libs-browser-2.2.1.tgz", + "integrity": "sha512-h/zcD8H9kaDZ9ALUWwlBUDo6TKF8a7qBSCSEGfjTVIYeqsioSKaAX+BN7NgiMGp6iSIXZ3PxgCu8KS3b71YK5Q==", + "requires": { + "assert": "^1.1.1", + "browserify-zlib": "^0.2.0", + "buffer": "^4.3.0", + "console-browserify": "^1.1.0", + "constants-browserify": "^1.0.0", + "crypto-browserify": "^3.11.0", + "domain-browser": "^1.1.1", + "events": "^3.0.0", + "https-browserify": "^1.0.0", + "os-browserify": "^0.3.0", + "path-browserify": "0.0.1", + "process": "^0.11.10", + "punycode": "^1.2.4", + "querystring-es3": "^0.2.0", + "readable-stream": "^2.3.3", + "stream-browserify": "^2.0.1", + "stream-http": "^2.7.2", + "string_decoder": "^1.0.0", + "timers-browserify": "^2.0.4", + "tty-browserify": "0.0.0", + "url": "^0.11.0", + "util": "^0.11.0", + "vm-browserify": "^1.0.1" + }, + "dependencies": { + "punycode": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", + "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=" + }, + "readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + }, + "dependencies": { + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "requires": { + "safe-buffer": "~5.1.0" + } + } + } + }, + "util": { + "version": "0.11.1", + "resolved": "https://registry.npmjs.org/util/-/util-0.11.1.tgz", + "integrity": "sha512-HShAsny+zS2TZfaXxD9tYj4HQGlBezXZMZuM/S5PKLLoZkShZiGk9o5CzukI1LVHZvjdvZ2Sj1aW/Ndn2NB/HQ==", + "requires": { + "inherits": "2.0.3" + }, + "dependencies": { + "inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=" + } + } + } + } + }, + "node-modules-regexp": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/node-modules-regexp/-/node-modules-regexp-1.0.0.tgz", + "integrity": "sha1-jZ2+KJZKSsVxLpExZCEHxx6Q7EA=" + }, + "node-notifier": { + "version": "5.4.3", + "resolved": "https://registry.npmjs.org/node-notifier/-/node-notifier-5.4.3.tgz", + "integrity": "sha512-M4UBGcs4jeOK9CjTsYwkvH6/MzuUmGCyTW+kCY7uO+1ZVr0+FHGdPdIf5CCLqAaxnRrWidyoQlNkMIIVwbKB8Q==", + "requires": { + "growly": "^1.3.0", + "is-wsl": "^1.1.0", + "semver": "^5.5.0", + "shellwords": "^0.1.1", + "which": "^1.3.0" + }, + "dependencies": { + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==" + } + } + }, + "node-releases": { + "version": "1.1.58", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.58.tgz", + "integrity": "sha512-NxBudgVKiRh/2aPWMgPR7bPTX0VPmGx5QBwCtdHitnqFE5/O8DeBXuIMH1nwNnw/aMo6AjOrpsHzfY3UbUJ7yg==" + }, + "normalize-package-data": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", + "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", + "requires": { + "hosted-git-info": "^2.1.4", + "resolve": "^1.10.0", + "semver": "2 || 3 || 4 || 5", + "validate-npm-package-license": "^3.0.1" + }, + "dependencies": { + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==" + } + } + }, + "normalize-path": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", + "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", + "requires": { + "remove-trailing-separator": "^1.0.1" + } + }, + "normalize-range": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz", + "integrity": "sha1-LRDAa9/TEuqXd2laTShDlFa3WUI=" + }, + "normalize-url": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-1.9.1.tgz", + "integrity": "sha1-LMDWazHqIwNkWENuNiDYWVTGbDw=", + "requires": { + "object-assign": "^4.0.1", + "prepend-http": "^1.0.0", + "query-string": "^4.1.0", + "sort-keys": "^1.0.0" + } + }, + "npm-run-path": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", + "integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=", + "requires": { + "path-key": "^2.0.0" + } + }, + "nth-check": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-1.0.2.tgz", + "integrity": "sha512-WeBOdju8SnzPN5vTUJYxYUxLeXpCaVP5i5e0LF8fg7WORF2Wd7wFX/pk0tYZk7s8T+J7VLy0Da6J1+wCT0AtHg==", + "requires": { + "boolbase": "~1.0.0" + } + }, + "num2fraction": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/num2fraction/-/num2fraction-1.2.2.tgz", + "integrity": "sha1-b2gragJ6Tp3fpFZM0lidHU5mnt4=" + }, + "number-is-nan": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", + "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=" + }, + "nwsapi": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.0.tgz", + "integrity": "sha512-h2AatdwYH+JHiZpv7pt/gSX1XoRGb7L/qSIeuqA6GwYoF9w1vP1cw42TO0aI2pNyshRK5893hNSl+1//vHK7hQ==" + }, + "oauth-sign": { + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz", + "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==" + }, + "object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=" + }, + "object-copy": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz", + "integrity": "sha1-fn2Fi3gb18mRpBupde04EnVOmYw=", + "requires": { + "copy-descriptor": "^0.1.0", + "define-property": "^0.2.5", + "kind-of": "^3.0.3" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "requires": { + "is-descriptor": "^0.1.0" + } + } + } + }, + "object-hash": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/object-hash/-/object-hash-2.0.3.tgz", + "integrity": "sha512-JPKn0GMu+Fa3zt3Bmr66JhokJU5BaNBIh4ZeTlaCBzrBsOeXzwcKKAK1tbLiPKgvwmPXsDvvLHoWh5Bm7ofIYg==" + }, + "object-inspect": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.8.0.tgz", + "integrity": "sha512-jLdtEOB112fORuypAyl/50VRVIBIdVQOSUUGQHzJ4xBSbit81zRarz7GThkEFZy1RceYrWYcPcBFPQwHyAc1gA==" + }, + "object-is": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/object-is/-/object-is-1.1.2.tgz", + "integrity": "sha512-5lHCz+0uufF6wZ7CRFWJN3hp8Jqblpgve06U5CMQ3f//6iDjPr2PEo9MWCjEssDsa+UZEL4PkFpr+BMop6aKzQ==", + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.5" + } + }, + "object-keys": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==" + }, + "object-path": { + "version": "0.11.4", + "resolved": "https://registry.npmjs.org/object-path/-/object-path-0.11.4.tgz", + "integrity": "sha1-NwrnUvvzfePqcKhhwju6iRVpGUk=" + }, + "object-visit": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz", + "integrity": "sha1-95xEk68MU3e1n+OdOV5BBC3QRbs=", + "requires": { + "isobject": "^3.0.0" + } + }, + "object.assign": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.0.tgz", + "integrity": "sha512-exHJeq6kBKj58mqGyTQ9DFvrZC/eR6OwxzoM9YRoGBqrXYonaFyGiFMuc9VZrXf7DarreEwMpurG3dd+CNyW5w==", + "requires": { + "define-properties": "^1.1.2", + "function-bind": "^1.1.1", + "has-symbols": "^1.0.0", + "object-keys": "^1.0.11" + } + }, + "object.entries": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.1.2.tgz", + "integrity": "sha512-BQdB9qKmb/HyNdMNWVr7O3+z5MUIx3aiegEIJqjMBbBf0YT9RRxTJSim4mzFqtyr7PDAHigq0N9dO0m0tRakQA==", + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.5", + "has": "^1.0.3" + } + }, + "object.fromentries": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.2.tgz", + "integrity": "sha512-r3ZiBH7MQppDJVLx6fhD618GKNG40CZYH9wgwdhKxBDDbQgjeWGGd4AtkZad84d291YxvWe7bJGuE65Anh0dxQ==", + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.0-next.1", + "function-bind": "^1.1.1", + "has": "^1.0.3" + } + }, + "object.getownpropertydescriptors": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.0.tgz", + "integrity": "sha512-Z53Oah9A3TdLoblT7VKJaTDdXdT+lQO+cNpKVnya5JDe9uLvzu1YyY1yFDFrcxrlRgWrEFH0jJtD/IbuwjcEVg==", + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.0-next.1" + } + }, + "object.pick": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz", + "integrity": "sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c=", + "requires": { + "isobject": "^3.0.1" + } + }, + "object.values": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.1.tgz", + "integrity": "sha512-WTa54g2K8iu0kmS/us18jEmdv1a4Wi//BZ/DTVYEcH0XhLM5NYdpDHja3gt57VrZLcNAO2WGA+KpWsDBaHt6eA==", + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.0-next.1", + "function-bind": "^1.1.1", + "has": "^1.0.3" + } + }, + "obuf": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/obuf/-/obuf-1.1.2.tgz", + "integrity": "sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg==" + }, + "on-finished": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", + "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=", + "requires": { + "ee-first": "1.1.1" + } + }, + "on-headers": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.2.tgz", + "integrity": "sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==" + }, + "once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "requires": { + "wrappy": "1" + } + }, + "onetime": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.0.tgz", + "integrity": "sha512-5NcSkPHhwTVFIQN+TUqXoS5+dlElHXdpAWu9I0HP20YOtIi+aZ0Ct82jdlILDxjLEAWwvm+qj1m6aEtsDVmm6Q==", + "requires": { + "mimic-fn": "^2.1.0" + } + }, + "open": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/open/-/open-7.0.4.tgz", + "integrity": "sha512-brSA+/yq+b08Hsr4c8fsEW2CRzk1BmfN3SAK/5VCHQ9bdoZJ4qa/+AfR0xHjlbbZUyPkUHs1b8x1RqdyZdkVqQ==", + "requires": { + "is-docker": "^2.0.0", + "is-wsl": "^2.1.1" + }, + "dependencies": { + "is-wsl": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", + "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==", + "requires": { + "is-docker": "^2.0.0" + } + } + } + }, + "opn": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/opn/-/opn-5.5.0.tgz", + "integrity": "sha512-PqHpggC9bLV0VeWcdKhkpxY+3JTzetLSqTCWL/z/tFIbI6G8JCjondXklT1JinczLz2Xib62sSp0T/gKT4KksA==", + "requires": { + "is-wsl": "^1.1.0" + } + }, + "optimize-css-assets-webpack-plugin": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/optimize-css-assets-webpack-plugin/-/optimize-css-assets-webpack-plugin-5.0.3.tgz", + "integrity": "sha512-q9fbvCRS6EYtUKKSwI87qm2IxlyJK5b4dygW1rKUBT6mMDhdG5e5bZT63v6tnJR9F9FB/H5a0HTmtw+laUBxKA==", + "requires": { + "cssnano": "^4.1.10", + "last-call-webpack-plugin": "^3.0.0" + } + }, + "optionator": { + "version": "0.8.3", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz", + "integrity": "sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==", + "requires": { + "deep-is": "~0.1.3", + "fast-levenshtein": "~2.0.6", + "levn": "~0.3.0", + "prelude-ls": "~1.1.2", + "type-check": "~0.3.2", + "word-wrap": "~1.2.3" + } + }, + "original": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/original/-/original-1.0.2.tgz", + "integrity": "sha512-hyBVl6iqqUOJ8FqRe+l/gS8H+kKYjrEndd5Pm1MfBtsEKA038HkkdbAl/72EAXGyonD/PFsvmVG+EvcIpliMBg==", + "requires": { + "url-parse": "^1.4.3" + } + }, + "os-browserify": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/os-browserify/-/os-browserify-0.3.0.tgz", + "integrity": "sha1-hUNzx/XCMVkU/Jv8a9gjj92h7Cc=" + }, + "os-locale": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-3.1.0.tgz", + "integrity": "sha512-Z8l3R4wYWM40/52Z+S265okfFj8Kt2cC2MKY+xNi3kFs+XGI7WXu/I309QQQYbRW4ijiZ+yxs9pqEhJh0DqW3Q==", + "requires": { + "execa": "^1.0.0", + "lcid": "^2.0.0", + "mem": "^4.0.0" + } + }, + "os-tmpdir": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", + "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=" + }, + "p-defer": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-defer/-/p-defer-1.0.0.tgz", + "integrity": "sha1-n26xgvbJqozXQwBKfU+WsZaw+ww=" + }, + "p-each-series": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-each-series/-/p-each-series-1.0.0.tgz", + "integrity": "sha1-kw89Et0fUOdDRFeiLNbwSsatf3E=", + "requires": { + "p-reduce": "^1.0.0" + } + }, + "p-finally": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", + "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=" + }, + "p-is-promise": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/p-is-promise/-/p-is-promise-2.1.0.tgz", + "integrity": "sha512-Y3W0wlRPK8ZMRbNq97l4M5otioeA5lm1z7bkNkxCka8HSPjR0xRWmpCmc9utiaLP9Jb1eD8BgeIxTW4AIF45Pg==" + }, + "p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "requires": { + "p-try": "^2.0.0" + } + }, + "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==", + "requires": { + "p-limit": "^2.0.0" + } + }, + "p-map": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-3.0.0.tgz", + "integrity": "sha512-d3qXVTF/s+W+CdJ5A29wywV2n8CQQYahlgz2bFiA+4eVNJbHJodPZ+/gXwPGh0bOqA+j8S+6+ckmvLGPk1QpxQ==", + "requires": { + "aggregate-error": "^3.0.0" + } + }, + "p-reduce": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-reduce/-/p-reduce-1.0.0.tgz", + "integrity": "sha1-GMKw3ZNqRpClKfgjH1ig/bakffo=" + }, + "p-retry": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/p-retry/-/p-retry-3.0.1.tgz", + "integrity": "sha512-XE6G4+YTTkT2a0UWb2kjZe8xNwf8bIbnqpc/IS/idOBVhyves0mK5OJgeocjx7q5pvX/6m23xuzVPYT1uGM73w==", + "requires": { + "retry": "^0.12.0" + } + }, + "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==" + }, + "pako": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz", + "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==" + }, + "parallel-transform": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/parallel-transform/-/parallel-transform-1.2.0.tgz", + "integrity": "sha512-P2vSmIu38uIlvdcU7fDkyrxj33gTUy/ABO5ZUbGowxNCopBq/OoD42bP4UmMrJoPyk4Uqf0mu3mtWBhHCZD8yg==", + "requires": { + "cyclist": "^1.0.1", + "inherits": "^2.0.3", + "readable-stream": "^2.1.5" + }, + "dependencies": { + "readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "requires": { + "safe-buffer": "~5.1.0" + } + } + } + }, + "param-case": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/param-case/-/param-case-3.0.3.tgz", + "integrity": "sha512-VWBVyimc1+QrzappRs7waeN2YmoZFCGXWASRYX1/rGHtXqEcrGEIDm+jqIwFa2fRXNgQEwrxaYuIrX0WcAguTA==", + "requires": { + "dot-case": "^3.0.3", + "tslib": "^1.10.0" + } + }, + "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==", + "requires": { + "callsites": "^3.0.0" + }, + "dependencies": { + "callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==" + } + } + }, + "parse-asn1": { + "version": "5.1.5", + "resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.5.tgz", + "integrity": "sha512-jkMYn1dcJqF6d5CpU689bq7w/b5ALS9ROVSpQDPrZsqqesUJii9qutvoT5ltGedNXMO2e16YUWIghG9KxaViTQ==", + "requires": { + "asn1.js": "^4.0.0", + "browserify-aes": "^1.0.0", + "create-hash": "^1.1.0", + "evp_bytestokey": "^1.0.0", + "pbkdf2": "^3.0.3", + "safe-buffer": "^5.1.1" + } + }, + "parse-json": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", + "integrity": "sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=", + "requires": { + "error-ex": "^1.3.1", + "json-parse-better-errors": "^1.0.1" + } + }, + "parse5": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-4.0.0.tgz", + "integrity": "sha512-VrZ7eOd3T1Fk4XWNXMgiGBK/z0MG48BWG2uQNU4I72fkQuKUTZpl+u9k+CxEG0twMVzSmXEEz12z5Fnw1jIQFA==" + }, + "parseurl": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", + "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==" + }, + "pascal-case": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/pascal-case/-/pascal-case-3.1.1.tgz", + "integrity": "sha512-XIeHKqIrsquVTQL2crjq3NfJUxmdLasn3TYOU0VBM+UX2a6ztAWBlJQBePLGY7VHW8+2dRadeIPK5+KImwTxQA==", + "requires": { + "no-case": "^3.0.3", + "tslib": "^1.10.0" + } + }, + "pascalcase": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz", + "integrity": "sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ=" + }, + "path-browserify": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-0.0.1.tgz", + "integrity": "sha512-BapA40NHICOS+USX9SN4tyhq+A2RrN/Ws5F0Z5aMHDp98Fl86lX8Oti8B7uN93L4Ifv4fHOEA+pQw87gmMO/lQ==" + }, + "path-dirname": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/path-dirname/-/path-dirname-1.0.2.tgz", + "integrity": "sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA=" + }, + "path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=" + }, + "path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=" + }, + "path-is-inside": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/path-is-inside/-/path-is-inside-1.0.2.tgz", + "integrity": "sha1-NlQX3t5EQw0cEa9hAn+s8HS9/FM=" + }, + "path-key": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", + "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=" + }, + "path-parse": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz", + "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==" + }, + "path-to-regexp": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", + "integrity": "sha1-32BBeABfUi8V60SQ5yR6G/qmf4w=" + }, + "path-type": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz", + "integrity": "sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==", + "requires": { + "pify": "^3.0.0" + } + }, + "pbkdf2": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.1.1.tgz", + "integrity": "sha512-4Ejy1OPxi9f2tt1rRV7Go7zmfDQ+ZectEQz3VGUQhgq62HtIRPDyG/JtnwIxs6x3uNMwo2V7q1fMvKjb+Tnpqg==", + "requires": { + "create-hash": "^1.1.2", + "create-hmac": "^1.1.4", + "ripemd160": "^2.0.1", + "safe-buffer": "^5.0.1", + "sha.js": "^2.4.8" + } + }, + "performance-now": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", + "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=" + }, + "picomatch": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.2.2.tgz", + "integrity": "sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg==" + }, + "pify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=" + }, + "pinkie": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", + "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=" + }, + "pinkie-promise": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", + "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=", + "requires": { + "pinkie": "^2.0.0" + } + }, + "pirates": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.1.tgz", + "integrity": "sha512-WuNqLTbMI3tmfef2TKxlQmAiLHKtFhlsCZnPIpuv2Ow0RDVO8lfy1Opf4NUzlMXLjPl+Men7AuVdX6TA+s+uGA==", + "requires": { + "node-modules-regexp": "^1.0.0" + } + }, + "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==", + "requires": { + "find-up": "^3.0.0" + } + }, + "pkg-up": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/pkg-up/-/pkg-up-3.1.0.tgz", + "integrity": "sha512-nDywThFk1i4BQK4twPQ6TA4RT8bDY96yeuCVBWL3ePARCiEKDRSrNGbFIgUJpLp+XeIR65v8ra7WuJOFUBtkMA==", + "requires": { + "find-up": "^3.0.0" + } + }, + "pn": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/pn/-/pn-1.1.0.tgz", + "integrity": "sha512-2qHaIQr2VLRFoxe2nASzsV6ef4yOOH+Fi9FBOVH6cqeSgUnoyySPZkxzLuzd+RYOQTRpROA0ztTMqxROKSb/nA==" + }, + "pnp-webpack-plugin": { + "version": "1.6.4", + "resolved": "https://registry.npmjs.org/pnp-webpack-plugin/-/pnp-webpack-plugin-1.6.4.tgz", + "integrity": "sha512-7Wjy+9E3WwLOEL30D+m8TSTF7qJJUJLONBnwQp0518siuMxUQUbgZwssaFX+QKlZkjHZcw/IpZCt/H0srrntSg==", + "requires": { + "ts-pnp": "^1.1.6" + } + }, + "popper.js": { + "version": "1.16.1-lts", + "resolved": "https://registry.npmjs.org/popper.js/-/popper.js-1.16.1-lts.tgz", + "integrity": "sha512-Kjw8nKRl1m+VrSFCoVGPph93W/qrSO7ZkqPpTf7F4bk/sqcfWK019dWBUpE/fBOsOQY1dks/Bmcbfn1heM/IsA==" + }, + "portfinder": { + "version": "1.0.26", + "resolved": "https://registry.npmjs.org/portfinder/-/portfinder-1.0.26.tgz", + "integrity": "sha512-Xi7mKxJHHMI3rIUrnm/jjUgwhbYMkp/XKEcZX3aG4BrumLpq3nmoQMX+ClYnDZnZ/New7IatC1no5RX0zo1vXQ==", + "requires": { + "async": "^2.6.2", + "debug": "^3.1.1", + "mkdirp": "^0.5.1" + }, + "dependencies": { + "debug": { + "version": "3.2.6", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", + "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", + "requires": { + "ms": "^2.1.1" + } + } + } + }, + "posix-character-classes": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz", + "integrity": "sha1-AerA/jta9xoqbAL+q7jB/vfgDqs=" + }, + "postcss": { + "version": "7.0.32", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.32.tgz", + "integrity": "sha512-03eXong5NLnNCD05xscnGKGDZ98CyzoqPSMjOe6SuoQY7Z2hIj0Ld1g/O/UQRuOle2aRtiIRDg9tDcTGAkLfKw==", + "requires": { + "chalk": "^2.4.2", + "source-map": "^0.6.1", + "supports-color": "^6.1.0" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" + }, + "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==", + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "postcss-attribute-case-insensitive": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-attribute-case-insensitive/-/postcss-attribute-case-insensitive-4.0.2.tgz", + "integrity": "sha512-clkFxk/9pcdb4Vkn0hAHq3YnxBQ2p0CGD1dy24jN+reBck+EWxMbxSUqN4Yj7t0w8csl87K6p0gxBe1utkJsYA==", + "requires": { + "postcss": "^7.0.2", + "postcss-selector-parser": "^6.0.2" + } + }, + "postcss-browser-comments": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/postcss-browser-comments/-/postcss-browser-comments-3.0.0.tgz", + "integrity": "sha512-qfVjLfq7HFd2e0HW4s1dvU8X080OZdG46fFbIBFjW7US7YPDcWfRvdElvwMJr2LI6hMmD+7LnH2HcmXTs+uOig==", + "requires": { + "postcss": "^7" + } + }, + "postcss-calc": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/postcss-calc/-/postcss-calc-7.0.2.tgz", + "integrity": "sha512-rofZFHUg6ZIrvRwPeFktv06GdbDYLcGqh9EwiMutZg+a0oePCCw1zHOEiji6LCpyRcjTREtPASuUqeAvYlEVvQ==", + "requires": { + "postcss": "^7.0.27", + "postcss-selector-parser": "^6.0.2", + "postcss-value-parser": "^4.0.2" + } + }, + "postcss-color-functional-notation": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/postcss-color-functional-notation/-/postcss-color-functional-notation-2.0.1.tgz", + "integrity": "sha512-ZBARCypjEDofW4P6IdPVTLhDNXPRn8T2s1zHbZidW6rPaaZvcnCS2soYFIQJrMZSxiePJ2XIYTlcb2ztr/eT2g==", + "requires": { + "postcss": "^7.0.2", + "postcss-values-parser": "^2.0.0" + } + }, + "postcss-color-gray": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/postcss-color-gray/-/postcss-color-gray-5.0.0.tgz", + "integrity": "sha512-q6BuRnAGKM/ZRpfDascZlIZPjvwsRye7UDNalqVz3s7GDxMtqPY6+Q871liNxsonUw8oC61OG+PSaysYpl1bnw==", + "requires": { + "@csstools/convert-colors": "^1.4.0", + "postcss": "^7.0.5", + "postcss-values-parser": "^2.0.0" + } + }, + "postcss-color-hex-alpha": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/postcss-color-hex-alpha/-/postcss-color-hex-alpha-5.0.3.tgz", + "integrity": "sha512-PF4GDel8q3kkreVXKLAGNpHKilXsZ6xuu+mOQMHWHLPNyjiUBOr75sp5ZKJfmv1MCus5/DWUGcK9hm6qHEnXYw==", + "requires": { + "postcss": "^7.0.14", + "postcss-values-parser": "^2.0.1" + } + }, + "postcss-color-mod-function": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/postcss-color-mod-function/-/postcss-color-mod-function-3.0.3.tgz", + "integrity": "sha512-YP4VG+xufxaVtzV6ZmhEtc+/aTXH3d0JLpnYfxqTvwZPbJhWqp8bSY3nfNzNRFLgB4XSaBA82OE4VjOOKpCdVQ==", + "requires": { + "@csstools/convert-colors": "^1.4.0", + "postcss": "^7.0.2", + "postcss-values-parser": "^2.0.0" + } + }, + "postcss-color-rebeccapurple": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/postcss-color-rebeccapurple/-/postcss-color-rebeccapurple-4.0.1.tgz", + "integrity": "sha512-aAe3OhkS6qJXBbqzvZth2Au4V3KieR5sRQ4ptb2b2O8wgvB3SJBsdG+jsn2BZbbwekDG8nTfcCNKcSfe/lEy8g==", + "requires": { + "postcss": "^7.0.2", + "postcss-values-parser": "^2.0.0" + } + }, + "postcss-colormin": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/postcss-colormin/-/postcss-colormin-4.0.3.tgz", + "integrity": "sha512-WyQFAdDZpExQh32j0U0feWisZ0dmOtPl44qYmJKkq9xFWY3p+4qnRzCHeNrkeRhwPHz9bQ3mo0/yVkaply0MNw==", + "requires": { + "browserslist": "^4.0.0", + "color": "^3.0.0", + "has": "^1.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "dependencies": { + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==" + } + } + }, + "postcss-convert-values": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/postcss-convert-values/-/postcss-convert-values-4.0.1.tgz", + "integrity": "sha512-Kisdo1y77KUC0Jmn0OXU/COOJbzM8cImvw1ZFsBgBgMgb1iL23Zs/LXRe3r+EZqM3vGYKdQ2YJVQ5VkJI+zEJQ==", + "requires": { + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "dependencies": { + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==" + } + } + }, + "postcss-custom-media": { + "version": "7.0.8", + "resolved": "https://registry.npmjs.org/postcss-custom-media/-/postcss-custom-media-7.0.8.tgz", + "integrity": "sha512-c9s5iX0Ge15o00HKbuRuTqNndsJUbaXdiNsksnVH8H4gdc+zbLzr/UasOwNG6CTDpLFekVY4672eWdiiWu2GUg==", + "requires": { + "postcss": "^7.0.14" + } + }, + "postcss-custom-properties": { + "version": "8.0.11", + "resolved": "https://registry.npmjs.org/postcss-custom-properties/-/postcss-custom-properties-8.0.11.tgz", + "integrity": "sha512-nm+o0eLdYqdnJ5abAJeXp4CEU1c1k+eB2yMCvhgzsds/e0umabFrN6HoTy/8Q4K5ilxERdl/JD1LO5ANoYBeMA==", + "requires": { + "postcss": "^7.0.17", + "postcss-values-parser": "^2.0.1" + } + }, + "postcss-custom-selectors": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/postcss-custom-selectors/-/postcss-custom-selectors-5.1.2.tgz", + "integrity": "sha512-DSGDhqinCqXqlS4R7KGxL1OSycd1lydugJ1ky4iRXPHdBRiozyMHrdu0H3o7qNOCiZwySZTUI5MV0T8QhCLu+w==", + "requires": { + "postcss": "^7.0.2", + "postcss-selector-parser": "^5.0.0-rc.3" + }, + "dependencies": { + "cssesc": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-2.0.0.tgz", + "integrity": "sha512-MsCAG1z9lPdoO/IUMLSBWBSVxVtJ1395VGIQ+Fc2gNdkQ1hNDnQdw3YhA71WJCBW1vdwA0cAnk/DnW6bqoEUYg==" + }, + "postcss-selector-parser": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-5.0.0.tgz", + "integrity": "sha512-w+zLE5Jhg6Liz8+rQOWEAwtwkyqpfnmsinXjXg6cY7YIONZZtgvE0v2O0uhQBs0peNomOJwWRKt6JBfTdTd3OQ==", + "requires": { + "cssesc": "^2.0.0", + "indexes-of": "^1.0.1", + "uniq": "^1.0.1" + } + } + } + }, + "postcss-dir-pseudo-class": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/postcss-dir-pseudo-class/-/postcss-dir-pseudo-class-5.0.0.tgz", + "integrity": "sha512-3pm4oq8HYWMZePJY+5ANriPs3P07q+LW6FAdTlkFH2XqDdP4HeeJYMOzn0HYLhRSjBO3fhiqSwwU9xEULSrPgw==", + "requires": { + "postcss": "^7.0.2", + "postcss-selector-parser": "^5.0.0-rc.3" + }, + "dependencies": { + "cssesc": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-2.0.0.tgz", + "integrity": "sha512-MsCAG1z9lPdoO/IUMLSBWBSVxVtJ1395VGIQ+Fc2gNdkQ1hNDnQdw3YhA71WJCBW1vdwA0cAnk/DnW6bqoEUYg==" + }, + "postcss-selector-parser": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-5.0.0.tgz", + "integrity": "sha512-w+zLE5Jhg6Liz8+rQOWEAwtwkyqpfnmsinXjXg6cY7YIONZZtgvE0v2O0uhQBs0peNomOJwWRKt6JBfTdTd3OQ==", + "requires": { + "cssesc": "^2.0.0", + "indexes-of": "^1.0.1", + "uniq": "^1.0.1" + } + } + } + }, + "postcss-discard-comments": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-discard-comments/-/postcss-discard-comments-4.0.2.tgz", + "integrity": "sha512-RJutN259iuRf3IW7GZyLM5Sw4GLTOH8FmsXBnv8Ab/Tc2k4SR4qbV4DNbyyY4+Sjo362SyDmW2DQ7lBSChrpkg==", + "requires": { + "postcss": "^7.0.0" + } + }, + "postcss-discard-duplicates": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-discard-duplicates/-/postcss-discard-duplicates-4.0.2.tgz", + "integrity": "sha512-ZNQfR1gPNAiXZhgENFfEglF93pciw0WxMkJeVmw8eF+JZBbMD7jp6C67GqJAXVZP2BWbOztKfbsdmMp/k8c6oQ==", + "requires": { + "postcss": "^7.0.0" + } + }, + "postcss-discard-empty": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/postcss-discard-empty/-/postcss-discard-empty-4.0.1.tgz", + "integrity": "sha512-B9miTzbznhDjTfjvipfHoqbWKwd0Mj+/fL5s1QOz06wufguil+Xheo4XpOnc4NqKYBCNqqEzgPv2aPBIJLox0w==", + "requires": { + "postcss": "^7.0.0" + } + }, + "postcss-discard-overridden": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/postcss-discard-overridden/-/postcss-discard-overridden-4.0.1.tgz", + "integrity": "sha512-IYY2bEDD7g1XM1IDEsUT4//iEYCxAmP5oDSFMVU/JVvT7gh+l4fmjciLqGgwjdWpQIdb0Che2VX00QObS5+cTg==", + "requires": { + "postcss": "^7.0.0" + } + }, + "postcss-double-position-gradients": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/postcss-double-position-gradients/-/postcss-double-position-gradients-1.0.0.tgz", + "integrity": "sha512-G+nV8EnQq25fOI8CH/B6krEohGWnF5+3A6H/+JEpOncu5dCnkS1QQ6+ct3Jkaepw1NGVqqOZH6lqrm244mCftA==", + "requires": { + "postcss": "^7.0.5", + "postcss-values-parser": "^2.0.0" + } + }, + "postcss-env-function": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/postcss-env-function/-/postcss-env-function-2.0.2.tgz", + "integrity": "sha512-rwac4BuZlITeUbiBq60h/xbLzXY43qOsIErngWa4l7Mt+RaSkT7QBjXVGTcBHupykkblHMDrBFh30zchYPaOUw==", + "requires": { + "postcss": "^7.0.2", + "postcss-values-parser": "^2.0.0" + } + }, + "postcss-flexbugs-fixes": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/postcss-flexbugs-fixes/-/postcss-flexbugs-fixes-4.1.0.tgz", + "integrity": "sha512-jr1LHxQvStNNAHlgco6PzY308zvLklh7SJVYuWUwyUQncofaAlD2l+P/gxKHOdqWKe7xJSkVLFF/2Tp+JqMSZA==", + "requires": { + "postcss": "^7.0.0" + } + }, + "postcss-focus-visible": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/postcss-focus-visible/-/postcss-focus-visible-4.0.0.tgz", + "integrity": "sha512-Z5CkWBw0+idJHSV6+Bgf2peDOFf/x4o+vX/pwcNYrWpXFrSfTkQ3JQ1ojrq9yS+upnAlNRHeg8uEwFTgorjI8g==", + "requires": { + "postcss": "^7.0.2" + } + }, + "postcss-focus-within": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/postcss-focus-within/-/postcss-focus-within-3.0.0.tgz", + "integrity": "sha512-W0APui8jQeBKbCGZudW37EeMCjDeVxKgiYfIIEo8Bdh5SpB9sxds/Iq8SEuzS0Q4YFOlG7EPFulbbxujpkrV2w==", + "requires": { + "postcss": "^7.0.2" + } + }, + "postcss-font-variant": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/postcss-font-variant/-/postcss-font-variant-4.0.0.tgz", + "integrity": "sha512-M8BFYKOvCrI2aITzDad7kWuXXTm0YhGdP9Q8HanmN4EF1Hmcgs1KK5rSHylt/lUJe8yLxiSwWAHdScoEiIxztg==", + "requires": { + "postcss": "^7.0.2" + } + }, + "postcss-gap-properties": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/postcss-gap-properties/-/postcss-gap-properties-2.0.0.tgz", + "integrity": "sha512-QZSqDaMgXCHuHTEzMsS2KfVDOq7ZFiknSpkrPJY6jmxbugUPTuSzs/vuE5I3zv0WAS+3vhrlqhijiprnuQfzmg==", + "requires": { + "postcss": "^7.0.2" + } + }, + "postcss-image-set-function": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/postcss-image-set-function/-/postcss-image-set-function-3.0.1.tgz", + "integrity": "sha512-oPTcFFip5LZy8Y/whto91L9xdRHCWEMs3e1MdJxhgt4jy2WYXfhkng59fH5qLXSCPN8k4n94p1Czrfe5IOkKUw==", + "requires": { + "postcss": "^7.0.2", + "postcss-values-parser": "^2.0.0" + } + }, + "postcss-initial": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/postcss-initial/-/postcss-initial-3.0.2.tgz", + "integrity": "sha512-ugA2wKonC0xeNHgirR4D3VWHs2JcU08WAi1KFLVcnb7IN89phID6Qtg2RIctWbnvp1TM2BOmDtX8GGLCKdR8YA==", + "requires": { + "lodash.template": "^4.5.0", + "postcss": "^7.0.2" + } + }, + "postcss-lab-function": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/postcss-lab-function/-/postcss-lab-function-2.0.1.tgz", + "integrity": "sha512-whLy1IeZKY+3fYdqQFuDBf8Auw+qFuVnChWjmxm/UhHWqNHZx+B99EwxTvGYmUBqe3Fjxs4L1BoZTJmPu6usVg==", + "requires": { + "@csstools/convert-colors": "^1.4.0", + "postcss": "^7.0.2", + "postcss-values-parser": "^2.0.0" + } + }, + "postcss-load-config": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-2.1.0.tgz", + "integrity": "sha512-4pV3JJVPLd5+RueiVVB+gFOAa7GWc25XQcMp86Zexzke69mKf6Nx9LRcQywdz7yZI9n1udOxmLuAwTBypypF8Q==", + "requires": { + "cosmiconfig": "^5.0.0", + "import-cwd": "^2.0.0" + } + }, + "postcss-loader": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/postcss-loader/-/postcss-loader-3.0.0.tgz", + "integrity": "sha512-cLWoDEY5OwHcAjDnkyRQzAXfs2jrKjXpO/HQFcc5b5u/r7aa471wdmChmwfnv7x2u840iat/wi0lQ5nbRgSkUA==", + "requires": { + "loader-utils": "^1.1.0", + "postcss": "^7.0.0", + "postcss-load-config": "^2.0.0", + "schema-utils": "^1.0.0" + }, + "dependencies": { + "schema-utils": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz", + "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==", + "requires": { + "ajv": "^6.1.0", + "ajv-errors": "^1.0.0", + "ajv-keywords": "^3.1.0" + } + } + } + }, + "postcss-logical": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/postcss-logical/-/postcss-logical-3.0.0.tgz", + "integrity": "sha512-1SUKdJc2vuMOmeItqGuNaC+N8MzBWFWEkAnRnLpFYj1tGGa7NqyVBujfRtgNa2gXR+6RkGUiB2O5Vmh7E2RmiA==", + "requires": { + "postcss": "^7.0.2" + } + }, + "postcss-media-minmax": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/postcss-media-minmax/-/postcss-media-minmax-4.0.0.tgz", + "integrity": "sha512-fo9moya6qyxsjbFAYl97qKO9gyre3qvbMnkOZeZwlsW6XYFsvs2DMGDlchVLfAd8LHPZDxivu/+qW2SMQeTHBw==", + "requires": { + "postcss": "^7.0.2" + } + }, + "postcss-merge-longhand": { + "version": "4.0.11", + "resolved": "https://registry.npmjs.org/postcss-merge-longhand/-/postcss-merge-longhand-4.0.11.tgz", + "integrity": "sha512-alx/zmoeXvJjp7L4mxEMjh8lxVlDFX1gqWHzaaQewwMZiVhLo42TEClKaeHbRf6J7j82ZOdTJ808RtN0ZOZwvw==", + "requires": { + "css-color-names": "0.0.4", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0", + "stylehacks": "^4.0.0" + }, + "dependencies": { + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==" + } + } + }, + "postcss-merge-rules": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/postcss-merge-rules/-/postcss-merge-rules-4.0.3.tgz", + "integrity": "sha512-U7e3r1SbvYzO0Jr3UT/zKBVgYYyhAz0aitvGIYOYK5CPmkNih+WDSsS5tvPrJ8YMQYlEMvsZIiqmn7HdFUaeEQ==", + "requires": { + "browserslist": "^4.0.0", + "caniuse-api": "^3.0.0", + "cssnano-util-same-parent": "^4.0.0", + "postcss": "^7.0.0", + "postcss-selector-parser": "^3.0.0", + "vendors": "^1.0.0" + }, + "dependencies": { + "postcss-selector-parser": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-3.1.2.tgz", + "integrity": "sha512-h7fJ/5uWuRVyOtkO45pnt1Ih40CEleeyCHzipqAZO2e5H20g25Y48uYnFUiShvY4rZWNJ/Bib/KVPmanaCtOhA==", + "requires": { + "dot-prop": "^5.2.0", + "indexes-of": "^1.0.1", + "uniq": "^1.0.1" + } + } + } + }, + "postcss-minify-font-values": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-minify-font-values/-/postcss-minify-font-values-4.0.2.tgz", + "integrity": "sha512-j85oO6OnRU9zPf04+PZv1LYIYOprWm6IA6zkXkrJXyRveDEuQggG6tvoy8ir8ZwjLxLuGfNkCZEQG7zan+Hbtg==", + "requires": { + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "dependencies": { + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==" + } + } + }, + "postcss-minify-gradients": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-minify-gradients/-/postcss-minify-gradients-4.0.2.tgz", + "integrity": "sha512-qKPfwlONdcf/AndP1U8SJ/uzIJtowHlMaSioKzebAXSG4iJthlWC9iSWznQcX4f66gIWX44RSA841HTHj3wK+Q==", + "requires": { + "cssnano-util-get-arguments": "^4.0.0", + "is-color-stop": "^1.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "dependencies": { + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==" + } + } + }, + "postcss-minify-params": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-minify-params/-/postcss-minify-params-4.0.2.tgz", + "integrity": "sha512-G7eWyzEx0xL4/wiBBJxJOz48zAKV2WG3iZOqVhPet/9geefm/Px5uo1fzlHu+DOjT+m0Mmiz3jkQzVHe6wxAWg==", + "requires": { + "alphanum-sort": "^1.0.0", + "browserslist": "^4.0.0", + "cssnano-util-get-arguments": "^4.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0", + "uniqs": "^2.0.0" + }, + "dependencies": { + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==" + } + } + }, + "postcss-minify-selectors": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-minify-selectors/-/postcss-minify-selectors-4.0.2.tgz", + "integrity": "sha512-D5S1iViljXBj9kflQo4YutWnJmwm8VvIsU1GeXJGiG9j8CIg9zs4voPMdQDUmIxetUOh60VilsNzCiAFTOqu3g==", + "requires": { + "alphanum-sort": "^1.0.0", + "has": "^1.0.0", + "postcss": "^7.0.0", + "postcss-selector-parser": "^3.0.0" + }, + "dependencies": { + "postcss-selector-parser": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-3.1.2.tgz", + "integrity": "sha512-h7fJ/5uWuRVyOtkO45pnt1Ih40CEleeyCHzipqAZO2e5H20g25Y48uYnFUiShvY4rZWNJ/Bib/KVPmanaCtOhA==", + "requires": { + "dot-prop": "^5.2.0", + "indexes-of": "^1.0.1", + "uniq": "^1.0.1" + } + } + } + }, + "postcss-modules-extract-imports": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/postcss-modules-extract-imports/-/postcss-modules-extract-imports-2.0.0.tgz", + "integrity": "sha512-LaYLDNS4SG8Q5WAWqIJgdHPJrDDr/Lv775rMBFUbgjTz6j34lUznACHcdRWroPvXANP2Vj7yNK57vp9eFqzLWQ==", + "requires": { + "postcss": "^7.0.5" + } + }, + "postcss-modules-local-by-default": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-3.0.2.tgz", + "integrity": "sha512-jM/V8eqM4oJ/22j0gx4jrp63GSvDH6v86OqyTHHUvk4/k1vceipZsaymiZ5PvocqZOl5SFHiFJqjs3la0wnfIQ==", + "requires": { + "icss-utils": "^4.1.1", + "postcss": "^7.0.16", + "postcss-selector-parser": "^6.0.2", + "postcss-value-parser": "^4.0.0" + } + }, + "postcss-modules-scope": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/postcss-modules-scope/-/postcss-modules-scope-2.2.0.tgz", + "integrity": "sha512-YyEgsTMRpNd+HmyC7H/mh3y+MeFWevy7V1evVhJWewmMbjDHIbZbOXICC2y+m1xI1UVfIT1HMW/O04Hxyu9oXQ==", + "requires": { + "postcss": "^7.0.6", + "postcss-selector-parser": "^6.0.0" + } + }, + "postcss-modules-values": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/postcss-modules-values/-/postcss-modules-values-3.0.0.tgz", + "integrity": "sha512-1//E5jCBrZ9DmRX+zCtmQtRSV6PV42Ix7Bzj9GbwJceduuf7IqP8MgeTXuRDHOWj2m0VzZD5+roFWDuU8RQjcg==", + "requires": { + "icss-utils": "^4.0.0", + "postcss": "^7.0.6" + } + }, + "postcss-nesting": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/postcss-nesting/-/postcss-nesting-7.0.1.tgz", + "integrity": "sha512-FrorPb0H3nuVq0Sff7W2rnc3SmIcruVC6YwpcS+k687VxyxO33iE1amna7wHuRVzM8vfiYofXSBHNAZ3QhLvYg==", + "requires": { + "postcss": "^7.0.2" + } + }, + "postcss-normalize": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/postcss-normalize/-/postcss-normalize-8.0.1.tgz", + "integrity": "sha512-rt9JMS/m9FHIRroDDBGSMsyW1c0fkvOJPy62ggxSHUldJO7B195TqFMqIf+lY5ezpDcYOV4j86aUp3/XbxzCCQ==", + "requires": { + "@csstools/normalize.css": "^10.1.0", + "browserslist": "^4.6.2", + "postcss": "^7.0.17", + "postcss-browser-comments": "^3.0.0", + "sanitize.css": "^10.0.0" + } + }, + "postcss-normalize-charset": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/postcss-normalize-charset/-/postcss-normalize-charset-4.0.1.tgz", + "integrity": "sha512-gMXCrrlWh6G27U0hF3vNvR3w8I1s2wOBILvA87iNXaPvSNo5uZAMYsZG7XjCUf1eVxuPfyL4TJ7++SGZLc9A3g==", + "requires": { + "postcss": "^7.0.0" + } + }, + "postcss-normalize-display-values": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-normalize-display-values/-/postcss-normalize-display-values-4.0.2.tgz", + "integrity": "sha512-3F2jcsaMW7+VtRMAqf/3m4cPFhPD3EFRgNs18u+k3lTJJlVe7d0YPO+bnwqo2xg8YiRpDXJI2u8A0wqJxMsQuQ==", + "requires": { + "cssnano-util-get-match": "^4.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "dependencies": { + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==" + } + } + }, + "postcss-normalize-positions": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-normalize-positions/-/postcss-normalize-positions-4.0.2.tgz", + "integrity": "sha512-Dlf3/9AxpxE+NF1fJxYDeggi5WwV35MXGFnnoccP/9qDtFrTArZ0D0R+iKcg5WsUd8nUYMIl8yXDCtcrT8JrdA==", + "requires": { + "cssnano-util-get-arguments": "^4.0.0", + "has": "^1.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "dependencies": { + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==" + } + } + }, + "postcss-normalize-repeat-style": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-normalize-repeat-style/-/postcss-normalize-repeat-style-4.0.2.tgz", + "integrity": "sha512-qvigdYYMpSuoFs3Is/f5nHdRLJN/ITA7huIoCyqqENJe9PvPmLhNLMu7QTjPdtnVf6OcYYO5SHonx4+fbJE1+Q==", + "requires": { + "cssnano-util-get-arguments": "^4.0.0", + "cssnano-util-get-match": "^4.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "dependencies": { + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==" + } + } + }, + "postcss-normalize-string": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-normalize-string/-/postcss-normalize-string-4.0.2.tgz", + "integrity": "sha512-RrERod97Dnwqq49WNz8qo66ps0swYZDSb6rM57kN2J+aoyEAJfZ6bMx0sx/F9TIEX0xthPGCmeyiam/jXif0eA==", + "requires": { + "has": "^1.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "dependencies": { + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==" + } + } + }, + "postcss-normalize-timing-functions": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-normalize-timing-functions/-/postcss-normalize-timing-functions-4.0.2.tgz", + "integrity": "sha512-acwJY95edP762e++00Ehq9L4sZCEcOPyaHwoaFOhIwWCDfik6YvqsYNxckee65JHLKzuNSSmAdxwD2Cud1Z54A==", + "requires": { + "cssnano-util-get-match": "^4.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "dependencies": { + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==" + } + } + }, + "postcss-normalize-unicode": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/postcss-normalize-unicode/-/postcss-normalize-unicode-4.0.1.tgz", + "integrity": "sha512-od18Uq2wCYn+vZ/qCOeutvHjB5jm57ToxRaMeNuf0nWVHaP9Hua56QyMF6fs/4FSUnVIw0CBPsU0K4LnBPwYwg==", + "requires": { + "browserslist": "^4.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "dependencies": { + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==" + } + } + }, + "postcss-normalize-url": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/postcss-normalize-url/-/postcss-normalize-url-4.0.1.tgz", + "integrity": "sha512-p5oVaF4+IHwu7VpMan/SSpmpYxcJMtkGppYf0VbdH5B6hN8YNmVyJLuY9FmLQTzY3fag5ESUUHDqM+heid0UVA==", + "requires": { + "is-absolute-url": "^2.0.0", + "normalize-url": "^3.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "dependencies": { + "normalize-url": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-3.3.0.tgz", + "integrity": "sha512-U+JJi7duF1o+u2pynbp2zXDW2/PADgC30f0GsHZtRh+HOcXHnw137TrNlyxxRvWW5fjKd3bcLHPxofWuCjaeZg==" + }, + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==" + } + } + }, + "postcss-normalize-whitespace": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-normalize-whitespace/-/postcss-normalize-whitespace-4.0.2.tgz", + "integrity": "sha512-tO8QIgrsI3p95r8fyqKV+ufKlSHh9hMJqACqbv2XknufqEDhDvbguXGBBqxw9nsQoXWf0qOqppziKJKHMD4GtA==", + "requires": { + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "dependencies": { + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==" + } + } + }, + "postcss-ordered-values": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/postcss-ordered-values/-/postcss-ordered-values-4.1.2.tgz", + "integrity": "sha512-2fCObh5UanxvSxeXrtLtlwVThBvHn6MQcu4ksNT2tsaV2Fg76R2CV98W7wNSlX+5/pFwEyaDwKLLoEV7uRybAw==", + "requires": { + "cssnano-util-get-arguments": "^4.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "dependencies": { + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==" + } + } + }, + "postcss-overflow-shorthand": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/postcss-overflow-shorthand/-/postcss-overflow-shorthand-2.0.0.tgz", + "integrity": "sha512-aK0fHc9CBNx8jbzMYhshZcEv8LtYnBIRYQD5i7w/K/wS9c2+0NSR6B3OVMu5y0hBHYLcMGjfU+dmWYNKH0I85g==", + "requires": { + "postcss": "^7.0.2" + } + }, + "postcss-page-break": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/postcss-page-break/-/postcss-page-break-2.0.0.tgz", + "integrity": "sha512-tkpTSrLpfLfD9HvgOlJuigLuk39wVTbbd8RKcy8/ugV2bNBUW3xU+AIqyxhDrQr1VUj1RmyJrBn1YWrqUm9zAQ==", + "requires": { + "postcss": "^7.0.2" + } + }, + "postcss-place": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/postcss-place/-/postcss-place-4.0.1.tgz", + "integrity": "sha512-Zb6byCSLkgRKLODj/5mQugyuj9bvAAw9LqJJjgwz5cYryGeXfFZfSXoP1UfveccFmeq0b/2xxwcTEVScnqGxBg==", + "requires": { + "postcss": "^7.0.2", + "postcss-values-parser": "^2.0.0" + } + }, + "postcss-preset-env": { + "version": "6.7.0", + "resolved": "https://registry.npmjs.org/postcss-preset-env/-/postcss-preset-env-6.7.0.tgz", + "integrity": "sha512-eU4/K5xzSFwUFJ8hTdTQzo2RBLbDVt83QZrAvI07TULOkmyQlnYlpwep+2yIK+K+0KlZO4BvFcleOCCcUtwchg==", + "requires": { + "autoprefixer": "^9.6.1", + "browserslist": "^4.6.4", + "caniuse-lite": "^1.0.30000981", + "css-blank-pseudo": "^0.1.4", + "css-has-pseudo": "^0.10.0", + "css-prefers-color-scheme": "^3.1.1", + "cssdb": "^4.4.0", + "postcss": "^7.0.17", + "postcss-attribute-case-insensitive": "^4.0.1", + "postcss-color-functional-notation": "^2.0.1", + "postcss-color-gray": "^5.0.0", + "postcss-color-hex-alpha": "^5.0.3", + "postcss-color-mod-function": "^3.0.3", + "postcss-color-rebeccapurple": "^4.0.1", + "postcss-custom-media": "^7.0.8", + "postcss-custom-properties": "^8.0.11", + "postcss-custom-selectors": "^5.1.2", + "postcss-dir-pseudo-class": "^5.0.0", + "postcss-double-position-gradients": "^1.0.0", + "postcss-env-function": "^2.0.2", + "postcss-focus-visible": "^4.0.0", + "postcss-focus-within": "^3.0.0", + "postcss-font-variant": "^4.0.0", + "postcss-gap-properties": "^2.0.0", + "postcss-image-set-function": "^3.0.1", + "postcss-initial": "^3.0.0", + "postcss-lab-function": "^2.0.1", + "postcss-logical": "^3.0.0", + "postcss-media-minmax": "^4.0.0", + "postcss-nesting": "^7.0.0", + "postcss-overflow-shorthand": "^2.0.0", + "postcss-page-break": "^2.0.0", + "postcss-place": "^4.0.1", + "postcss-pseudo-class-any-link": "^6.0.0", + "postcss-replace-overflow-wrap": "^3.0.0", + "postcss-selector-matches": "^4.0.0", + "postcss-selector-not": "^4.0.0" + } + }, + "postcss-pseudo-class-any-link": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/postcss-pseudo-class-any-link/-/postcss-pseudo-class-any-link-6.0.0.tgz", + "integrity": "sha512-lgXW9sYJdLqtmw23otOzrtbDXofUdfYzNm4PIpNE322/swES3VU9XlXHeJS46zT2onFO7V1QFdD4Q9LiZj8mew==", + "requires": { + "postcss": "^7.0.2", + "postcss-selector-parser": "^5.0.0-rc.3" + }, + "dependencies": { + "cssesc": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-2.0.0.tgz", + "integrity": "sha512-MsCAG1z9lPdoO/IUMLSBWBSVxVtJ1395VGIQ+Fc2gNdkQ1hNDnQdw3YhA71WJCBW1vdwA0cAnk/DnW6bqoEUYg==" + }, + "postcss-selector-parser": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-5.0.0.tgz", + "integrity": "sha512-w+zLE5Jhg6Liz8+rQOWEAwtwkyqpfnmsinXjXg6cY7YIONZZtgvE0v2O0uhQBs0peNomOJwWRKt6JBfTdTd3OQ==", + "requires": { + "cssesc": "^2.0.0", + "indexes-of": "^1.0.1", + "uniq": "^1.0.1" + } + } + } + }, + "postcss-reduce-initial": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/postcss-reduce-initial/-/postcss-reduce-initial-4.0.3.tgz", + "integrity": "sha512-gKWmR5aUulSjbzOfD9AlJiHCGH6AEVLaM0AV+aSioxUDd16qXP1PCh8d1/BGVvpdWn8k/HiK7n6TjeoXN1F7DA==", + "requires": { + "browserslist": "^4.0.0", + "caniuse-api": "^3.0.0", + "has": "^1.0.0", + "postcss": "^7.0.0" + } + }, + "postcss-reduce-transforms": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-reduce-transforms/-/postcss-reduce-transforms-4.0.2.tgz", + "integrity": "sha512-EEVig1Q2QJ4ELpJXMZR8Vt5DQx8/mo+dGWSR7vWXqcob2gQLyQGsionYcGKATXvQzMPn6DSN1vTN7yFximdIAg==", + "requires": { + "cssnano-util-get-match": "^4.0.0", + "has": "^1.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "dependencies": { + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==" + } + } + }, + "postcss-replace-overflow-wrap": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/postcss-replace-overflow-wrap/-/postcss-replace-overflow-wrap-3.0.0.tgz", + "integrity": "sha512-2T5hcEHArDT6X9+9dVSPQdo7QHzG4XKclFT8rU5TzJPDN7RIRTbO9c4drUISOVemLj03aezStHCR2AIcr8XLpw==", + "requires": { + "postcss": "^7.0.2" + } + }, + "postcss-safe-parser": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/postcss-safe-parser/-/postcss-safe-parser-4.0.1.tgz", + "integrity": "sha512-xZsFA3uX8MO3yAda03QrG3/Eg1LN3EPfjjf07vke/46HERLZyHrTsQ9E1r1w1W//fWEhtYNndo2hQplN2cVpCQ==", + "requires": { + "postcss": "^7.0.0" + } + }, + "postcss-selector-matches": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/postcss-selector-matches/-/postcss-selector-matches-4.0.0.tgz", + "integrity": "sha512-LgsHwQR/EsRYSqlwdGzeaPKVT0Ml7LAT6E75T8W8xLJY62CE4S/l03BWIt3jT8Taq22kXP08s2SfTSzaraoPww==", + "requires": { + "balanced-match": "^1.0.0", + "postcss": "^7.0.2" + } + }, + "postcss-selector-not": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/postcss-selector-not/-/postcss-selector-not-4.0.0.tgz", + "integrity": "sha512-W+bkBZRhqJaYN8XAnbbZPLWMvZD1wKTu0UxtFKdhtGjWYmxhkUneoeOhRJKdAE5V7ZTlnbHfCR+6bNwK9e1dTQ==", + "requires": { + "balanced-match": "^1.0.0", + "postcss": "^7.0.2" + } + }, + "postcss-selector-parser": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.2.tgz", + "integrity": "sha512-36P2QR59jDTOAiIkqEprfJDsoNrvwFei3eCqKd1Y0tUsBimsq39BLp7RD+JWny3WgB1zGhJX8XVePwm9k4wdBg==", + "requires": { + "cssesc": "^3.0.0", + "indexes-of": "^1.0.1", + "uniq": "^1.0.1" + } + }, + "postcss-svgo": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-svgo/-/postcss-svgo-4.0.2.tgz", + "integrity": "sha512-C6wyjo3VwFm0QgBy+Fu7gCYOkCmgmClghO+pjcxvrcBKtiKt0uCF+hvbMO1fyv5BMImRK90SMb+dwUnfbGd+jw==", + "requires": { + "is-svg": "^3.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0", + "svgo": "^1.0.0" + }, + "dependencies": { + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==" + } + } + }, + "postcss-unique-selectors": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/postcss-unique-selectors/-/postcss-unique-selectors-4.0.1.tgz", + "integrity": "sha512-+JanVaryLo9QwZjKrmJgkI4Fn8SBgRO6WXQBJi7KiAVPlmxikB5Jzc4EvXMT2H0/m0RjrVVm9rGNhZddm/8Spg==", + "requires": { + "alphanum-sort": "^1.0.0", + "postcss": "^7.0.0", + "uniqs": "^2.0.0" + } + }, + "postcss-value-parser": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.1.0.tgz", + "integrity": "sha512-97DXOFbQJhk71ne5/Mt6cOu6yxsSfM0QGQyl0L25Gca4yGWEGJaig7l7gbCX623VqTBNGLRLaVUCnNkcedlRSQ==" + }, + "postcss-values-parser": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/postcss-values-parser/-/postcss-values-parser-2.0.1.tgz", + "integrity": "sha512-2tLuBsA6P4rYTNKCXYG/71C7j1pU6pK503suYOmn4xYrQIzW+opD+7FAFNuGSdZC/3Qfy334QbeMu7MEb8gOxg==", + "requires": { + "flatten": "^1.0.2", + "indexes-of": "^1.0.1", + "uniq": "^1.0.1" + } + }, + "prelude-ls": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", + "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=" + }, + "prepend-http": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-1.0.4.tgz", + "integrity": "sha1-1PRWKwzjaW5BrFLQ4ALlemNdxtw=" + }, + "pretty-bytes": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/pretty-bytes/-/pretty-bytes-5.3.0.tgz", + "integrity": "sha512-hjGrh+P926p4R4WbaB6OckyRtO0F0/lQBiT+0gnxjV+5kjPBrfVBFCsCLbMqVQeydvIoouYTCmmEURiH3R1Bdg==" + }, + "pretty-error": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/pretty-error/-/pretty-error-2.1.1.tgz", + "integrity": "sha1-X0+HyPkeWuPzuoerTPXgOxoX8aM=", + "requires": { + "renderkid": "^2.0.1", + "utila": "~0.4" + } + }, + "pretty-format": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-24.9.0.tgz", + "integrity": "sha512-00ZMZUiHaJrNfk33guavqgvfJS30sLYf0f8+Srklv0AMPodGGHcoHgksZ3OThYnIvOd+8yMCn0YiEOogjlgsnA==", + "requires": { + "@jest/types": "^24.9.0", + "ansi-regex": "^4.0.0", + "ansi-styles": "^3.2.0", + "react-is": "^16.8.4" + }, + "dependencies": { + "ansi-regex": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", + "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==" + } + } + }, + "private": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/private/-/private-0.1.8.tgz", + "integrity": "sha512-VvivMrbvd2nKkiG38qjULzlc+4Vx4wm/whI9pQD35YrARNnhxeiRktSOhSukRLFNlzg6Br/cJPet5J/u19r/mg==" + }, + "process": { + "version": "0.11.10", + "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", + "integrity": "sha1-czIwDoQBYb2j5podHZGn1LwW8YI=" + }, + "process-nextick-args": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==" + }, + "progress": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", + "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==" + }, + "promise": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/promise/-/promise-8.1.0.tgz", + "integrity": "sha512-W04AqnILOL/sPRXziNicCjSNRruLAuIHEOVBazepu0545DDNGYHz7ar9ZgZ1fMU8/MA4mVxp5rkBWRi6OXIy3Q==", + "requires": { + "asap": "~2.0.6" + } + }, + "promise-inflight": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/promise-inflight/-/promise-inflight-1.0.1.tgz", + "integrity": "sha1-mEcocL8igTL8vdhoEputEsPAKeM=" + }, + "prompts": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.3.2.tgz", + "integrity": "sha512-Q06uKs2CkNYVID0VqwfAl9mipo99zkBv/n2JtWY89Yxa3ZabWSrs0e2KTudKVa3peLUvYXMefDqIleLPVUBZMA==", + "requires": { + "kleur": "^3.0.3", + "sisteransi": "^1.0.4" + } + }, + "prop-types": { + "version": "15.7.2", + "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.7.2.tgz", + "integrity": "sha512-8QQikdH7//R2vurIJSutZ1smHYTcLpRWEOlHnzcWHmBYrOGUysKwSsrC89BCiFj3CbrfJ/nXFdJepOVrY1GCHQ==", + "requires": { + "loose-envify": "^1.4.0", + "object-assign": "^4.1.1", + "react-is": "^16.8.1" + } + }, + "proxy-addr": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.6.tgz", + "integrity": "sha512-dh/frvCBVmSsDYzw6n926jv974gddhkFPfiN8hPOi30Wax25QZyZEGveluCgliBnqmuM+UJmBErbAUFIoDbjOw==", + "requires": { + "forwarded": "~0.1.2", + "ipaddr.js": "1.9.1" + } + }, + "prr": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz", + "integrity": "sha1-0/wRS6BplaRexok/SEzrHXj19HY=" + }, + "psl": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/psl/-/psl-1.8.0.tgz", + "integrity": "sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ==" + }, + "public-encrypt": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/public-encrypt/-/public-encrypt-4.0.3.tgz", + "integrity": "sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q==", + "requires": { + "bn.js": "^4.1.0", + "browserify-rsa": "^4.0.0", + "create-hash": "^1.1.0", + "parse-asn1": "^5.0.0", + "randombytes": "^2.0.1", + "safe-buffer": "^5.1.2" + }, + "dependencies": { + "bn.js": { + "version": "4.11.9", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.9.tgz", + "integrity": "sha512-E6QoYqCKZfgatHTdHzs1RRKP7ip4vvm+EyRUeE2RF0NblwVvb0p6jSVeNTOFxPn26QXN2o6SMfNxKp6kU8zQaw==" + } + } + }, + "pump": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", + "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", + "requires": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + }, + "pumpify": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/pumpify/-/pumpify-1.5.1.tgz", + "integrity": "sha512-oClZI37HvuUJJxSKKrC17bZ9Cu0ZYhEAGPsPUy9KlMUmv9dKX2o77RUmq7f3XjIxbwyGwYzbzQ1L2Ks8sIradQ==", + "requires": { + "duplexify": "^3.6.0", + "inherits": "^2.0.3", + "pump": "^2.0.0" + }, + "dependencies": { + "pump": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/pump/-/pump-2.0.1.tgz", + "integrity": "sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA==", + "requires": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + } + } + }, + "punycode": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", + "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==" + }, + "q": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/q/-/q-1.5.1.tgz", + "integrity": "sha1-fjL3W0E4EpHQRhHxvxQQmsAGUdc=" + }, + "qs": { + "version": "6.5.2", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz", + "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==" + }, + "query-string": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/query-string/-/query-string-4.3.4.tgz", + "integrity": "sha1-u7aTucqRXCMlFbIosaArYJBD2+s=", + "requires": { + "object-assign": "^4.1.0", + "strict-uri-encode": "^1.0.0" + } + }, + "querystring": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz", + "integrity": "sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA=" + }, + "querystring-es3": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/querystring-es3/-/querystring-es3-0.2.1.tgz", + "integrity": "sha1-nsYfeQSYdXB9aUFFlv2Qek1xHnM=" + }, + "querystringify": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.1.1.tgz", + "integrity": "sha512-w7fLxIRCRT7U8Qu53jQnJyPkYZIaR4n5151KMfcJlO/A9397Wxb1amJvROTK6TOnp7PfoAmg/qXiNHI+08jRfA==" + }, + "raf": { + "version": "3.4.1", + "resolved": "https://registry.npmjs.org/raf/-/raf-3.4.1.tgz", + "integrity": "sha512-Sq4CW4QhwOHE8ucn6J34MqtZCeWFP2aQSmrlroYgqAV1PjStIhJXxYuTgUIfkEk7zTLjmIjLmU5q+fbD1NnOJA==", + "requires": { + "performance-now": "^2.1.0" + } + }, + "randombytes": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", + "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", + "requires": { + "safe-buffer": "^5.1.0" + } + }, + "randomfill": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/randomfill/-/randomfill-1.0.4.tgz", + "integrity": "sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw==", + "requires": { + "randombytes": "^2.0.5", + "safe-buffer": "^5.1.0" + } + }, + "range-parser": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", + "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==" + }, + "raw-body": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.4.0.tgz", + "integrity": "sha512-4Oz8DUIwdvoa5qMJelxipzi/iJIi40O5cGV1wNYp5hvZP8ZN0T+jiNkL0QepXs+EsQ9XJ8ipEDoiH70ySUJP3Q==", + "requires": { + "bytes": "3.1.0", + "http-errors": "1.7.2", + "iconv-lite": "0.4.24", + "unpipe": "1.0.0" + }, + "dependencies": { + "bytes": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.0.tgz", + "integrity": "sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg==" + } + } + }, + "react": { + "version": "16.13.1", + "resolved": "https://registry.npmjs.org/react/-/react-16.13.1.tgz", + "integrity": "sha512-YMZQQq32xHLX0bz5Mnibv1/LHb3Sqzngu7xstSM+vrkE5Kzr9xE0yMByK5kMoTK30YVJE61WfbxIFFvfeDKT1w==", + "requires": { + "loose-envify": "^1.1.0", + "object-assign": "^4.1.1", + "prop-types": "^15.6.2" + } + }, + "react-app-polyfill": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/react-app-polyfill/-/react-app-polyfill-1.0.6.tgz", + "integrity": "sha512-OfBnObtnGgLGfweORmdZbyEz+3dgVePQBb3zipiaDsMHV1NpWm0rDFYIVXFV/AK+x4VIIfWHhrdMIeoTLyRr2g==", + "requires": { + "core-js": "^3.5.0", + "object-assign": "^4.1.1", + "promise": "^8.0.3", + "raf": "^3.4.1", + "regenerator-runtime": "^0.13.3", + "whatwg-fetch": "^3.0.0" + } + }, + "react-dev-utils": { + "version": "10.2.1", + "resolved": "https://registry.npmjs.org/react-dev-utils/-/react-dev-utils-10.2.1.tgz", + "integrity": "sha512-XxTbgJnYZmxuPtY3y/UV0D8/65NKkmaia4rXzViknVnZeVlklSh8u6TnaEYPfAi/Gh1TP4mEOXHI6jQOPbeakQ==", + "requires": { + "@babel/code-frame": "7.8.3", + "address": "1.1.2", + "browserslist": "4.10.0", + "chalk": "2.4.2", + "cross-spawn": "7.0.1", + "detect-port-alt": "1.1.6", + "escape-string-regexp": "2.0.0", + "filesize": "6.0.1", + "find-up": "4.1.0", + "fork-ts-checker-webpack-plugin": "3.1.1", + "global-modules": "2.0.0", + "globby": "8.0.2", + "gzip-size": "5.1.1", + "immer": "1.10.0", + "inquirer": "7.0.4", + "is-root": "2.1.0", + "loader-utils": "1.2.3", + "open": "^7.0.2", + "pkg-up": "3.1.0", + "react-error-overlay": "^6.0.7", + "recursive-readdir": "2.2.2", + "shell-quote": "1.7.2", + "strip-ansi": "6.0.0", + "text-table": "0.2.0" + }, + "dependencies": { + "@babel/code-frame": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.8.3.tgz", + "integrity": "sha512-a9gxpmdXtZEInkCSHUJDLHZVBgb1QS0jhss4cPP93EW7s+uC5bikET2twEF3KV+7rDblJcmNvTR7VJejqd2C2g==", + "requires": { + "@babel/highlight": "^7.8.3" + } + }, + "ansi-regex": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", + "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==" + }, + "browserslist": { + "version": "4.10.0", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.10.0.tgz", + "integrity": "sha512-TpfK0TDgv71dzuTsEAlQiHeWQ/tiPqgNZVdv046fvNtBZrjbv2O3TsWCDU0AWGJJKCF/KsjNdLzR9hXOsh/CfA==", + "requires": { + "caniuse-lite": "^1.0.30001035", + "electron-to-chromium": "^1.3.378", + "node-releases": "^1.1.52", + "pkg-up": "^3.1.0" + } + }, + "cross-spawn": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.1.tgz", + "integrity": "sha512-u7v4o84SwFpD32Z8IIcPZ6z1/ie24O6RU3RbtL5Y316l3KuHVPx9ItBgWQ6VlfAFnRnTtMUrsQ9MUUTuEZjogg==", + "requires": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + } + }, + "emojis-list": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-2.1.0.tgz", + "integrity": "sha1-TapNnbAPmBmIDHn6RXrlsJof04k=" + }, + "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==" + }, + "find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "requires": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + } + }, + "inquirer": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-7.0.4.tgz", + "integrity": "sha512-Bu5Td5+j11sCkqfqmUTiwv+tWisMtP0L7Q8WrqA2C/BbBhy1YTdFrvjjlrKq8oagA/tLQBski2Gcx/Sqyi2qSQ==", + "requires": { + "ansi-escapes": "^4.2.1", + "chalk": "^2.4.2", + "cli-cursor": "^3.1.0", + "cli-width": "^2.0.0", + "external-editor": "^3.0.3", + "figures": "^3.0.0", + "lodash": "^4.17.15", + "mute-stream": "0.0.8", + "run-async": "^2.2.0", + "rxjs": "^6.5.3", + "string-width": "^4.1.0", + "strip-ansi": "^5.1.0", + "through": "^2.3.6" + }, + "dependencies": { + "strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "requires": { + "ansi-regex": "^4.1.0" + } + } + } + }, + "json5": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", + "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", + "requires": { + "minimist": "^1.2.0" + } + }, + "loader-utils": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.2.3.tgz", + "integrity": "sha512-fkpz8ejdnEMG3s37wGL07iSBDg99O9D5yflE9RGNH3hRdx9SOwYfnGYdZOUIZitN8E+E2vkq3MUMYMvPYl5ZZA==", + "requires": { + "big.js": "^5.2.2", + "emojis-list": "^2.0.0", + "json5": "^1.0.1" + } + }, + "locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "requires": { + "p-locate": "^4.1.0" + } + }, + "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==", + "requires": { + "p-limit": "^2.2.0" + } + }, + "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==" + }, + "path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==" + }, + "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==", + "requires": { + "shebang-regex": "^3.0.0" + } + }, + "shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==" + }, + "strip-ansi": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", + "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", + "requires": { + "ansi-regex": "^5.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", + "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==" + } + } + }, + "which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "requires": { + "isexe": "^2.0.0" + } + } + } + }, + "react-dom": { + "version": "16.13.1", + "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-16.13.1.tgz", + "integrity": "sha512-81PIMmVLnCNLO/fFOQxdQkvEq/+Hfpv24XNJfpyZhTRfO0QcmQIF/PgCa1zCOj2w1hrn12MFLyaJ/G0+Mxtfag==", + "requires": { + "loose-envify": "^1.1.0", + "object-assign": "^4.1.1", + "prop-types": "^15.6.2", + "scheduler": "^0.19.1" + } + }, + "react-error-overlay": { + "version": "6.0.7", + "resolved": "https://registry.npmjs.org/react-error-overlay/-/react-error-overlay-6.0.7.tgz", + "integrity": "sha512-TAv1KJFh3RhqxNvhzxj6LeT5NWklP6rDr2a0jaTfsZ5wSZWHOGeqQyejUp3xxLfPt2UpyJEcVQB/zyPcmonNFA==" + }, + "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==" + }, + "react-scripts": { + "version": "3.4.1", + "resolved": "https://registry.npmjs.org/react-scripts/-/react-scripts-3.4.1.tgz", + "integrity": "sha512-JpTdi/0Sfd31mZA6Ukx+lq5j1JoKItX7qqEK4OiACjVQletM1P38g49d9/D0yTxp9FrSF+xpJFStkGgKEIRjlQ==", + "requires": { + "@babel/core": "7.9.0", + "@svgr/webpack": "4.3.3", + "@typescript-eslint/eslint-plugin": "^2.10.0", + "@typescript-eslint/parser": "^2.10.0", + "babel-eslint": "10.1.0", + "babel-jest": "^24.9.0", + "babel-loader": "8.1.0", + "babel-plugin-named-asset-import": "^0.3.6", + "babel-preset-react-app": "^9.1.2", + "camelcase": "^5.3.1", + "case-sensitive-paths-webpack-plugin": "2.3.0", + "css-loader": "3.4.2", + "dotenv": "8.2.0", + "dotenv-expand": "5.1.0", + "eslint": "^6.6.0", + "eslint-config-react-app": "^5.2.1", + "eslint-loader": "3.0.3", + "eslint-plugin-flowtype": "4.6.0", + "eslint-plugin-import": "2.20.1", + "eslint-plugin-jsx-a11y": "6.2.3", + "eslint-plugin-react": "7.19.0", + "eslint-plugin-react-hooks": "^1.6.1", + "file-loader": "4.3.0", + "fs-extra": "^8.1.0", + "fsevents": "2.1.2", + "html-webpack-plugin": "4.0.0-beta.11", + "identity-obj-proxy": "3.0.0", + "jest": "24.9.0", + "jest-environment-jsdom-fourteen": "1.0.1", + "jest-resolve": "24.9.0", + "jest-watch-typeahead": "0.4.2", + "mini-css-extract-plugin": "0.9.0", + "optimize-css-assets-webpack-plugin": "5.0.3", + "pnp-webpack-plugin": "1.6.4", + "postcss-flexbugs-fixes": "4.1.0", + "postcss-loader": "3.0.0", + "postcss-normalize": "8.0.1", + "postcss-preset-env": "6.7.0", + "postcss-safe-parser": "4.0.1", + "react-app-polyfill": "^1.0.6", + "react-dev-utils": "^10.2.1", + "resolve": "1.15.0", + "resolve-url-loader": "3.1.1", + "sass-loader": "8.0.2", + "semver": "6.3.0", + "style-loader": "0.23.1", + "terser-webpack-plugin": "2.3.5", + "ts-pnp": "1.1.6", + "url-loader": "2.3.0", + "webpack": "4.42.0", + "webpack-dev-server": "3.10.3", + "webpack-manifest-plugin": "2.2.0", + "workbox-webpack-plugin": "4.3.1" + } + }, + "react-transition-group": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/react-transition-group/-/react-transition-group-4.4.1.tgz", + "integrity": "sha512-Djqr7OQ2aPUiYurhPalTrVy9ddmFCCzwhqQmtN+J3+3DzLO209Fdr70QrN8Z3DsglWql6iY1lDWAfpFiBtuKGw==", + "requires": { + "@babel/runtime": "^7.5.5", + "dom-helpers": "^5.0.1", + "loose-envify": "^1.4.0", + "prop-types": "^15.6.2" + } + }, + "read-pkg": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-3.0.0.tgz", + "integrity": "sha1-nLxoaXj+5l0WwA4rGcI3/Pbjg4k=", + "requires": { + "load-json-file": "^4.0.0", + "normalize-package-data": "^2.3.2", + "path-type": "^3.0.0" + } + }, + "read-pkg-up": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-4.0.0.tgz", + "integrity": "sha512-6etQSH7nJGsK0RbG/2TeDzZFa8shjQ1um+SwQQ5cwKy0dhSXdOncEhb1CPpvQG4h7FyOV6EB6YlV0yJvZQNAkA==", + "requires": { + "find-up": "^3.0.0", + "read-pkg": "^3.0.0" + } + }, + "readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + }, + "readdirp": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.4.0.tgz", + "integrity": "sha512-0xe001vZBnJEK+uKcj8qOhyAKPzIT+gStxWr3LCB0DwcXR5NZJ3IaC+yGnHCYzB/S7ov3m3EEbZI2zeNvX+hGQ==", + "requires": { + "picomatch": "^2.2.1" + } + }, + "realpath-native": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/realpath-native/-/realpath-native-1.1.0.tgz", + "integrity": "sha512-wlgPA6cCIIg9gKz0fgAPjnzh4yR/LnXovwuo9hvyGvx3h8nX4+/iLZplfUWasXpqD8BdnGnP5njOFjkUwPzvjA==", + "requires": { + "util.promisify": "^1.0.0" + } + }, + "recursive-readdir": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/recursive-readdir/-/recursive-readdir-2.2.2.tgz", + "integrity": "sha512-nRCcW9Sj7NuZwa2XvH9co8NPeXUBhZP7CRKJtU+cS6PW9FpCIFoI5ib0NT1ZrbNuPoRy0ylyCaUL8Gih4LSyFg==", + "requires": { + "minimatch": "3.0.4" + } + }, + "redent": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/redent/-/redent-3.0.0.tgz", + "integrity": "sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg==", + "requires": { + "indent-string": "^4.0.0", + "strip-indent": "^3.0.0" + } + }, + "regenerate": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.1.tgz", + "integrity": "sha512-j2+C8+NtXQgEKWk49MMP5P/u2GhnahTtVkRIHr5R5lVRlbKvmQ+oS+A5aLKWp2ma5VkT8sh6v+v4hbH0YHR66A==" + }, + "regenerate-unicode-properties": { + "version": "8.2.0", + "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-8.2.0.tgz", + "integrity": "sha512-F9DjY1vKLo/tPePDycuH3dn9H1OTPIkVD9Kz4LODu+F2C75mgjAJ7x/gwy6ZcSNRAAkhNlJSOHRe8k3p+K9WhA==", + "requires": { + "regenerate": "^1.4.0" + } + }, + "regenerator-runtime": { + "version": "0.13.5", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.5.tgz", + "integrity": "sha512-ZS5w8CpKFinUzOwW3c83oPeVXoNsrLsaCoLtJvAClH135j/R77RuymhiSErhm2lKcwSCIpmvIWSbDkIfAqKQlA==" + }, + "regenerator-transform": { + "version": "0.14.4", + "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.14.4.tgz", + "integrity": "sha512-EaJaKPBI9GvKpvUz2mz4fhx7WPgvwRLY9v3hlNHWmAuJHI13T4nwKnNvm5RWJzEdnI5g5UwtOww+S8IdoUC2bw==", + "requires": { + "@babel/runtime": "^7.8.4", + "private": "^0.1.8" + } + }, + "regex-not": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz", + "integrity": "sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==", + "requires": { + "extend-shallow": "^3.0.2", + "safe-regex": "^1.1.0" + } + }, + "regex-parser": { + "version": "2.2.10", + "resolved": "https://registry.npmjs.org/regex-parser/-/regex-parser-2.2.10.tgz", + "integrity": "sha512-8t6074A68gHfU8Neftl0Le6KTDwfGAj7IyjPIMSfikI2wJUTHDMaIq42bUsfVnj8mhx0R+45rdUXHGpN164avA==" + }, + "regexp.prototype.flags": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.3.0.tgz", + "integrity": "sha512-2+Q0C5g951OlYlJz6yu5/M33IcsESLlLfsyIaLJaG4FA2r4yP8MvVMJUUP/fVBkSpbbbZlS5gynbEWLipiiXiQ==", + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.0-next.1" + } + }, + "regexpp": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.1.0.tgz", + "integrity": "sha512-ZOIzd8yVsQQA7j8GCSlPGXwg5PfmA1mrq0JP4nGhh54LaKN3xdai/vHUDu74pKwV8OxseMS65u2NImosQcSD0Q==" + }, + "regexpu-core": { + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-4.7.0.tgz", + "integrity": "sha512-TQ4KXRnIn6tz6tjnrXEkD/sshygKH/j5KzK86X8MkeHyZ8qst/LZ89j3X4/8HEIfHANTFIP/AbXakeRhWIl5YQ==", + "requires": { + "regenerate": "^1.4.0", + "regenerate-unicode-properties": "^8.2.0", + "regjsgen": "^0.5.1", + "regjsparser": "^0.6.4", + "unicode-match-property-ecmascript": "^1.0.4", + "unicode-match-property-value-ecmascript": "^1.2.0" + } + }, + "regjsgen": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.5.2.tgz", + "integrity": "sha512-OFFT3MfrH90xIW8OOSyUrk6QHD5E9JOTeGodiJeBS3J6IwlgzJMNE/1bZklWz5oTg+9dCMyEetclvCVXOPoN3A==" + }, + "regjsparser": { + "version": "0.6.4", + "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.6.4.tgz", + "integrity": "sha512-64O87/dPDgfk8/RQqC4gkZoGyyWFIEUTTh80CU6CWuK5vkCGyekIx+oKcEIYtP/RAxSQltCZHCNu/mdd7fqlJw==", + "requires": { + "jsesc": "~0.5.0" + }, + "dependencies": { + "jsesc": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", + "integrity": "sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0=" + } + } + }, + "relateurl": { + "version": "0.2.7", + "resolved": "https://registry.npmjs.org/relateurl/-/relateurl-0.2.7.tgz", + "integrity": "sha1-VNvzd+UUQKypCkzSdGANP/LYiKk=" + }, + "remove-trailing-separator": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz", + "integrity": "sha1-wkvOKig62tW8P1jg1IJJuSN52O8=" + }, + "renderkid": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/renderkid/-/renderkid-2.0.3.tgz", + "integrity": "sha512-z8CLQp7EZBPCwCnncgf9C4XAi3WR0dv+uWu/PjIyhhAb5d6IJ/QZqlHFprHeKT+59//V6BNUsLbvN8+2LarxGA==", + "requires": { + "css-select": "^1.1.0", + "dom-converter": "^0.2", + "htmlparser2": "^3.3.0", + "strip-ansi": "^3.0.0", + "utila": "^0.4.0" + }, + "dependencies": { + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=" + }, + "css-select": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/css-select/-/css-select-1.2.0.tgz", + "integrity": "sha1-KzoRBTnFNV8c2NMUYj6HCxIeyFg=", + "requires": { + "boolbase": "~1.0.0", + "css-what": "2.1", + "domutils": "1.5.1", + "nth-check": "~1.0.1" + } + }, + "css-what": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/css-what/-/css-what-2.1.3.tgz", + "integrity": "sha512-a+EPoD+uZiNfh+5fxw2nO9QwFa6nJe2Or35fGY6Ipw1R3R4AGz1d1TEZrCegvw2YTmZ0jXirGYlzxxpYSHwpEg==" + }, + "domutils": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.5.1.tgz", + "integrity": "sha1-3NhIiib1Y9YQeeSMn3t+Mjc2gs8=", + "requires": { + "dom-serializer": "0", + "domelementtype": "1" + } + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "requires": { + "ansi-regex": "^2.0.0" + } + } + } + }, + "repeat-element": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.3.tgz", + "integrity": "sha512-ahGq0ZnV5m5XtZLMb+vP76kcAM5nkLqk0lpqAuojSKGgQtn4eRi4ZZGm2olo2zKFH+sMsWaqOCW1dqAnOru72g==" + }, + "repeat-string": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", + "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=" + }, + "request": { + "version": "2.88.2", + "resolved": "https://registry.npmjs.org/request/-/request-2.88.2.tgz", + "integrity": "sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==", + "requires": { + "aws-sign2": "~0.7.0", + "aws4": "^1.8.0", + "caseless": "~0.12.0", + "combined-stream": "~1.0.6", + "extend": "~3.0.2", + "forever-agent": "~0.6.1", + "form-data": "~2.3.2", + "har-validator": "~5.1.3", + "http-signature": "~1.2.0", + "is-typedarray": "~1.0.0", + "isstream": "~0.1.2", + "json-stringify-safe": "~5.0.1", + "mime-types": "~2.1.19", + "oauth-sign": "~0.9.0", + "performance-now": "^2.1.0", + "qs": "~6.5.2", + "safe-buffer": "^5.1.2", + "tough-cookie": "~2.5.0", + "tunnel-agent": "^0.6.0", + "uuid": "^3.3.2" + } + }, + "request-promise-core": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/request-promise-core/-/request-promise-core-1.1.3.tgz", + "integrity": "sha512-QIs2+ArIGQVp5ZYbWD5ZLCY29D5CfWizP8eWnm8FoGD1TX61veauETVQbrV60662V0oFBkrDOuaBI8XgtuyYAQ==", + "requires": { + "lodash": "^4.17.15" + } + }, + "request-promise-native": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/request-promise-native/-/request-promise-native-1.0.8.tgz", + "integrity": "sha512-dapwLGqkHtwL5AEbfenuzjTYg35Jd6KPytsC2/TLkVMz8rm+tNt72MGUWT1RP/aYawMpN6HqbNGBQaRcBtjQMQ==", + "requires": { + "request-promise-core": "1.1.3", + "stealthy-require": "^1.1.1", + "tough-cookie": "^2.3.3" + } + }, + "require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=" + }, + "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==" + }, + "requires-port": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", + "integrity": "sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8=" + }, + "resolve": { + "version": "1.15.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.15.0.tgz", + "integrity": "sha512-+hTmAldEGE80U2wJJDC1lebb5jWqvTYAfm3YZ1ckk1gBr0MnCqUKlwK1e+anaFljIl+F5tR5IoZcm4ZDA1zMQw==", + "requires": { + "path-parse": "^1.0.6" + } + }, + "resolve-cwd": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-2.0.0.tgz", + "integrity": "sha1-AKn3OHVW4nA46uIyyqNypqWbZlo=", + "requires": { + "resolve-from": "^3.0.0" + } + }, + "resolve-from": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-3.0.0.tgz", + "integrity": "sha1-six699nWiBvItuZTM17rywoYh0g=" + }, + "resolve-url": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz", + "integrity": "sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=" + }, + "resolve-url-loader": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/resolve-url-loader/-/resolve-url-loader-3.1.1.tgz", + "integrity": "sha512-K1N5xUjj7v0l2j/3Sgs5b8CjrrgtC70SmdCuZiJ8tSyb5J+uk3FoeZ4b7yTnH6j7ngI+Bc5bldHJIa8hYdu2gQ==", + "requires": { + "adjust-sourcemap-loader": "2.0.0", + "camelcase": "5.3.1", + "compose-function": "3.0.3", + "convert-source-map": "1.7.0", + "es6-iterator": "2.0.3", + "loader-utils": "1.2.3", + "postcss": "7.0.21", + "rework": "1.0.1", + "rework-visit": "1.0.0", + "source-map": "0.6.1" + }, + "dependencies": { + "emojis-list": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-2.1.0.tgz", + "integrity": "sha1-TapNnbAPmBmIDHn6RXrlsJof04k=" + }, + "json5": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", + "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", + "requires": { + "minimist": "^1.2.0" + } + }, + "loader-utils": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.2.3.tgz", + "integrity": "sha512-fkpz8ejdnEMG3s37wGL07iSBDg99O9D5yflE9RGNH3hRdx9SOwYfnGYdZOUIZitN8E+E2vkq3MUMYMvPYl5ZZA==", + "requires": { + "big.js": "^5.2.2", + "emojis-list": "^2.0.0", + "json5": "^1.0.1" + } + }, + "postcss": { + "version": "7.0.21", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.21.tgz", + "integrity": "sha512-uIFtJElxJo29QC753JzhidoAhvp/e/Exezkdhfmt8AymWT6/5B7W1WmponYWkHk2eg6sONyTch0A3nkMPun3SQ==", + "requires": { + "chalk": "^2.4.2", + "source-map": "^0.6.1", + "supports-color": "^6.1.0" + } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" + }, + "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==", + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "restore-cursor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz", + "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==", + "requires": { + "onetime": "^5.1.0", + "signal-exit": "^3.0.2" + } + }, + "ret": { + "version": "0.1.15", + "resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz", + "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==" + }, + "retry": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/retry/-/retry-0.12.0.tgz", + "integrity": "sha1-G0KmJmoh8HQh0bC1S33BZ7AcATs=" + }, + "rework": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/rework/-/rework-1.0.1.tgz", + "integrity": "sha1-MIBqhBNCtUUQqkEQhQzUhTQUSqc=", + "requires": { + "convert-source-map": "^0.3.3", + "css": "^2.0.0" + }, + "dependencies": { + "convert-source-map": { + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-0.3.5.tgz", + "integrity": "sha1-8dgClQr33SYxof6+BZZVDIarMZA=" + } + } + }, + "rework-visit": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/rework-visit/-/rework-visit-1.0.0.tgz", + "integrity": "sha1-mUWygD8hni96ygCtuLyfZA+ELJo=" + }, + "rgb-regex": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/rgb-regex/-/rgb-regex-1.0.1.tgz", + "integrity": "sha1-wODWiC3w4jviVKR16O3UGRX+rrE=" + }, + "rgba-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/rgba-regex/-/rgba-regex-1.0.0.tgz", + "integrity": "sha1-QzdOLiyglosO8VI0YLfXMP8i7rM=" + }, + "rimraf": { + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz", + "integrity": "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==", + "requires": { + "glob": "^7.1.3" + } + }, + "ripemd160": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.2.tgz", + "integrity": "sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==", + "requires": { + "hash-base": "^3.0.0", + "inherits": "^2.0.1" + } + }, + "rsvp": { + "version": "4.8.5", + "resolved": "https://registry.npmjs.org/rsvp/-/rsvp-4.8.5.tgz", + "integrity": "sha512-nfMOlASu9OnRJo1mbEk2cz0D56a1MBNrJ7orjRZQG10XDyuvwksKbuXNp6qa+kbn839HwjwhBzhFmdsaEAfauA==" + }, + "run-async": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.4.1.tgz", + "integrity": "sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==" + }, + "run-queue": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/run-queue/-/run-queue-1.0.3.tgz", + "integrity": "sha1-6Eg5bwV9Ij8kOGkkYY4laUFh7Ec=", + "requires": { + "aproba": "^1.1.1" + } + }, + "rxjs": { + "version": "6.5.5", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.5.5.tgz", + "integrity": "sha512-WfQI+1gohdf0Dai/Bbmk5L5ItH5tYqm3ki2c5GdWhKjalzjg93N3avFjVStyZZz+A2Em+ZxKH5bNghw9UeylGQ==", + "requires": { + "tslib": "^1.9.0" + } + }, + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + }, + "safe-regex": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz", + "integrity": "sha1-QKNmnzsHfR6UPURinhV91IAjvy4=", + "requires": { + "ret": "~0.1.10" + } + }, + "safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" + }, + "sane": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/sane/-/sane-4.1.0.tgz", + "integrity": "sha512-hhbzAgTIX8O7SHfp2c8/kREfEn4qO/9q8C9beyY6+tvZ87EpoZ3i1RIEvp27YBswnNbY9mWd6paKVmKbAgLfZA==", + "requires": { + "@cnakazawa/watch": "^1.0.3", + "anymatch": "^2.0.0", + "capture-exit": "^2.0.0", + "exec-sh": "^0.3.2", + "execa": "^1.0.0", + "fb-watchman": "^2.0.0", + "micromatch": "^3.1.4", + "minimist": "^1.1.1", + "walker": "~1.0.5" + } + }, + "sanitize.css": { + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/sanitize.css/-/sanitize.css-10.0.0.tgz", + "integrity": "sha512-vTxrZz4dX5W86M6oVWVdOVe72ZiPs41Oi7Z6Km4W5Turyz28mrXSJhhEBZoRtzJWIv3833WKVwLSDWWkEfupMg==" + }, + "sass-loader": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/sass-loader/-/sass-loader-8.0.2.tgz", + "integrity": "sha512-7o4dbSK8/Ol2KflEmSco4jTjQoV988bM82P9CZdmo9hR3RLnvNc0ufMNdMrB0caq38JQ/FgF4/7RcbcfKzxoFQ==", + "requires": { + "clone-deep": "^4.0.1", + "loader-utils": "^1.2.3", + "neo-async": "^2.6.1", + "schema-utils": "^2.6.1", + "semver": "^6.3.0" + }, + "dependencies": { + "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==", + "requires": { + "is-plain-object": "^2.0.4", + "kind-of": "^6.0.2", + "shallow-clone": "^3.0.0" + } + }, + "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==" + }, + "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==", + "requires": { + "kind-of": "^6.0.2" + } + } + } + }, + "sax": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", + "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==" + }, + "saxes": { + "version": "3.1.11", + "resolved": "https://registry.npmjs.org/saxes/-/saxes-3.1.11.tgz", + "integrity": "sha512-Ydydq3zC+WYDJK1+gRxRapLIED9PWeSuuS41wqyoRmzvhhh9nc+QQrVMKJYzJFULazeGhzSV0QleN2wD3boh2g==", + "requires": { + "xmlchars": "^2.1.1" + } + }, + "scheduler": { + "version": "0.19.1", + "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.19.1.tgz", + "integrity": "sha512-n/zwRWRYSUj0/3g/otKDRPMh6qv2SYMWNq85IEa8iZyAv8od9zDYpGSnpBEjNgcMNq6Scbu5KfIPxNF72R/2EA==", + "requires": { + "loose-envify": "^1.1.0", + "object-assign": "^4.1.1" + } + }, + "schema-utils": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.7.0.tgz", + "integrity": "sha512-0ilKFI6QQF5nxDZLFn2dMjvc4hjg/Wkg7rHd3jK6/A4a1Hl9VFdQWvgB1UMGoU94pad1P/8N7fMcEnLnSiju8A==", + "requires": { + "@types/json-schema": "^7.0.4", + "ajv": "^6.12.2", + "ajv-keywords": "^3.4.1" + } + }, + "select-hose": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/select-hose/-/select-hose-2.0.0.tgz", + "integrity": "sha1-Yl2GWPhlr0Psliv8N2o3NZpJlMo=" + }, + "selfsigned": { + "version": "1.10.7", + "resolved": "https://registry.npmjs.org/selfsigned/-/selfsigned-1.10.7.tgz", + "integrity": "sha512-8M3wBCzeWIJnQfl43IKwOmC4H/RAp50S8DF60znzjW5GVqTcSe2vWclt7hmYVPkKPlHWOu5EaWOMZ2Y6W8ZXTA==", + "requires": { + "node-forge": "0.9.0" + } + }, + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==" + }, + "send": { + "version": "0.17.1", + "resolved": "https://registry.npmjs.org/send/-/send-0.17.1.tgz", + "integrity": "sha512-BsVKsiGcQMFwT8UxypobUKyv7irCNRHk1T0G680vk88yf6LBByGcZJOTJCrTP2xVN6yI+XjPJcNuE3V4fT9sAg==", + "requires": { + "debug": "2.6.9", + "depd": "~1.1.2", + "destroy": "~1.0.4", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "fresh": "0.5.2", + "http-errors": "~1.7.2", + "mime": "1.6.0", + "ms": "2.1.1", + "on-finished": "~2.3.0", + "range-parser": "~1.2.1", + "statuses": "~1.5.0" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "requires": { + "ms": "2.0.0" + }, + "dependencies": { + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + } + } + }, + "mime": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==" + }, + "ms": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", + "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==" + } + } + }, + "serialize-javascript": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-2.1.2.tgz", + "integrity": "sha512-rs9OggEUF0V4jUSecXazOYsLfu7OGK2qIn3c7IPBiffz32XniEp/TX9Xmc9LQfK2nQ2QKHvZ2oygKUGU0lG4jQ==" + }, + "serve-index": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/serve-index/-/serve-index-1.9.1.tgz", + "integrity": "sha1-03aNabHn2C5c4FD/9bRTvqEqkjk=", + "requires": { + "accepts": "~1.3.4", + "batch": "0.6.1", + "debug": "2.6.9", + "escape-html": "~1.0.3", + "http-errors": "~1.6.2", + "mime-types": "~2.1.17", + "parseurl": "~1.3.2" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "requires": { + "ms": "2.0.0" + } + }, + "http-errors": { + "version": "1.6.3", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz", + "integrity": "sha1-i1VoC7S+KDoLW/TqLjhYC+HZMg0=", + "requires": { + "depd": "~1.1.2", + "inherits": "2.0.3", + "setprototypeof": "1.1.0", + "statuses": ">= 1.4.0 < 2" + } + }, + "inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=" + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + }, + "setprototypeof": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz", + "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==" + } + } + }, + "serve-static": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.14.1.tgz", + "integrity": "sha512-JMrvUwE54emCYWlTI+hGrGv5I8dEwmco/00EvkzIIsR7MqrHonbD9pO2MOfFnpFntl7ecpZs+3mW+XbQZu9QCg==", + "requires": { + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "parseurl": "~1.3.3", + "send": "0.17.1" + } + }, + "set-blocking": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", + "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=" + }, + "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==", + "requires": { + "extend-shallow": "^2.0.1", + "is-extendable": "^0.1.1", + "is-plain-object": "^2.0.3", + "split-string": "^3.0.1" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "setimmediate": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", + "integrity": "sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU=" + }, + "setprototypeof": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.1.tgz", + "integrity": "sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw==" + }, + "sha.js": { + "version": "2.4.11", + "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz", + "integrity": "sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==", + "requires": { + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, + "shallow-clone": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/shallow-clone/-/shallow-clone-0.1.2.tgz", + "integrity": "sha1-WQnodLp3EG1zrEFM/sH/yofZcGA=", + "requires": { + "is-extendable": "^0.1.1", + "kind-of": "^2.0.1", + "lazy-cache": "^0.2.3", + "mixin-object": "^2.0.1" + }, + "dependencies": { + "kind-of": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-2.0.1.tgz", + "integrity": "sha1-AY7HpM5+OobLkUG+UZ0kyPqpgbU=", + "requires": { + "is-buffer": "^1.0.2" + } + }, + "lazy-cache": { + "version": "0.2.7", + "resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-0.2.7.tgz", + "integrity": "sha1-f+3fLctu23fRHvHRF6tf/fCrG2U=" + } + } + }, + "shebang-command": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", + "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", + "requires": { + "shebang-regex": "^1.0.0" + } + }, + "shebang-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", + "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=" + }, + "shell-quote": { + "version": "1.7.2", + "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.7.2.tgz", + "integrity": "sha512-mRz/m/JVscCrkMyPqHc/bczi3OQHkLTqXHEFu0zDhK/qfv3UcOA4SVmRCLmos4bhjr9ekVQubj/R7waKapmiQg==" + }, + "shellwords": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/shellwords/-/shellwords-0.1.1.tgz", + "integrity": "sha512-vFwSUfQvqybiICwZY5+DAWIPLKsWO31Q91JSKl3UYv+K5c2QRPzn0qzec6QPu1Qc9eHYItiP3NdJqNVqetYAww==" + }, + "side-channel": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.2.tgz", + "integrity": "sha512-7rL9YlPHg7Ancea1S96Pa8/QWb4BtXL/TZvS6B8XFetGBeuhAsfmUspK6DokBeZ64+Kj9TCNRD/30pVz1BvQNA==", + "requires": { + "es-abstract": "^1.17.0-next.1", + "object-inspect": "^1.7.0" + } + }, + "signal-exit": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.3.tgz", + "integrity": "sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA==" + }, + "simple-swizzle": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/simple-swizzle/-/simple-swizzle-0.2.2.tgz", + "integrity": "sha1-pNprY1/8zMoz9w0Xy5JZLeleVXo=", + "requires": { + "is-arrayish": "^0.3.1" + }, + "dependencies": { + "is-arrayish": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.3.2.tgz", + "integrity": "sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==" + } + } + }, + "sisteransi": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz", + "integrity": "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==" + }, + "slash": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-2.0.0.tgz", + "integrity": "sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A==" + }, + "slice-ansi": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-2.1.0.tgz", + "integrity": "sha512-Qu+VC3EwYLldKa1fCxuuvULvSJOKEgk9pi8dZeCVK7TqBfUNTH4sFkk4joj8afVSfAYgJoSOetjx9QWOJ5mYoQ==", + "requires": { + "ansi-styles": "^3.2.0", + "astral-regex": "^1.0.0", + "is-fullwidth-code-point": "^2.0.0" + }, + "dependencies": { + "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": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=" + } + } + }, + "snapdragon": { + "version": "0.8.2", + "resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz", + "integrity": "sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==", + "requires": { + "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" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "requires": { + "ms": "2.0.0" + } + }, + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "requires": { + "is-descriptor": "^0.1.0" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "requires": { + "is-extendable": "^0.1.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + } + } + }, + "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==", + "requires": { + "define-property": "^1.0.0", + "isobject": "^3.0.0", + "snapdragon-util": "^3.0.1" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "requires": { + "is-descriptor": "^1.0.0" + } + }, + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + } + }, + "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==" + } + } + }, + "snapdragon-util": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/snapdragon-util/-/snapdragon-util-3.0.1.tgz", + "integrity": "sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==", + "requires": { + "kind-of": "^3.2.0" + } + }, + "sockjs": { + "version": "0.3.19", + "resolved": "https://registry.npmjs.org/sockjs/-/sockjs-0.3.19.tgz", + "integrity": "sha512-V48klKZl8T6MzatbLlzzRNhMepEys9Y4oGFpypBFFn1gLI/QQ9HtLLyWJNbPlwGLelOVOEijUbTTJeLLI59jLw==", + "requires": { + "faye-websocket": "^0.10.0", + "uuid": "^3.0.1" + } + }, + "sockjs-client": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/sockjs-client/-/sockjs-client-1.4.0.tgz", + "integrity": "sha512-5zaLyO8/nri5cua0VtOrFXBPK1jbL4+1cebT/mmKA1E1ZXOvJrII75bPu0l0k843G/+iAbhEqzyKr0w/eCCj7g==", + "requires": { + "debug": "^3.2.5", + "eventsource": "^1.0.7", + "faye-websocket": "~0.11.1", + "inherits": "^2.0.3", + "json3": "^3.3.2", + "url-parse": "^1.4.3" + }, + "dependencies": { + "debug": { + "version": "3.2.6", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", + "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", + "requires": { + "ms": "^2.1.1" + } + }, + "faye-websocket": { + "version": "0.11.3", + "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.11.3.tgz", + "integrity": "sha512-D2y4bovYpzziGgbHYtGCMjlJM36vAl/y+xUyn1C+FVx8szd1E+86KwVw6XvYSzOP8iMpm1X0I4xJD+QtUb36OA==", + "requires": { + "websocket-driver": ">=0.5.1" + } + } + } + }, + "sort-keys": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/sort-keys/-/sort-keys-1.1.2.tgz", + "integrity": "sha1-RBttTTRnmPG05J6JIK37oOVD+a0=", + "requires": { + "is-plain-obj": "^1.0.0" + } + }, + "source-list-map": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/source-list-map/-/source-list-map-2.0.1.tgz", + "integrity": "sha512-qnQ7gVMxGNxsiL4lEuJwe/To8UnK7fAnmbGEEH8RpLouuKbeEm0lhbQVFIrNSuB+G7tVrAlVsZgETT5nljf+Iw==" + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=" + }, + "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==", + "requires": { + "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": { + "version": "0.5.19", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.19.tgz", + "integrity": "sha512-Wonm7zOCIJzBGQdB+thsPar0kYuCIzYvxZwlBa87yi/Mdjv7Tip2cyVbLj5o0cFPN4EVkuTwb3GDDyUx2DGnGw==", + "requires": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" + } + } + }, + "source-map-url": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.0.tgz", + "integrity": "sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM=" + }, + "spdx-correct": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.1.tgz", + "integrity": "sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w==", + "requires": { + "spdx-expression-parse": "^3.0.0", + "spdx-license-ids": "^3.0.0" + } + }, + "spdx-exceptions": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz", + "integrity": "sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==" + }, + "spdx-expression-parse": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz", + "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==", + "requires": { + "spdx-exceptions": "^2.1.0", + "spdx-license-ids": "^3.0.0" + } + }, + "spdx-license-ids": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.5.tgz", + "integrity": "sha512-J+FWzZoynJEXGphVIS+XEh3kFSjZX/1i9gFBaWQcB+/tmpe2qUsSBABpcxqxnAxFdiUFEgAX1bjYGQvIZmoz9Q==" + }, + "spdy": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/spdy/-/spdy-4.0.2.tgz", + "integrity": "sha512-r46gZQZQV+Kl9oItvl1JZZqJKGr+oEkB08A6BzkiR7593/7IbtuncXHd2YoYeTsG4157ZssMu9KYvUHLcjcDoA==", + "requires": { + "debug": "^4.1.0", + "handle-thing": "^2.0.0", + "http-deceiver": "^1.2.7", + "select-hose": "^2.0.0", + "spdy-transport": "^3.0.0" + } + }, + "spdy-transport": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/spdy-transport/-/spdy-transport-3.0.0.tgz", + "integrity": "sha512-hsLVFE5SjA6TCisWeJXFKniGGOpBgMLmerfO2aCyCU5s7nJ/rpAepqmFifv/GCbSbueEeAJJnmSQ2rKC/g8Fcw==", + "requires": { + "debug": "^4.1.0", + "detect-node": "^2.0.4", + "hpack.js": "^2.1.6", + "obuf": "^1.1.2", + "readable-stream": "^3.0.6", + "wbuf": "^1.7.3" + } + }, + "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==", + "requires": { + "extend-shallow": "^3.0.0" + } + }, + "sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=" + }, + "sshpk": { + "version": "1.16.1", + "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.16.1.tgz", + "integrity": "sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg==", + "requires": { + "asn1": "~0.2.3", + "assert-plus": "^1.0.0", + "bcrypt-pbkdf": "^1.0.0", + "dashdash": "^1.12.0", + "ecc-jsbn": "~0.1.1", + "getpass": "^0.1.1", + "jsbn": "~0.1.0", + "safer-buffer": "^2.0.2", + "tweetnacl": "~0.14.0" + } + }, + "ssri": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/ssri/-/ssri-7.1.0.tgz", + "integrity": "sha512-77/WrDZUWocK0mvA5NTRQyveUf+wsrIc6vyrxpS8tVvYBcX215QbafrJR3KtkpskIzoFLqqNuuYQvxaMjXJ/0g==", + "requires": { + "figgy-pudding": "^3.5.1", + "minipass": "^3.1.1" + } + }, + "stable": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/stable/-/stable-0.1.8.tgz", + "integrity": "sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w==" + }, + "stack-utils": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-1.0.2.tgz", + "integrity": "sha512-MTX+MeG5U994cazkjd/9KNAapsHnibjMLnfXodlkXw76JEea0UiNzrqidzo1emMwk7w5Qhc9jd4Bn9TBb1MFwA==" + }, + "static-extend": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz", + "integrity": "sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY=", + "requires": { + "define-property": "^0.2.5", + "object-copy": "^0.1.0" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "requires": { + "is-descriptor": "^0.1.0" + } + } + } + }, + "statuses": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", + "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=" + }, + "stealthy-require": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/stealthy-require/-/stealthy-require-1.1.1.tgz", + "integrity": "sha1-NbCYdbT/SfJqd35QmzCQoyJr8ks=" + }, + "stream-browserify": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/stream-browserify/-/stream-browserify-2.0.2.tgz", + "integrity": "sha512-nX6hmklHs/gr2FuxYDltq8fJA1GDlxKQCz8O/IM4atRqBH8OORmBNgfvW5gG10GT/qQ9u0CzIvr2X5Pkt6ntqg==", + "requires": { + "inherits": "~2.0.1", + "readable-stream": "^2.0.2" + }, + "dependencies": { + "readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "requires": { + "safe-buffer": "~5.1.0" + } + } + } + }, + "stream-each": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/stream-each/-/stream-each-1.2.3.tgz", + "integrity": "sha512-vlMC2f8I2u/bZGqkdfLQW/13Zihpej/7PmSiMQsbYddxuTsJp8vRe2x2FvVExZg7FaOds43ROAuFJwPR4MTZLw==", + "requires": { + "end-of-stream": "^1.1.0", + "stream-shift": "^1.0.0" + } + }, + "stream-http": { + "version": "2.8.3", + "resolved": "https://registry.npmjs.org/stream-http/-/stream-http-2.8.3.tgz", + "integrity": "sha512-+TSkfINHDo4J+ZobQLWiMouQYB+UVYFttRA94FpEzzJ7ZdqcL4uUUQ7WkdkI4DSozGmgBUE/a47L+38PenXhUw==", + "requires": { + "builtin-status-codes": "^3.0.0", + "inherits": "^2.0.1", + "readable-stream": "^2.3.6", + "to-arraybuffer": "^1.0.0", + "xtend": "^4.0.0" + }, + "dependencies": { + "readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "requires": { + "safe-buffer": "~5.1.0" + } + } + } + }, + "stream-shift": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.1.tgz", + "integrity": "sha512-AiisoFqQ0vbGcZgQPY1cdP2I76glaVA/RauYR4G4thNFgkTqr90yXTo4LYX60Jl+sIlPNHHdGSwo01AvbKUSVQ==" + }, + "strict-uri-encode": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/strict-uri-encode/-/strict-uri-encode-1.1.0.tgz", + "integrity": "sha1-J5siXfHVgrH1TmWt3UNS4Y+qBxM=" + }, + "string-length": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/string-length/-/string-length-2.0.0.tgz", + "integrity": "sha1-1A27aGo6zpYMHP/KVivyxF+DY+0=", + "requires": { + "astral-regex": "^1.0.0", + "strip-ansi": "^4.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=" + }, + "strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "requires": { + "ansi-regex": "^3.0.0" + } + } + } + }, + "string-width": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.0.tgz", + "integrity": "sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg==", + "requires": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.0" + }, + "dependencies": { + "strip-ansi": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", + "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", + "requires": { + "ansi-regex": "^5.0.0" + } + } + } + }, + "string.prototype.matchall": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/string.prototype.matchall/-/string.prototype.matchall-4.0.2.tgz", + "integrity": "sha512-N/jp6O5fMf9os0JU3E72Qhf590RSRZU/ungsL/qJUYVTNv7hTG0P/dbPjxINVN9jpscu3nzYwKESU3P3RY5tOg==", + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.0", + "has-symbols": "^1.0.1", + "internal-slot": "^1.0.2", + "regexp.prototype.flags": "^1.3.0", + "side-channel": "^1.0.2" + } + }, + "string.prototype.trimend": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.1.tgz", + "integrity": "sha512-LRPxFUaTtpqYsTeNKaFOw3R4bxIzWOnbQ837QfBylo8jIxtcbK/A/sMV7Q+OAV/vWo+7s25pOE10KYSjaSO06g==", + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.5" + } + }, + "string.prototype.trimstart": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.1.tgz", + "integrity": "sha512-XxZn+QpvrBI1FOcg6dIpxUPgWCPuNXvMD72aaRaUQv1eD4e/Qy8i/hFTe0BUmD60p/QA6bh1avmuPTfNjqVWRw==", + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.5" + } + }, + "string_decoder": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", + "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", + "requires": { + "safe-buffer": "~5.2.0" + }, + "dependencies": { + "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==" + } + } + }, + "stringify-object": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/stringify-object/-/stringify-object-3.3.0.tgz", + "integrity": "sha512-rHqiFh1elqCQ9WPLIC8I0Q/g/wj5J1eMkyoiD6eoQApWHP0FtlK7rqnhmabL5VUY9JQCcqwwvlOaSuutekgyrw==", + "requires": { + "get-own-enumerable-property-symbols": "^3.0.0", + "is-obj": "^1.0.1", + "is-regexp": "^1.0.0" + }, + "dependencies": { + "is-obj": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-1.0.1.tgz", + "integrity": "sha1-PkcprB9f3gJc19g6iW2rn09n2w8=" + } + } + }, + "strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "requires": { + "ansi-regex": "^4.1.0" + }, + "dependencies": { + "ansi-regex": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", + "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==" + } + } + }, + "strip-bom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=" + }, + "strip-comments": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/strip-comments/-/strip-comments-1.0.2.tgz", + "integrity": "sha512-kL97alc47hoyIQSV165tTt9rG5dn4w1dNnBhOQ3bOU1Nc1hel09jnXANaHJ7vzHLd4Ju8kseDGzlev96pghLFw==", + "requires": { + "babel-extract-comments": "^1.0.0", + "babel-plugin-transform-object-rest-spread": "^6.26.0" + } + }, + "strip-eof": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", + "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=" + }, + "strip-indent": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-3.0.0.tgz", + "integrity": "sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==", + "requires": { + "min-indent": "^1.0.0" + } + }, + "strip-json-comments": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.0.tgz", + "integrity": "sha512-e6/d0eBu7gHtdCqFt0xJr642LdToM5/cN4Qb9DbHjVx1CP5RyeM+zH7pbecEmDv/lBqb0QH+6Uqq75rxFPkM0w==" + }, + "style-loader": { + "version": "0.23.1", + "resolved": "https://registry.npmjs.org/style-loader/-/style-loader-0.23.1.tgz", + "integrity": "sha512-XK+uv9kWwhZMZ1y7mysB+zoihsEj4wneFWAS5qoiLwzW0WzSqMrrsIy+a3zkQJq0ipFtBpX5W3MqyRIBF/WFGg==", + "requires": { + "loader-utils": "^1.1.0", + "schema-utils": "^1.0.0" + }, + "dependencies": { + "schema-utils": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz", + "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==", + "requires": { + "ajv": "^6.1.0", + "ajv-errors": "^1.0.0", + "ajv-keywords": "^3.1.0" + } + } + } + }, + "stylehacks": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/stylehacks/-/stylehacks-4.0.3.tgz", + "integrity": "sha512-7GlLk9JwlElY4Y6a/rmbH2MhVlTyVmiJd1PfTCqFaIBEGMYNsrO/v3SeGTdhBThLg4Z+NbOk/qFMwCa+J+3p/g==", + "requires": { + "browserslist": "^4.0.0", + "postcss": "^7.0.0", + "postcss-selector-parser": "^3.0.0" + }, + "dependencies": { + "postcss-selector-parser": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-3.1.2.tgz", + "integrity": "sha512-h7fJ/5uWuRVyOtkO45pnt1Ih40CEleeyCHzipqAZO2e5H20g25Y48uYnFUiShvY4rZWNJ/Bib/KVPmanaCtOhA==", + "requires": { + "dot-prop": "^5.2.0", + "indexes-of": "^1.0.1", + "uniq": "^1.0.1" + } + } + } + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "requires": { + "has-flag": "^3.0.0" + } + }, + "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==" + }, + "svgo": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/svgo/-/svgo-1.3.2.tgz", + "integrity": "sha512-yhy/sQYxR5BkC98CY7o31VGsg014AKLEPxdfhora76l36hD9Rdy5NZA/Ocn6yayNPgSamYdtX2rFJdcv07AYVw==", + "requires": { + "chalk": "^2.4.1", + "coa": "^2.0.2", + "css-select": "^2.0.0", + "css-select-base-adapter": "^0.1.1", + "css-tree": "1.0.0-alpha.37", + "csso": "^4.0.2", + "js-yaml": "^3.13.1", + "mkdirp": "~0.5.1", + "object.values": "^1.1.0", + "sax": "~1.2.4", + "stable": "^0.1.8", + "unquote": "~1.1.1", + "util.promisify": "~1.0.0" + } + }, + "symbol-tree": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.4.tgz", + "integrity": "sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==" + }, + "table": { + "version": "5.4.6", + "resolved": "https://registry.npmjs.org/table/-/table-5.4.6.tgz", + "integrity": "sha512-wmEc8m4fjnob4gt5riFRtTu/6+4rSe12TpAELNSqHMfF3IqnA+CH37USM6/YR3qRZv7e56kAEAtd6nKZaxe0Ug==", + "requires": { + "ajv": "^6.10.2", + "lodash": "^4.17.14", + "slice-ansi": "^2.1.0", + "string-width": "^3.0.0" + }, + "dependencies": { + "emoji-regex": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", + "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==" + }, + "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": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=" + }, + "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==", + "requires": { + "emoji-regex": "^7.0.1", + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^5.1.0" + } + } + } + }, + "tapable": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-1.1.3.tgz", + "integrity": "sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA==" + }, + "terser": { + "version": "4.8.0", + "resolved": "https://registry.npmjs.org/terser/-/terser-4.8.0.tgz", + "integrity": "sha512-EAPipTNeWsb/3wLPeup1tVPaXfIaU68xMnVdPafIL1TV05OhASArYyIfFvnvJCNrR2NIOvDVNNTFRa+Re2MWyw==", + "requires": { + "commander": "^2.20.0", + "source-map": "~0.6.1", + "source-map-support": "~0.5.12" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" + } + } + }, + "terser-webpack-plugin": { + "version": "2.3.5", + "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-2.3.5.tgz", + "integrity": "sha512-WlWksUoq+E4+JlJ+h+U+QUzXpcsMSSNXkDy9lBVkSqDn1w23Gg29L/ary9GeJVYCGiNJJX7LnVc4bwL1N3/g1w==", + "requires": { + "cacache": "^13.0.1", + "find-cache-dir": "^3.2.0", + "jest-worker": "^25.1.0", + "p-limit": "^2.2.2", + "schema-utils": "^2.6.4", + "serialize-javascript": "^2.1.2", + "source-map": "^0.6.1", + "terser": "^4.4.3", + "webpack-sources": "^1.4.3" + }, + "dependencies": { + "find-cache-dir": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-3.3.1.tgz", + "integrity": "sha512-t2GDMt3oGC/v+BMwzmllWDuJF/xcDtE5j/fCGbqDD7OLuJkj0cfh1YSA5VKPvwMeLFLNDBkwOKZ2X85jGLVftQ==", + "requires": { + "commondir": "^1.0.1", + "make-dir": "^3.0.2", + "pkg-dir": "^4.1.0" + } + }, + "find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "requires": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + } + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" + }, + "jest-worker": { + "version": "25.5.0", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-25.5.0.tgz", + "integrity": "sha512-/dsSmUkIy5EBGfv/IjjqmFxrNAUpBERfGs1oHROyD7yxjG/w+t0GOJDX8O1k32ySmd7+a5IhnJU2qQFcJ4n1vw==", + "requires": { + "merge-stream": "^2.0.0", + "supports-color": "^7.0.0" + } + }, + "locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "requires": { + "p-locate": "^4.1.0" + } + }, + "make-dir": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", + "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", + "requires": { + "semver": "^6.0.0" + } + }, + "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==", + "requires": { + "p-limit": "^2.2.0" + } + }, + "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==" + }, + "pkg-dir": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", + "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", + "requires": { + "find-up": "^4.0.0" + } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" + }, + "supports-color": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.1.0.tgz", + "integrity": "sha512-oRSIpR8pxT1Wr2FquTNnGet79b3BWljqOuoW/h4oBhxJ/HUbX5nX6JSruTkvXDCFMwDPvsaTTbvMLKZWSy0R5g==", + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "test-exclude": { + "version": "5.2.3", + "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-5.2.3.tgz", + "integrity": "sha512-M+oxtseCFO3EDtAaGH7iiej3CBkzXqFMbzqYAACdzKui4eZA+pq3tZEwChvOdNfa7xxy8BfbmgJSIr43cC/+2g==", + "requires": { + "glob": "^7.1.3", + "minimatch": "^3.0.4", + "read-pkg-up": "^4.0.0", + "require-main-filename": "^2.0.0" + } + }, + "text-table": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", + "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=" + }, + "throat": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/throat/-/throat-4.1.0.tgz", + "integrity": "sha1-iQN8vJLFarGJJua6TLsgDhVnKmo=" + }, + "through": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", + "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=" + }, + "through2": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", + "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", + "requires": { + "readable-stream": "~2.3.6", + "xtend": "~4.0.1" + }, + "dependencies": { + "readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "requires": { + "safe-buffer": "~5.1.0" + } + } + } + }, + "thunky": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/thunky/-/thunky-1.1.0.tgz", + "integrity": "sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA==" + }, + "timers-browserify": { + "version": "2.0.11", + "resolved": "https://registry.npmjs.org/timers-browserify/-/timers-browserify-2.0.11.tgz", + "integrity": "sha512-60aV6sgJ5YEbzUdn9c8kYGIqOubPoUdqQCul3SBAsRCZ40s6Y5cMcrW4dt3/k/EsbLVJNl9n6Vz3fTc+k2GeKQ==", + "requires": { + "setimmediate": "^1.0.4" + } + }, + "timsort": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/timsort/-/timsort-0.3.0.tgz", + "integrity": "sha1-QFQRqOfmM5/mTbmiNN4R3DHgK9Q=" + }, + "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==" + }, + "tmp": { + "version": "0.0.33", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", + "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", + "requires": { + "os-tmpdir": "~1.0.2" + } + }, + "tmpl": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/tmpl/-/tmpl-1.0.4.tgz", + "integrity": "sha1-I2QN17QtAEM5ERQIIOXPRA5SHdE=" + }, + "to-arraybuffer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz", + "integrity": "sha1-fSKbH8xjfkZsoIEYCDanqr/4P0M=" + }, + "to-fast-properties": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", + "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=" + }, + "to-object-path": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz", + "integrity": "sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68=", + "requires": { + "kind-of": "^3.0.2" + } + }, + "to-regex": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/to-regex/-/to-regex-3.0.2.tgz", + "integrity": "sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==", + "requires": { + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "regex-not": "^1.0.2", + "safe-regex": "^1.1.0" + } + }, + "to-regex-range": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", + "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=", + "requires": { + "is-number": "^3.0.0", + "repeat-string": "^1.6.1" + } + }, + "toidentifier": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.0.tgz", + "integrity": "sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw==" + }, + "tough-cookie": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz", + "integrity": "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==", + "requires": { + "psl": "^1.1.28", + "punycode": "^2.1.1" + } + }, + "tr46": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-1.0.1.tgz", + "integrity": "sha1-qLE/1r/SSJUZZ0zN5VujaTtwbQk=", + "requires": { + "punycode": "^2.1.0" + } + }, + "ts-pnp": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/ts-pnp/-/ts-pnp-1.1.6.tgz", + "integrity": "sha512-CrG5GqAAzMT7144Cl+UIFP7mz/iIhiy+xQ6GGcnjTezhALT02uPMRw7tgDSESgB5MsfKt55+GPWw4ir1kVtMIQ==" + }, + "tslib": { + "version": "1.13.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.13.0.tgz", + "integrity": "sha512-i/6DQjL8Xf3be4K/E6Wgpekn5Qasl1usyw++dAA35Ue5orEn65VIxOA+YvNNl9HV3qv70T7CNwjODHZrLwvd1Q==" + }, + "tsutils": { + "version": "3.17.1", + "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.17.1.tgz", + "integrity": "sha512-kzeQ5B8H3w60nFY2g8cJIuH7JDpsALXySGtwGJ0p2LSjLgay3NdIpqq5SoOBe46bKDW2iq25irHCr8wjomUS2g==", + "requires": { + "tslib": "^1.8.1" + } + }, + "tty-browserify": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/tty-browserify/-/tty-browserify-0.0.0.tgz", + "integrity": "sha1-oVe6QC2iTpv5V/mqadUk7tQpAaY=" + }, + "tunnel-agent": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", + "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=", + "requires": { + "safe-buffer": "^5.0.1" + } + }, + "tweetnacl": { + "version": "0.14.5", + "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", + "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=" + }, + "type": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/type/-/type-1.2.0.tgz", + "integrity": "sha512-+5nt5AAniqsCnu2cEQQdpzCAh33kVx8n0VoFidKpB1dVVLAN/F+bgVOqOJqOnEnrhp222clB5p3vUlD+1QAnfg==" + }, + "type-check": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", + "integrity": "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=", + "requires": { + "prelude-ls": "~1.1.2" + } + }, + "type-fest": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", + "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==" + }, + "type-is": { + "version": "1.6.18", + "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", + "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", + "requires": { + "media-typer": "0.3.0", + "mime-types": "~2.1.24" + } + }, + "typedarray": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", + "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=" + }, + "unicode-canonical-property-names-ecmascript": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-1.0.4.tgz", + "integrity": "sha512-jDrNnXWHd4oHiTZnx/ZG7gtUTVp+gCcTTKr8L0HjlwphROEW3+Him+IpvC+xcJEFegapiMZyZe02CyuOnRmbnQ==" + }, + "unicode-match-property-ecmascript": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-1.0.4.tgz", + "integrity": "sha512-L4Qoh15vTfntsn4P1zqnHulG0LdXgjSO035fEpdtp6YxXhMT51Q6vgM5lYdG/5X3MjS+k/Y9Xw4SFCY9IkR0rg==", + "requires": { + "unicode-canonical-property-names-ecmascript": "^1.0.4", + "unicode-property-aliases-ecmascript": "^1.0.4" + } + }, + "unicode-match-property-value-ecmascript": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-1.2.0.tgz", + "integrity": "sha512-wjuQHGQVofmSJv1uVISKLE5zO2rNGzM/KCYZch/QQvez7C1hUhBIuZ701fYXExuufJFMPhv2SyL8CyoIfMLbIQ==" + }, + "unicode-property-aliases-ecmascript": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-1.1.0.tgz", + "integrity": "sha512-PqSoPh/pWetQ2phoj5RLiaqIk4kCNwoV3CI+LfGmWLKI3rE3kl1h59XpX2BjgDrmbxD9ARtQobPGU1SguCYuQg==" + }, + "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==", + "requires": { + "arr-union": "^3.1.0", + "get-value": "^2.0.6", + "is-extendable": "^0.1.1", + "set-value": "^2.0.1" + } + }, + "uniq": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/uniq/-/uniq-1.0.1.tgz", + "integrity": "sha1-sxxa6CVIRKOoKBVBzisEuGWnNP8=" + }, + "uniqs": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/uniqs/-/uniqs-2.0.0.tgz", + "integrity": "sha1-/+3ks2slKQaW5uFl1KWe25mOawI=" + }, + "unique-filename": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-1.1.1.tgz", + "integrity": "sha512-Vmp0jIp2ln35UTXuryvjzkjGdRyf9b2lTXuSYUiPmzRcl3FDtYqAwOnTJkAngD9SWhnoJzDbTKwaOrZ+STtxNQ==", + "requires": { + "unique-slug": "^2.0.0" + } + }, + "unique-slug": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-2.0.2.tgz", + "integrity": "sha512-zoWr9ObaxALD3DOPfjPSqxt4fnZiWblxHIgeWqW8x7UqDzEtHEQLzji2cuJYQFCU6KmoJikOYAZlrTHHebjx2w==", + "requires": { + "imurmurhash": "^0.1.4" + } + }, + "universalify": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", + "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==" + }, + "unpipe": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", + "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=" + }, + "unquote": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/unquote/-/unquote-1.1.1.tgz", + "integrity": "sha1-j97XMk7G6IoP+LkF58CYzcCG1UQ=" + }, + "unset-value": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz", + "integrity": "sha1-g3aHP30jNRef+x5vw6jtDfyKtVk=", + "requires": { + "has-value": "^0.3.1", + "isobject": "^3.0.0" + }, + "dependencies": { + "has-value": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/has-value/-/has-value-0.3.1.tgz", + "integrity": "sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8=", + "requires": { + "get-value": "^2.0.3", + "has-values": "^0.1.4", + "isobject": "^2.0.0" + }, + "dependencies": { + "isobject": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", + "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", + "requires": { + "isarray": "1.0.0" + } + } + } + }, + "has-values": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/has-values/-/has-values-0.1.4.tgz", + "integrity": "sha1-bWHeldkd/Km5oCCJrThL/49it3E=" + } + } + }, + "upath": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/upath/-/upath-1.2.0.tgz", + "integrity": "sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg==" + }, + "uri-js": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.2.2.tgz", + "integrity": "sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ==", + "requires": { + "punycode": "^2.1.0" + } + }, + "urix": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz", + "integrity": "sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI=" + }, + "url": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/url/-/url-0.11.0.tgz", + "integrity": "sha1-ODjpfPxgUh63PFJajlW/3Z4uKPE=", + "requires": { + "punycode": "1.3.2", + "querystring": "0.2.0" + }, + "dependencies": { + "punycode": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz", + "integrity": "sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0=" + } + } + }, + "url-loader": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/url-loader/-/url-loader-2.3.0.tgz", + "integrity": "sha512-goSdg8VY+7nPZKUEChZSEtW5gjbS66USIGCeSJ1OVOJ7Yfuh/36YxCwMi5HVEJh6mqUYOoy3NJ0vlOMrWsSHog==", + "requires": { + "loader-utils": "^1.2.3", + "mime": "^2.4.4", + "schema-utils": "^2.5.0" + } + }, + "url-parse": { + "version": "1.4.7", + "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.4.7.tgz", + "integrity": "sha512-d3uaVyzDB9tQoSXFvuSUNFibTd9zxd2bkVrDRvF5TmvWWQwqE4lgYJ5m+x1DbecWkw+LK4RNl2CU1hHuOKPVlg==", + "requires": { + "querystringify": "^2.1.1", + "requires-port": "^1.0.0" + } + }, + "use": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/use/-/use-3.1.1.tgz", + "integrity": "sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==" + }, + "util": { + "version": "0.10.3", + "resolved": "https://registry.npmjs.org/util/-/util-0.10.3.tgz", + "integrity": "sha1-evsa/lCAUkZInj23/g7TeTNqwPk=", + "requires": { + "inherits": "2.0.1" + }, + "dependencies": { + "inherits": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", + "integrity": "sha1-sX0I0ya0Qj5Wjv9xn5GwscvfafE=" + } + } + }, + "util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=" + }, + "util.promisify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/util.promisify/-/util.promisify-1.0.1.tgz", + "integrity": "sha512-g9JpC/3He3bm38zsLupWryXHoEcS22YHthuPQSJdMy6KNrzIRzWqcsHzD/WUnqe45whVou4VIsPew37DoXWNrA==", + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.2", + "has-symbols": "^1.0.1", + "object.getownpropertydescriptors": "^2.1.0" + } + }, + "utila": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/utila/-/utila-0.4.0.tgz", + "integrity": "sha1-ihagXURWV6Oupe7MWxKk+lN5dyw=" + }, + "utils-merge": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", + "integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=" + }, + "uuid": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", + "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==" + }, + "v8-compile-cache": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.1.1.tgz", + "integrity": "sha512-8OQ9CL+VWyt3JStj7HX7/ciTL2V3Rl1Wf5OL+SNTm0yK1KvtReVulksyeRnCANHHuUxHlQig+JJDlUhBt1NQDQ==" + }, + "validate-npm-package-license": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", + "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", + "requires": { + "spdx-correct": "^3.0.0", + "spdx-expression-parse": "^3.0.0" + } + }, + "vary": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", + "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=" + }, + "vendors": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/vendors/-/vendors-1.0.4.tgz", + "integrity": "sha512-/juG65kTL4Cy2su4P8HjtkTxk6VmJDiOPBufWniqQ6wknac6jNiXS9vU+hO3wgusiyqWlzTbVHi0dyJqRONg3w==" + }, + "verror": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", + "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=", + "requires": { + "assert-plus": "^1.0.0", + "core-util-is": "1.0.2", + "extsprintf": "^1.2.0" + } + }, + "vm-browserify": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/vm-browserify/-/vm-browserify-1.1.2.tgz", + "integrity": "sha512-2ham8XPWTONajOR0ohOKOHXkm3+gaBmGut3SRuu75xLd/RRaY6vqgh8NBYYk7+RW3u5AtzPQZG8F10LHkl0lAQ==" + }, + "w3c-hr-time": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/w3c-hr-time/-/w3c-hr-time-1.0.2.tgz", + "integrity": "sha512-z8P5DvDNjKDoFIHK7q8r8lackT6l+jo/Ye3HOle7l9nICP9lf1Ci25fy9vHd0JOWewkIFzXIEig3TdKT7JQ5fQ==", + "requires": { + "browser-process-hrtime": "^1.0.0" + } + }, + "w3c-xmlserializer": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-1.1.2.tgz", + "integrity": "sha512-p10l/ayESzrBMYWRID6xbuCKh2Fp77+sA0doRuGn4tTIMrrZVeqfpKjXHY+oDh3K4nLdPgNwMTVP6Vp4pvqbNg==", + "requires": { + "domexception": "^1.0.1", + "webidl-conversions": "^4.0.2", + "xml-name-validator": "^3.0.0" + } + }, + "wait-for-expect": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/wait-for-expect/-/wait-for-expect-3.0.2.tgz", + "integrity": "sha512-cfS1+DZxuav1aBYbaO/kE06EOS8yRw7qOFoD3XtjTkYvCvh3zUvNST8DXK/nPaeqIzIv3P3kL3lRJn8iwOiSag==" + }, + "walker": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/walker/-/walker-1.0.7.tgz", + "integrity": "sha1-L3+bj9ENZ3JisYqITijRlhjgKPs=", + "requires": { + "makeerror": "1.0.x" + } + }, + "watchpack": { + "version": "1.7.2", + "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-1.7.2.tgz", + "integrity": "sha512-ymVbbQP40MFTp+cNMvpyBpBtygHnPzPkHqoIwRRj/0B8KhqQwV8LaKjtbaxF2lK4vl8zN9wCxS46IFCU5K4W0g==", + "requires": { + "chokidar": "^3.4.0", + "graceful-fs": "^4.1.2", + "neo-async": "^2.5.0", + "watchpack-chokidar2": "^2.0.0" + } + }, + "watchpack-chokidar2": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/watchpack-chokidar2/-/watchpack-chokidar2-2.0.0.tgz", + "integrity": "sha512-9TyfOyN/zLUbA288wZ8IsMZ+6cbzvsNyEzSBp6e/zkifi6xxbl8SmQ/CxQq32k8NNqrdVEVUVSEf56L4rQ/ZxA==", + "optional": true, + "requires": { + "chokidar": "^2.1.8" + }, + "dependencies": { + "binary-extensions": { + "version": "1.13.1", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.13.1.tgz", + "integrity": "sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw==", + "optional": true + }, + "chokidar": { + "version": "2.1.8", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.1.8.tgz", + "integrity": "sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg==", + "optional": true, + "requires": { + "anymatch": "^2.0.0", + "async-each": "^1.0.1", + "braces": "^2.3.2", + "fsevents": "^1.2.7", + "glob-parent": "^3.1.0", + "inherits": "^2.0.3", + "is-binary-path": "^1.0.0", + "is-glob": "^4.0.0", + "normalize-path": "^3.0.0", + "path-is-absolute": "^1.0.0", + "readdirp": "^2.2.1", + "upath": "^1.1.1" + } + }, + "fsevents": { + "version": "1.2.13", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.13.tgz", + "integrity": "sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw==", + "optional": true + }, + "glob-parent": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", + "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=", + "optional": true, + "requires": { + "is-glob": "^3.1.0", + "path-dirname": "^1.0.0" + }, + "dependencies": { + "is-glob": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", + "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", + "optional": true, + "requires": { + "is-extglob": "^2.1.0" + } + } + } + }, + "is-binary-path": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz", + "integrity": "sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg=", + "optional": true, + "requires": { + "binary-extensions": "^1.0.0" + } + }, + "normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "optional": true + }, + "readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "optional": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "readdirp": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.2.1.tgz", + "integrity": "sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ==", + "optional": true, + "requires": { + "graceful-fs": "^4.1.11", + "micromatch": "^3.1.10", + "readable-stream": "^2.0.2" + } + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "optional": true, + "requires": { + "safe-buffer": "~5.1.0" + } + } + } + }, + "wbuf": { + "version": "1.7.3", + "resolved": "https://registry.npmjs.org/wbuf/-/wbuf-1.7.3.tgz", + "integrity": "sha512-O84QOnr0icsbFGLS0O3bI5FswxzRr8/gHwWkDlQFskhSPryQXvrTMxjxGP4+iWYoauLoBvfDpkrOauZ+0iZpDA==", + "requires": { + "minimalistic-assert": "^1.0.0" + } + }, + "webidl-conversions": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-4.0.2.tgz", + "integrity": "sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==" + }, + "webpack": { + "version": "4.42.0", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-4.42.0.tgz", + "integrity": "sha512-EzJRHvwQyBiYrYqhyjW9AqM90dE4+s1/XtCfn7uWg6cS72zH+2VPFAlsnW0+W0cDi0XRjNKUMoJtpSi50+Ph6w==", + "requires": { + "@webassemblyjs/ast": "1.8.5", + "@webassemblyjs/helper-module-context": "1.8.5", + "@webassemblyjs/wasm-edit": "1.8.5", + "@webassemblyjs/wasm-parser": "1.8.5", + "acorn": "^6.2.1", + "ajv": "^6.10.2", + "ajv-keywords": "^3.4.1", + "chrome-trace-event": "^1.0.2", + "enhanced-resolve": "^4.1.0", + "eslint-scope": "^4.0.3", + "json-parse-better-errors": "^1.0.2", + "loader-runner": "^2.4.0", + "loader-utils": "^1.2.3", + "memory-fs": "^0.4.1", + "micromatch": "^3.1.10", + "mkdirp": "^0.5.1", + "neo-async": "^2.6.1", + "node-libs-browser": "^2.2.1", + "schema-utils": "^1.0.0", + "tapable": "^1.1.3", + "terser-webpack-plugin": "^1.4.3", + "watchpack": "^1.6.0", + "webpack-sources": "^1.4.1" + }, + "dependencies": { + "acorn": { + "version": "6.4.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.4.1.tgz", + "integrity": "sha512-ZVA9k326Nwrj3Cj9jlh3wGFutC2ZornPNARZwsNYqQYgN0EsV2d53w5RN/co65Ohn4sUAUtb1rSUAOD6XN9idA==" + }, + "cacache": { + "version": "12.0.4", + "resolved": "https://registry.npmjs.org/cacache/-/cacache-12.0.4.tgz", + "integrity": "sha512-a0tMB40oefvuInr4Cwb3GerbL9xTj1D5yg0T5xrjGCGyfvbxseIXX7BAO/u/hIXdafzOI5JC3wDwHyf24buOAQ==", + "requires": { + "bluebird": "^3.5.5", + "chownr": "^1.1.1", + "figgy-pudding": "^3.5.1", + "glob": "^7.1.4", + "graceful-fs": "^4.1.15", + "infer-owner": "^1.0.3", + "lru-cache": "^5.1.1", + "mississippi": "^3.0.0", + "mkdirp": "^0.5.1", + "move-concurrently": "^1.0.1", + "promise-inflight": "^1.0.1", + "rimraf": "^2.6.3", + "ssri": "^6.0.1", + "unique-filename": "^1.1.1", + "y18n": "^4.0.0" + } + }, + "eslint-scope": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-4.0.3.tgz", + "integrity": "sha512-p7VutNr1O/QrxysMo3E45FjYDTeXBy0iTltPFNSqKAIfjDSXC+4dj+qfyuD8bfAXrW/y6lW3O76VaYNPKfpKrg==", + "requires": { + "esrecurse": "^4.1.0", + "estraverse": "^4.1.1" + } + }, + "schema-utils": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz", + "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==", + "requires": { + "ajv": "^6.1.0", + "ajv-errors": "^1.0.0", + "ajv-keywords": "^3.1.0" + } + }, + "serialize-javascript": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-3.1.0.tgz", + "integrity": "sha512-JIJT1DGiWmIKhzRsG91aS6Ze4sFUrYbltlkg2onR5OrnNM02Kl/hnY/T4FN2omvyeBbQmMJv+K4cPOpGzOTFBg==", + "requires": { + "randombytes": "^2.1.0" + } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" + }, + "ssri": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/ssri/-/ssri-6.0.1.tgz", + "integrity": "sha512-3Wge10hNcT1Kur4PDFwEieXSCMCJs/7WvSACcrMYrNp+b8kDL1/0wJch5Ni2WrtwEa2IO8OsVfeKIciKCDx/QA==", + "requires": { + "figgy-pudding": "^3.5.1" + } + }, + "terser-webpack-plugin": { + "version": "1.4.4", + "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-1.4.4.tgz", + "integrity": "sha512-U4mACBHIegmfoEe5fdongHESNJWqsGU+W0S/9+BmYGVQDw1+c2Ow05TpMhxjPK1sRb7cuYq1BPl1e5YHJMTCqA==", + "requires": { + "cacache": "^12.0.2", + "find-cache-dir": "^2.1.0", + "is-wsl": "^1.1.0", + "schema-utils": "^1.0.0", + "serialize-javascript": "^3.1.0", + "source-map": "^0.6.1", + "terser": "^4.1.2", + "webpack-sources": "^1.4.0", + "worker-farm": "^1.7.0" + } + } + } + }, + "webpack-dev-middleware": { + "version": "3.7.2", + "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-3.7.2.tgz", + "integrity": "sha512-1xC42LxbYoqLNAhV6YzTYacicgMZQTqRd27Sim9wn5hJrX3I5nxYy1SxSd4+gjUFsz1dQFj+yEe6zEVmSkeJjw==", + "requires": { + "memory-fs": "^0.4.1", + "mime": "^2.4.4", + "mkdirp": "^0.5.1", + "range-parser": "^1.2.1", + "webpack-log": "^2.0.0" + } + }, + "webpack-dev-server": { + "version": "3.10.3", + "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-3.10.3.tgz", + "integrity": "sha512-e4nWev8YzEVNdOMcNzNeCN947sWJNd43E5XvsJzbAL08kGc2frm1tQ32hTJslRS+H65LCb/AaUCYU7fjHCpDeQ==", + "requires": { + "ansi-html": "0.0.7", + "bonjour": "^3.5.0", + "chokidar": "^2.1.8", + "compression": "^1.7.4", + "connect-history-api-fallback": "^1.6.0", + "debug": "^4.1.1", + "del": "^4.1.1", + "express": "^4.17.1", + "html-entities": "^1.2.1", + "http-proxy-middleware": "0.19.1", + "import-local": "^2.0.0", + "internal-ip": "^4.3.0", + "ip": "^1.1.5", + "is-absolute-url": "^3.0.3", + "killable": "^1.0.1", + "loglevel": "^1.6.6", + "opn": "^5.5.0", + "p-retry": "^3.0.1", + "portfinder": "^1.0.25", + "schema-utils": "^1.0.0", + "selfsigned": "^1.10.7", + "semver": "^6.3.0", + "serve-index": "^1.9.1", + "sockjs": "0.3.19", + "sockjs-client": "1.4.0", + "spdy": "^4.0.1", + "strip-ansi": "^3.0.1", + "supports-color": "^6.1.0", + "url": "^0.11.0", + "webpack-dev-middleware": "^3.7.2", + "webpack-log": "^2.0.0", + "ws": "^6.2.1", + "yargs": "12.0.5" + }, + "dependencies": { + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=" + }, + "binary-extensions": { + "version": "1.13.1", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.13.1.tgz", + "integrity": "sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw==" + }, + "chokidar": { + "version": "2.1.8", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.1.8.tgz", + "integrity": "sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg==", + "requires": { + "anymatch": "^2.0.0", + "async-each": "^1.0.1", + "braces": "^2.3.2", + "fsevents": "^1.2.7", + "glob-parent": "^3.1.0", + "inherits": "^2.0.3", + "is-binary-path": "^1.0.0", + "is-glob": "^4.0.0", + "normalize-path": "^3.0.0", + "path-is-absolute": "^1.0.0", + "readdirp": "^2.2.1", + "upath": "^1.1.1" + } + }, + "cliui": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-4.1.0.tgz", + "integrity": "sha512-4FG+RSG9DL7uEwRUZXZn3SS34DiDPfzP0VOiEwtUWlE+AR2EIg+hSyvrIgUUfhdgR/UkAeW2QHgeP+hWrXs7jQ==", + "requires": { + "string-width": "^2.1.1", + "strip-ansi": "^4.0.0", + "wrap-ansi": "^2.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=" + }, + "strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "requires": { + "ansi-regex": "^3.0.0" + } + } + } + }, + "fsevents": { + "version": "1.2.13", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.13.tgz", + "integrity": "sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw==", + "optional": true + }, + "get-caller-file": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.3.tgz", + "integrity": "sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w==" + }, + "glob-parent": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", + "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=", + "requires": { + "is-glob": "^3.1.0", + "path-dirname": "^1.0.0" + }, + "dependencies": { + "is-glob": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", + "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", + "requires": { + "is-extglob": "^2.1.0" + } + } + } + }, + "is-absolute-url": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/is-absolute-url/-/is-absolute-url-3.0.3.tgz", + "integrity": "sha512-opmNIX7uFnS96NtPmhWQgQx6/NYFgsUXYMllcfzwWKUMwfo8kku1TvE6hkNcH+Q1ts5cMVrsY7j0bxXQDciu9Q==" + }, + "is-binary-path": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz", + "integrity": "sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg=", + "requires": { + "binary-extensions": "^1.0.0" + } + }, + "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": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=" + }, + "normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==" + }, + "readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "readdirp": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.2.1.tgz", + "integrity": "sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ==", + "requires": { + "graceful-fs": "^4.1.11", + "micromatch": "^3.1.10", + "readable-stream": "^2.0.2" + } + }, + "require-main-filename": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-1.0.1.tgz", + "integrity": "sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE=" + }, + "schema-utils": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz", + "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==", + "requires": { + "ajv": "^6.1.0", + "ajv-errors": "^1.0.0", + "ajv-keywords": "^3.1.0" + } + }, + "string-width": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", + "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", + "requires": { + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^4.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=" + }, + "strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "requires": { + "ansi-regex": "^3.0.0" + } + } + } + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "requires": { + "safe-buffer": "~5.1.0" + } + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "requires": { + "ansi-regex": "^2.0.0" + } + }, + "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==", + "requires": { + "has-flag": "^3.0.0" + } + }, + "wrap-ansi": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz", + "integrity": "sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=", + "requires": { + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1" + }, + "dependencies": { + "is-fullwidth-code-point": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", + "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", + "requires": { + "number-is-nan": "^1.0.0" + } + }, + "string-width": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "requires": { + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" + } + } + } + }, + "ws": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/ws/-/ws-6.2.1.tgz", + "integrity": "sha512-GIyAXC2cB7LjvpgMt9EKS2ldqr0MTrORaleiOno6TweZ6r3TKtoFQWay/2PceJ3RuBasOHzXNn5Lrw1X0bEjqA==", + "requires": { + "async-limiter": "~1.0.0" + } + }, + "yargs": { + "version": "12.0.5", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-12.0.5.tgz", + "integrity": "sha512-Lhz8TLaYnxq/2ObqHDql8dX8CJi97oHxrjUcYtzKbbykPtVW9WB+poxI+NM2UIzsMgNCZTIf0AQwsjK5yMAqZw==", + "requires": { + "cliui": "^4.0.0", + "decamelize": "^1.2.0", + "find-up": "^3.0.0", + "get-caller-file": "^1.0.1", + "os-locale": "^3.0.0", + "require-directory": "^2.1.1", + "require-main-filename": "^1.0.1", + "set-blocking": "^2.0.0", + "string-width": "^2.0.0", + "which-module": "^2.0.0", + "y18n": "^3.2.1 || ^4.0.0", + "yargs-parser": "^11.1.1" + } + }, + "yargs-parser": { + "version": "11.1.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-11.1.1.tgz", + "integrity": "sha512-C6kB/WJDiaxONLJQnF8ccx9SEeoTTLek8RVbaOIsrAUS8VrBEXfmeSnCZxygc+XC2sNMBIwOOnfcxiynjHsVSQ==", + "requires": { + "camelcase": "^5.0.0", + "decamelize": "^1.2.0" + } + } + } + }, + "webpack-log": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/webpack-log/-/webpack-log-2.0.0.tgz", + "integrity": "sha512-cX8G2vR/85UYG59FgkoMamwHUIkSSlV3bBMRsbxVXVUk2j6NleCKjQ/WE9eYg9WY4w25O9w8wKP4rzNZFmUcUg==", + "requires": { + "ansi-colors": "^3.0.0", + "uuid": "^3.3.2" + } + }, + "webpack-manifest-plugin": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/webpack-manifest-plugin/-/webpack-manifest-plugin-2.2.0.tgz", + "integrity": "sha512-9S6YyKKKh/Oz/eryM1RyLVDVmy3NSPV0JXMRhZ18fJsq+AwGxUY34X54VNwkzYcEmEkDwNxuEOboCZEebJXBAQ==", + "requires": { + "fs-extra": "^7.0.0", + "lodash": ">=3.5 <5", + "object.entries": "^1.1.0", + "tapable": "^1.0.0" + }, + "dependencies": { + "fs-extra": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-7.0.1.tgz", + "integrity": "sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==", + "requires": { + "graceful-fs": "^4.1.2", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" + } + } + } + }, + "webpack-sources": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-1.4.3.tgz", + "integrity": "sha512-lgTS3Xhv1lCOKo7SA5TjKXMjpSM4sBjNV5+q2bqesbSPs5FjGmU6jjtBSkX9b4qW87vDIsCIlUPOEhbZrMdjeQ==", + "requires": { + "source-list-map": "^2.0.0", + "source-map": "~0.6.1" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" + } + } + }, + "websocket-driver": { + "version": "0.7.4", + "resolved": "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.4.tgz", + "integrity": "sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg==", + "requires": { + "http-parser-js": ">=0.5.1", + "safe-buffer": ">=5.1.0", + "websocket-extensions": ">=0.1.1" + } + }, + "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==" + }, + "whatwg-encoding": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-1.0.5.tgz", + "integrity": "sha512-b5lim54JOPN9HtzvK9HFXvBma/rnfFeqsic0hSpjtDbVxR3dJKLc+KB4V6GgiGOvl7CY/KNh8rxSo9DKQrnUEw==", + "requires": { + "iconv-lite": "0.4.24" + } + }, + "whatwg-fetch": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/whatwg-fetch/-/whatwg-fetch-3.0.0.tgz", + "integrity": "sha512-9GSJUgz1D4MfyKU7KRqwOjXCXTqWdFNvEr7eUBYchQiVc744mqK/MzXPNR2WsPkmkOa4ywfg8C2n8h+13Bey1Q==" + }, + "whatwg-mimetype": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-2.3.0.tgz", + "integrity": "sha512-M4yMwr6mAnQz76TbJm914+gPpB/nCwvZbJU28cUD6dR004SAxDLOOSUaB1JDRqLtaOV/vi0IC5lEAGFgrjGv/g==" + }, + "whatwg-url": { + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-6.5.0.tgz", + "integrity": "sha512-rhRZRqx/TLJQWUpQ6bmrt2UV4f0HCQ463yQuONJqC6fO2VoEb1pTYddbe59SkYq87aoM5A3bdhMZiUiVws+fzQ==", + "requires": { + "lodash.sortby": "^4.7.0", + "tr46": "^1.0.1", + "webidl-conversions": "^4.0.2" + } + }, + "which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "requires": { + "isexe": "^2.0.0" + } + }, + "which-module": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", + "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=" + }, + "word-wrap": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", + "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==" + }, + "workbox-background-sync": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/workbox-background-sync/-/workbox-background-sync-4.3.1.tgz", + "integrity": "sha512-1uFkvU8JXi7L7fCHVBEEnc3asPpiAL33kO495UMcD5+arew9IbKW2rV5lpzhoWcm/qhGB89YfO4PmB/0hQwPRg==", + "requires": { + "workbox-core": "^4.3.1" + } + }, + "workbox-broadcast-update": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/workbox-broadcast-update/-/workbox-broadcast-update-4.3.1.tgz", + "integrity": "sha512-MTSfgzIljpKLTBPROo4IpKjESD86pPFlZwlvVG32Kb70hW+aob4Jxpblud8EhNb1/L5m43DUM4q7C+W6eQMMbA==", + "requires": { + "workbox-core": "^4.3.1" + } + }, + "workbox-build": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/workbox-build/-/workbox-build-4.3.1.tgz", + "integrity": "sha512-UHdwrN3FrDvicM3AqJS/J07X0KXj67R8Cg0waq1MKEOqzo89ap6zh6LmaLnRAjpB+bDIz+7OlPye9iii9KBnxw==", + "requires": { + "@babel/runtime": "^7.3.4", + "@hapi/joi": "^15.0.0", + "common-tags": "^1.8.0", + "fs-extra": "^4.0.2", + "glob": "^7.1.3", + "lodash.template": "^4.4.0", + "pretty-bytes": "^5.1.0", + "stringify-object": "^3.3.0", + "strip-comments": "^1.0.2", + "workbox-background-sync": "^4.3.1", + "workbox-broadcast-update": "^4.3.1", + "workbox-cacheable-response": "^4.3.1", + "workbox-core": "^4.3.1", + "workbox-expiration": "^4.3.1", + "workbox-google-analytics": "^4.3.1", + "workbox-navigation-preload": "^4.3.1", + "workbox-precaching": "^4.3.1", + "workbox-range-requests": "^4.3.1", + "workbox-routing": "^4.3.1", + "workbox-strategies": "^4.3.1", + "workbox-streams": "^4.3.1", + "workbox-sw": "^4.3.1", + "workbox-window": "^4.3.1" + }, + "dependencies": { + "fs-extra": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-4.0.3.tgz", + "integrity": "sha512-q6rbdDd1o2mAnQreO7YADIxf/Whx4AHBiRf6d+/cVT8h44ss+lHgxf1FemcqDnQt9X3ct4McHr+JMGlYSsK7Cg==", + "requires": { + "graceful-fs": "^4.1.2", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" + } + } + } + }, + "workbox-cacheable-response": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/workbox-cacheable-response/-/workbox-cacheable-response-4.3.1.tgz", + "integrity": "sha512-Rp5qlzm6z8IOvnQNkCdO9qrDgDpoPNguovs0H8C+wswLuPgSzSp9p2afb5maUt9R1uTIwOXrVQMmPfPypv+npw==", + "requires": { + "workbox-core": "^4.3.1" + } + }, + "workbox-core": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/workbox-core/-/workbox-core-4.3.1.tgz", + "integrity": "sha512-I3C9jlLmMKPxAC1t0ExCq+QoAMd0vAAHULEgRZ7kieCdUd919n53WC0AfvokHNwqRhGn+tIIj7vcb5duCjs2Kg==" + }, + "workbox-expiration": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/workbox-expiration/-/workbox-expiration-4.3.1.tgz", + "integrity": "sha512-vsJLhgQsQouv9m0rpbXubT5jw0jMQdjpkum0uT+d9tTwhXcEZks7qLfQ9dGSaufTD2eimxbUOJfWLbNQpIDMPw==", + "requires": { + "workbox-core": "^4.3.1" + } + }, + "workbox-google-analytics": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/workbox-google-analytics/-/workbox-google-analytics-4.3.1.tgz", + "integrity": "sha512-xzCjAoKuOb55CBSwQrbyWBKqp35yg1vw9ohIlU2wTy06ZrYfJ8rKochb1MSGlnoBfXGWss3UPzxR5QL5guIFdg==", + "requires": { + "workbox-background-sync": "^4.3.1", + "workbox-core": "^4.3.1", + "workbox-routing": "^4.3.1", + "workbox-strategies": "^4.3.1" + } + }, + "workbox-navigation-preload": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/workbox-navigation-preload/-/workbox-navigation-preload-4.3.1.tgz", + "integrity": "sha512-K076n3oFHYp16/C+F8CwrRqD25GitA6Rkd6+qAmLmMv1QHPI2jfDwYqrytOfKfYq42bYtW8Pr21ejZX7GvALOw==", + "requires": { + "workbox-core": "^4.3.1" + } + }, + "workbox-precaching": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/workbox-precaching/-/workbox-precaching-4.3.1.tgz", + "integrity": "sha512-piSg/2csPoIi/vPpp48t1q5JLYjMkmg5gsXBQkh/QYapCdVwwmKlU9mHdmy52KsDGIjVaqEUMFvEzn2LRaigqQ==", + "requires": { + "workbox-core": "^4.3.1" + } + }, + "workbox-range-requests": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/workbox-range-requests/-/workbox-range-requests-4.3.1.tgz", + "integrity": "sha512-S+HhL9+iTFypJZ/yQSl/x2Bf5pWnbXdd3j57xnb0V60FW1LVn9LRZkPtneODklzYuFZv7qK6riZ5BNyc0R0jZA==", + "requires": { + "workbox-core": "^4.3.1" + } + }, + "workbox-routing": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/workbox-routing/-/workbox-routing-4.3.1.tgz", + "integrity": "sha512-FkbtrODA4Imsi0p7TW9u9MXuQ5P4pVs1sWHK4dJMMChVROsbEltuE79fBoIk/BCztvOJ7yUpErMKa4z3uQLX+g==", + "requires": { + "workbox-core": "^4.3.1" + } + }, + "workbox-strategies": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/workbox-strategies/-/workbox-strategies-4.3.1.tgz", + "integrity": "sha512-F/+E57BmVG8dX6dCCopBlkDvvhg/zj6VDs0PigYwSN23L8hseSRwljrceU2WzTvk/+BSYICsWmRq5qHS2UYzhw==", + "requires": { + "workbox-core": "^4.3.1" + } + }, + "workbox-streams": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/workbox-streams/-/workbox-streams-4.3.1.tgz", + "integrity": "sha512-4Kisis1f/y0ihf4l3u/+ndMkJkIT4/6UOacU3A4BwZSAC9pQ9vSvJpIi/WFGQRH/uPXvuVjF5c2RfIPQFSS2uA==", + "requires": { + "workbox-core": "^4.3.1" + } + }, + "workbox-sw": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/workbox-sw/-/workbox-sw-4.3.1.tgz", + "integrity": "sha512-0jXdusCL2uC5gM3yYFT6QMBzKfBr2XTk0g5TPAV4y8IZDyVNDyj1a8uSXy3/XrvkVTmQvLN4O5k3JawGReXr9w==" + }, + "workbox-webpack-plugin": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/workbox-webpack-plugin/-/workbox-webpack-plugin-4.3.1.tgz", + "integrity": "sha512-gJ9jd8Mb8wHLbRz9ZvGN57IAmknOipD3W4XNE/Lk/4lqs5Htw4WOQgakQy/o/4CoXQlMCYldaqUg+EJ35l9MEQ==", + "requires": { + "@babel/runtime": "^7.0.0", + "json-stable-stringify": "^1.0.1", + "workbox-build": "^4.3.1" + } + }, + "workbox-window": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/workbox-window/-/workbox-window-4.3.1.tgz", + "integrity": "sha512-C5gWKh6I58w3GeSc0wp2Ne+rqVw8qwcmZnQGpjiek8A2wpbxSJb1FdCoQVO+jDJs35bFgo/WETgl1fqgsxN0Hg==", + "requires": { + "workbox-core": "^4.3.1" + } + }, + "worker-farm": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/worker-farm/-/worker-farm-1.7.0.tgz", + "integrity": "sha512-rvw3QTZc8lAxyVrqcSGVm5yP/IJ2UcB3U0graE3LCFoZ0Yn2x4EoVSqJKdB/T5M+FLcRPjz4TDacRf3OCfNUzw==", + "requires": { + "errno": "~0.1.7" + } + }, + "worker-rpc": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/worker-rpc/-/worker-rpc-0.1.1.tgz", + "integrity": "sha512-P1WjMrUB3qgJNI9jfmpZ/htmBEjFh//6l/5y8SD9hg1Ef5zTTVVoRjTrTEzPrNBQvmhMxkoTsjOXN10GWU7aCg==", + "requires": { + "microevent.ts": "~0.1.1" + } + }, + "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==", + "requires": { + "ansi-styles": "^3.2.0", + "string-width": "^3.0.0", + "strip-ansi": "^5.0.0" + }, + "dependencies": { + "emoji-regex": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", + "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==" + }, + "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": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=" + }, + "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==", + "requires": { + "emoji-regex": "^7.0.1", + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^5.1.0" + } + } + } + }, + "wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" + }, + "write": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/write/-/write-1.0.3.tgz", + "integrity": "sha512-/lg70HAjtkUgWPVZhZcm+T4hkL8Zbtp1nFNOn3lRrxnlv50SRBv7cR7RqR+GMsd3hUXy9hWBo4CHTbFTcOYwig==", + "requires": { + "mkdirp": "^0.5.1" + } + }, + "write-file-atomic": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-2.4.1.tgz", + "integrity": "sha512-TGHFeZEZMnv+gBFRfjAcxL5bPHrsGKtnb4qsFAws7/vlh+QfwAaySIw4AXP9ZskTTh5GWu3FLuJhsWVdiJPGvg==", + "requires": { + "graceful-fs": "^4.1.11", + "imurmurhash": "^0.1.4", + "signal-exit": "^3.0.2" + } + }, + "ws": { + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/ws/-/ws-5.2.2.tgz", + "integrity": "sha512-jaHFD6PFv6UgoIVda6qZllptQsMlDEJkTQcybzzXDYM1XO9Y8em691FGMPmM46WGyLU4z9KMgQN+qrux/nhlHA==", + "requires": { + "async-limiter": "~1.0.0" + } + }, + "xml-name-validator": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-3.0.0.tgz", + "integrity": "sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw==" + }, + "xmlchars": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/xmlchars/-/xmlchars-2.2.0.tgz", + "integrity": "sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==" + }, + "xregexp": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/xregexp/-/xregexp-4.3.0.tgz", + "integrity": "sha512-7jXDIFXh5yJ/orPn4SXjuVrWWoi4Cr8jfV1eHv9CixKSbU+jY4mxfrBwAuDvupPNKpMUY+FeIqsVw/JLT9+B8g==", + "requires": { + "@babel/runtime-corejs3": "^7.8.3" + } + }, + "xtend": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", + "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==" + }, + "y18n": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.0.tgz", + "integrity": "sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w==" + }, + "yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" + }, + "yaml": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.0.tgz", + "integrity": "sha512-yr2icI4glYaNG+KWONODapy2/jDdMSDnrONSjblABjD9B4Z5LgiircSt8m8sRZFNi08kG9Sm0uSHtEmP3zaEGg==" + }, + "yargs": { + "version": "13.3.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-13.3.2.tgz", + "integrity": "sha512-AX3Zw5iPruN5ie6xGRIDgqkT+ZhnRlZMLMHAs8tg7nRruy2Nb+i5o9bwghAogtM08q1dpr2LVoS8KSTMYpWXUw==", + "requires": { + "cliui": "^5.0.0", + "find-up": "^3.0.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": "^3.0.0", + "which-module": "^2.0.0", + "y18n": "^4.0.0", + "yargs-parser": "^13.1.2" + }, + "dependencies": { + "emoji-regex": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", + "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==" + }, + "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": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=" + }, + "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==", + "requires": { + "emoji-regex": "^7.0.1", + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^5.1.0" + } + } + } + }, + "yargs-parser": { + "version": "13.1.2", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-13.1.2.tgz", + "integrity": "sha512-3lbsNRf/j+A4QuSZfDRA7HRSfWrzO0YjqTJd5kjAq37Zep1CEgaYmrH9Q3GwPiB9cHyd1Y1UwggGhJGoxipbzg==", + "requires": { + "camelcase": "^5.0.0", + "decamelize": "^1.2.0" + } + } + } +} diff --git a/recipe-hooks-project/package.json b/recipe-hooks-project/package.json new file mode 100644 index 00000000..5f54e9a3 --- /dev/null +++ b/recipe-hooks-project/package.json @@ -0,0 +1,35 @@ +{ + "name": "recipe-hooks-project", + "version": "0.1.0", + "private": true, + "dependencies": { + "@material-ui/core": "^4.10.2", + "@testing-library/jest-dom": "^4.2.4", + "@testing-library/react": "^9.5.0", + "@testing-library/user-event": "^7.2.1", + "react": "^16.13.1", + "react-dom": "^16.13.1", + "react-scripts": "3.4.1" + }, + "scripts": { + "start": "react-scripts start", + "build": "react-scripts build", + "test": "react-scripts test", + "eject": "react-scripts eject" + }, + "eslintConfig": { + "extends": "react-app" + }, + "browserslist": { + "production": [ + ">0.2%", + "not dead", + "not op_mini all" + ], + "development": [ + "last 1 chrome version", + "last 1 firefox version", + "last 1 safari version" + ] + } +} diff --git a/recipe-hooks-project/public/favicon.ico b/recipe-hooks-project/public/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..bcd5dfd67cd0361b78123e95c2dd96031f27f743 GIT binary patch literal 3150 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 MDeX2GIKR{Qf5okjU;qFB literal 0 HcmV?d00001 diff --git a/recipe-hooks-project/public/index.html b/recipe-hooks-project/public/index.html new file mode 100644 index 00000000..aa069f27 --- /dev/null +++ b/recipe-hooks-project/public/index.html @@ -0,0 +1,43 @@ + + + + + + + + + + + + + React App + + + +
+ + + diff --git a/recipe-hooks-project/public/logo192.png b/recipe-hooks-project/public/logo192.png new file mode 100644 index 0000000000000000000000000000000000000000..fc44b0a3796c0e0a64c3d858ca038bd4570465d9 GIT binary patch literal 5347 zcmZWtbyO6NvR-oO24RV%BvuJ&=?+<7=`LvyB&A_#M7mSDYw1v6DJkiYl9XjT!%$dLEBTQ8R9|wd3008in6lFF3GV-6mLi?MoP_y~}QUnaDCHI#t z7w^m$@6DI)|C8_jrT?q=f8D?0AM?L)Z}xAo^e^W>t$*Y0KlT5=@bBjT9kxb%-KNdk zeOS1tKO#ChhG7%{ApNBzE2ZVNcxbrin#E1TiAw#BlUhXllzhN$qWez5l;h+t^q#Eav8PhR2|T}y5kkflaK`ba-eoE+Z2q@o6P$)=&` z+(8}+-McnNO>e#$Rr{32ngsZIAX>GH??tqgwUuUz6kjns|LjsB37zUEWd|(&O!)DY zQLrq%Y>)Y8G`yYbYCx&aVHi@-vZ3|ebG!f$sTQqMgi0hWRJ^Wc+Ibv!udh_r%2|U) zPi|E^PK?UE!>_4`f`1k4hqqj_$+d!EB_#IYt;f9)fBOumGNyglU(ofY`yHq4Y?B%- zp&G!MRY<~ajTgIHErMe(Z8JG*;D-PJhd@RX@QatggM7+G(Lz8eZ;73)72Hfx5KDOE zkT(m}i2;@X2AT5fW?qVp?@WgN$aT+f_6eo?IsLh;jscNRp|8H}Z9p_UBO^SJXpZew zEK8fz|0Th%(Wr|KZBGTM4yxkA5CFdAj8=QSrT$fKW#tweUFqr0TZ9D~a5lF{)%-tTGMK^2tz(y2v$i%V8XAxIywrZCp=)83p(zIk6@S5AWl|Oa2hF`~~^W zI;KeOSkw1O#TiQ8;U7OPXjZM|KrnN}9arP)m0v$c|L)lF`j_rpG(zW1Qjv$=^|p*f z>)Na{D&>n`jOWMwB^TM}slgTEcjxTlUby89j1)|6ydRfWERn3|7Zd2&e7?!K&5G$x z`5U3uFtn4~SZq|LjFVrz$3iln-+ucY4q$BC{CSm7Xe5c1J<=%Oagztj{ifpaZk_bQ z9Sb-LaQMKp-qJA*bP6DzgE3`}*i1o3GKmo2pn@dj0;He}F=BgINo};6gQF8!n0ULZ zL>kC0nPSFzlcB7p41doao2F7%6IUTi_+!L`MM4o*#Y#0v~WiO8uSeAUNp=vA2KaR&=jNR2iVwG>7t%sG2x_~yXzY)7K& zk3p+O0AFZ1eu^T3s};B%6TpJ6h-Y%B^*zT&SN7C=N;g|#dGIVMSOru3iv^SvO>h4M=t-N1GSLLDqVTcgurco6)3&XpU!FP6Hlrmj}f$ zp95;b)>M~`kxuZF3r~a!rMf4|&1=uMG$;h^g=Kl;H&Np-(pFT9FF@++MMEx3RBsK?AU0fPk-#mdR)Wdkj)`>ZMl#^<80kM87VvsI3r_c@_vX=fdQ`_9-d(xiI z4K;1y1TiPj_RPh*SpDI7U~^QQ?%0&!$Sh#?x_@;ag)P}ZkAik{_WPB4rHyW#%>|Gs zdbhyt=qQPA7`?h2_8T;-E6HI#im9K>au*(j4;kzwMSLgo6u*}-K`$_Gzgu&XE)udQ zmQ72^eZd|vzI)~!20JV-v-T|<4@7ruqrj|o4=JJPlybwMg;M$Ud7>h6g()CT@wXm` zbq=A(t;RJ^{Xxi*Ff~!|3!-l_PS{AyNAU~t{h;(N(PXMEf^R(B+ZVX3 z8y0;0A8hJYp@g+c*`>eTA|3Tgv9U8#BDTO9@a@gVMDxr(fVaEqL1tl?md{v^j8aUv zm&%PX4^|rX|?E4^CkplWWNv*OKM>DxPa z!RJ)U^0-WJMi)Ksc!^ixOtw^egoAZZ2Cg;X7(5xZG7yL_;UJ#yp*ZD-;I^Z9qkP`} zwCTs0*%rIVF1sgLervtnUo&brwz?6?PXRuOCS*JI-WL6GKy7-~yi0giTEMmDs_-UX zo=+nFrW_EfTg>oY72_4Z0*uG>MnXP=c0VpT&*|rvv1iStW;*^={rP1y?Hv+6R6bxFMkxpWkJ>m7Ba{>zc_q zEefC3jsXdyS5??Mz7IET$Kft|EMNJIv7Ny8ZOcKnzf`K5Cd)&`-fTY#W&jnV0l2vt z?Gqhic}l}mCv1yUEy$%DP}4AN;36$=7aNI^*AzV(eYGeJ(Px-j<^gSDp5dBAv2#?; zcMXv#aj>%;MiG^q^$0MSg-(uTl!xm49dH!{X0){Ew7ThWV~Gtj7h%ZD zVN-R-^7Cf0VH!8O)uUHPL2mO2tmE*cecwQv_5CzWeh)ykX8r5Hi`ehYo)d{Jnh&3p z9ndXT$OW51#H5cFKa76c<%nNkP~FU93b5h-|Cb}ScHs@4Q#|}byWg;KDMJ#|l zE=MKD*F@HDBcX@~QJH%56eh~jfPO-uKm}~t7VkHxHT;)4sd+?Wc4* z>CyR*{w@4(gnYRdFq=^(#-ytb^5ESD?x<0Skhb%Pt?npNW1m+Nv`tr9+qN<3H1f<% zZvNEqyK5FgPsQ`QIu9P0x_}wJR~^CotL|n zk?dn;tLRw9jJTur4uWoX6iMm914f0AJfB@C74a;_qRrAP4E7l890P&{v<}>_&GLrW z)klculcg`?zJO~4;BBAa=POU%aN|pmZJn2{hA!d!*lwO%YSIzv8bTJ}=nhC^n}g(ld^rn#kq9Z3)z`k9lvV>y#!F4e{5c$tnr9M{V)0m(Z< z#88vX6-AW7T2UUwW`g<;8I$Jb!R%z@rCcGT)-2k7&x9kZZT66}Ztid~6t0jKb&9mm zpa}LCb`bz`{MzpZR#E*QuBiZXI#<`5qxx=&LMr-UUf~@dRk}YI2hbMsAMWOmDzYtm zjof16D=mc`^B$+_bCG$$@R0t;e?~UkF?7<(vkb70*EQB1rfUWXh$j)R2)+dNAH5%R zEBs^?N;UMdy}V};59Gu#0$q53$}|+q7CIGg_w_WlvE}AdqoS<7DY1LWS9?TrfmcvT zaypmplwn=P4;a8-%l^e?f`OpGb}%(_mFsL&GywhyN(-VROj`4~V~9bGv%UhcA|YW% zs{;nh@aDX11y^HOFXB$a7#Sr3cEtNd4eLm@Y#fc&j)TGvbbMwze zXtekX_wJqxe4NhuW$r}cNy|L{V=t#$%SuWEW)YZTH|!iT79k#?632OFse{+BT_gau zJwQcbH{b}dzKO?^dV&3nTILYlGw{27UJ72ZN){BILd_HV_s$WfI2DC<9LIHFmtyw? zQ;?MuK7g%Ym+4e^W#5}WDLpko%jPOC=aN)3!=8)s#Rnercak&b3ESRX3z{xfKBF8L z5%CGkFmGO@x?_mPGlpEej!3!AMddChabyf~nJNZxx!D&{@xEb!TDyvqSj%Y5@A{}9 zRzoBn0?x}=krh{ok3Nn%e)#~uh;6jpezhA)ySb^b#E>73e*frBFu6IZ^D7Ii&rsiU z%jzygxT-n*joJpY4o&8UXr2s%j^Q{?e-voloX`4DQyEK+DmrZh8A$)iWL#NO9+Y@!sO2f@rI!@jN@>HOA< z?q2l{^%mY*PNx2FoX+A7X3N}(RV$B`g&N=e0uvAvEN1W^{*W?zT1i#fxuw10%~))J zjx#gxoVlXREWZf4hRkgdHx5V_S*;p-y%JtGgQ4}lnA~MBz-AFdxUxU1RIT$`sal|X zPB6sEVRjGbXIP0U+?rT|y5+ev&OMX*5C$n2SBPZr`jqzrmpVrNciR0e*Wm?fK6DY& zl(XQZ60yWXV-|Ps!A{EF;=_z(YAF=T(-MkJXUoX zI{UMQDAV2}Ya?EisdEW;@pE6dt;j0fg5oT2dxCi{wqWJ<)|SR6fxX~5CzblPGr8cb zUBVJ2CQd~3L?7yfTpLNbt)He1D>*KXI^GK%<`bq^cUq$Q@uJifG>p3LU(!H=C)aEL zenk7pVg}0{dKU}&l)Y2Y2eFMdS(JS0}oZUuVaf2+K*YFNGHB`^YGcIpnBlMhO7d4@vV zv(@N}(k#REdul8~fP+^F@ky*wt@~&|(&&meNO>rKDEnB{ykAZ}k>e@lad7to>Ao$B zz<1(L=#J*u4_LB=8w+*{KFK^u00NAmeNN7pr+Pf+N*Zl^dO{LM-hMHyP6N!~`24jd zXYP|Ze;dRXKdF2iJG$U{k=S86l@pytLx}$JFFs8e)*Vi?aVBtGJ3JZUj!~c{(rw5>vuRF$`^p!P8w1B=O!skwkO5yd4_XuG^QVF z`-r5K7(IPSiKQ2|U9+`@Js!g6sfJwAHVd|s?|mnC*q zp|B|z)(8+mxXyxQ{8Pg3F4|tdpgZZSoU4P&9I8)nHo1@)9_9u&NcT^FI)6|hsAZFk zZ+arl&@*>RXBf-OZxhZerOr&dN5LW9@gV=oGFbK*J+m#R-|e6(Loz(;g@T^*oO)0R zN`N=X46b{7yk5FZGr#5&n1!-@j@g02g|X>MOpF3#IjZ_4wg{dX+G9eqS+Es9@6nC7 zD9$NuVJI}6ZlwtUm5cCAiYv0(Yi{%eH+}t)!E^>^KxB5^L~a`4%1~5q6h>d;paC9c zTj0wTCKrhWf+F#5>EgX`sl%POl?oyCq0(w0xoL?L%)|Q7d|Hl92rUYAU#lc**I&^6p=4lNQPa0 znQ|A~i0ip@`B=FW-Q;zh?-wF;Wl5!+q3GXDu-x&}$gUO)NoO7^$BeEIrd~1Dh{Tr` z8s<(Bn@gZ(mkIGnmYh_ehXnq78QL$pNDi)|QcT*|GtS%nz1uKE+E{7jdEBp%h0}%r zD2|KmYGiPa4;md-t_m5YDz#c*oV_FqXd85d@eub?9N61QuYcb3CnVWpM(D-^|CmkL z(F}L&N7qhL2PCq)fRh}XO@U`Yn<?TNGR4L(mF7#4u29{i~@k;pLsgl({YW5`Mo+p=zZn3L*4{JU;++dG9 X@eDJUQo;Ye2mwlRs?y0|+_a0zY+Zo%Dkae}+MySoIppb75o?vUW_?)>@g{U2`ERQIXV zeY$JrWnMZ$QC<=ii4X|@0H8`si75jB(ElJb00HAB%>SlLR{!zO|C9P3zxw_U8?1d8uRZ=({Ga4shyN}3 zAK}WA(ds|``G4jA)9}Bt2Hy0+f3rV1E6b|@?hpGA=PI&r8)ah|)I2s(P5Ic*Ndhn^ z*T&j@gbCTv7+8rpYbR^Ty}1AY)YH;p!m948r#%7x^Z@_-w{pDl|1S4`EM3n_PaXvK z1JF)E3qy$qTj5Xs{jU9k=y%SQ0>8E$;x?p9ayU0bZZeo{5Z@&FKX>}s!0+^>C^D#z z>xsCPvxD3Z=dP}TTOSJhNTPyVt14VCQ9MQFN`rn!c&_p?&4<5_PGm4a;WS&1(!qKE z_H$;dDdiPQ!F_gsN`2>`X}$I=B;={R8%L~`>RyKcS$72ai$!2>d(YkciA^J0@X%G4 z4cu!%Ps~2JuJ8ex`&;Fa0NQOq_nDZ&X;^A=oc1&f#3P1(!5il>6?uK4QpEG8z0Rhu zvBJ+A9RV?z%v?!$=(vcH?*;vRs*+PPbOQ3cdPr5=tOcLqmfx@#hOqX0iN)wTTO21jH<>jpmwRIAGw7`a|sl?9y9zRBh>(_%| zF?h|P7}~RKj?HR+q|4U`CjRmV-$mLW>MScKnNXiv{vD3&2@*u)-6P@h0A`eeZ7}71 zK(w%@R<4lLt`O7fs1E)$5iGb~fPfJ?WxhY7c3Q>T-w#wT&zW522pH-B%r5v#5y^CF zcC30Se|`D2mY$hAlIULL%-PNXgbbpRHgn<&X3N9W!@BUk@9g*P5mz-YnZBb*-$zMM z7Qq}ic0mR8n{^L|=+diODdV}Q!gwr?y+2m=3HWwMq4z)DqYVg0J~^}-%7rMR@S1;9 z7GFj6K}i32X;3*$SmzB&HW{PJ55kT+EI#SsZf}bD7nW^Haf}_gXciYKX{QBxIPSx2Ma? zHQqgzZq!_{&zg{yxqv3xq8YV+`S}F6A>Gtl39_m;K4dA{pP$BW0oIXJ>jEQ!2V3A2 zdpoTxG&V=(?^q?ZTj2ZUpDUdMb)T?E$}CI>r@}PFPWD9@*%V6;4Ag>D#h>!s)=$0R zRXvdkZ%|c}ubej`jl?cS$onl9Tw52rBKT)kgyw~Xy%z62Lr%V6Y=f?2)J|bZJ5(Wx zmji`O;_B+*X@qe-#~`HFP<{8$w@z4@&`q^Q-Zk8JG3>WalhnW1cvnoVw>*R@c&|o8 zZ%w!{Z+MHeZ*OE4v*otkZqz11*s!#s^Gq>+o`8Z5 z^i-qzJLJh9!W-;SmFkR8HEZJWiXk$40i6)7 zZpr=k2lp}SasbM*Nbn3j$sn0;rUI;%EDbi7T1ZI4qL6PNNM2Y%6{LMIKW+FY_yF3) zSKQ2QSujzNMSL2r&bYs`|i2Dnn z=>}c0>a}>|uT!IiMOA~pVT~R@bGlm}Edf}Kq0?*Af6#mW9f9!}RjW7om0c9Qlp;yK z)=XQs(|6GCadQbWIhYF=rf{Y)sj%^Id-ARO0=O^Ad;Ph+ z0?$eE1xhH?{T$QI>0JP75`r)U_$#%K1^BQ8z#uciKf(C701&RyLQWBUp*Q7eyn76} z6JHpC9}R$J#(R0cDCkXoFSp;j6{x{b&0yE@P7{;pCEpKjS(+1RQy38`=&Yxo%F=3y zCPeefABp34U-s?WmU#JJw23dcC{sPPFc2#J$ZgEN%zod}J~8dLm*fx9f6SpO zn^Ww3bt9-r0XaT2a@Wpw;C23XM}7_14#%QpubrIw5aZtP+CqIFmsG4`Cm6rfxl9n5 z7=r2C-+lM2AB9X0T_`?EW&Byv&K?HS4QLoylJ|OAF z`8atBNTzJ&AQ!>sOo$?^0xj~D(;kS$`9zbEGd>f6r`NC3X`tX)sWgWUUOQ7w=$TO&*j;=u%25ay-%>3@81tGe^_z*C7pb9y*Ed^H3t$BIKH2o+olp#$q;)_ zfpjCb_^VFg5fU~K)nf*d*r@BCC>UZ!0&b?AGk_jTPXaSnCuW110wjHPPe^9R^;jo3 zwvzTl)C`Zl5}O2}3lec=hZ*$JnkW#7enKKc)(pM${_$9Hc=Sr_A9Biwe*Y=T?~1CK z6eZ9uPICjy-sMGbZl$yQmpB&`ouS8v{58__t0$JP%i3R&%QR3ianbZqDs<2#5FdN@n5bCn^ZtH992~5k(eA|8|@G9u`wdn7bnpg|@{m z^d6Y`*$Zf2Xr&|g%sai#5}Syvv(>Jnx&EM7-|Jr7!M~zdAyjt*xl;OLhvW-a%H1m0 z*x5*nb=R5u><7lyVpNAR?q@1U59 zO+)QWwL8t zyip?u_nI+K$uh{y)~}qj?(w0&=SE^8`_WMM zTybjG=999h38Yes7}-4*LJ7H)UE8{mE(6;8voE+TYY%33A>S6`G_95^5QHNTo_;Ao ztIQIZ_}49%{8|=O;isBZ?=7kfdF8_@azfoTd+hEJKWE!)$)N%HIe2cplaK`ry#=pV z0q{9w-`i0h@!R8K3GC{ivt{70IWG`EP|(1g7i_Q<>aEAT{5(yD z=!O?kq61VegV+st@XCw475j6vS)_z@efuqQgHQR1T4;|-#OLZNQJPV4k$AX1Uk8Lm z{N*b*ia=I+MB}kWpupJ~>!C@xEN#Wa7V+7{m4j8c?)ChV=D?o~sjT?0C_AQ7B-vxqX30s0I_`2$in86#`mAsT-w?j{&AL@B3$;P z31G4(lV|b}uSDCIrjk+M1R!X7s4Aabn<)zpgT}#gE|mIvV38^ODy@<&yflpCwS#fRf9ZX3lPV_?8@C5)A;T zqmouFLFk;qIs4rA=hh=GL~sCFsXHsqO6_y~*AFt939UYVBSx1s(=Kb&5;j7cSowdE;7()CC2|-i9Zz+_BIw8#ll~-tyH?F3{%`QCsYa*b#s*9iCc`1P1oC26?`g<9))EJ3%xz+O!B3 zZ7$j~To)C@PquR>a1+Dh>-a%IvH_Y7^ys|4o?E%3`I&ADXfC8++hAdZfzIT#%C+Jz z1lU~K_vAm0m8Qk}K$F>|>RPK%<1SI0(G+8q~H zAsjezyP+u!Se4q3GW)`h`NPSRlMoBjCzNPesWJwVTY!o@G8=(6I%4XHGaSiS3MEBK zhgGFv6Jc>L$4jVE!I?TQuwvz_%CyO!bLh94nqK11C2W$*aa2ueGopG8DnBICVUORP zgytv#)49fVXDaR$SukloYC3u7#5H)}1K21=?DKj^U)8G;MS)&Op)g^zR2($<>C*zW z;X7`hLxiIO#J`ANdyAOJle4V%ppa*(+0i3w;8i*BA_;u8gOO6)MY`ueq7stBMJTB; z-a0R>hT*}>z|Gg}@^zDL1MrH+2hsR8 zHc}*9IvuQC^Ju)^#Y{fOr(96rQNPNhxc;mH@W*m206>Lo<*SaaH?~8zg&f&%YiOEG zGiz?*CP>Bci}!WiS=zj#K5I}>DtpregpP_tfZtPa(N<%vo^#WCQ5BTv0vr%Z{)0q+ z)RbfHktUm|lg&U3YM%lMUM(fu}i#kjX9h>GYctkx9Mt_8{@s%!K_EI zScgwy6%_fR?CGJQtmgNAj^h9B#zmaMDWgH55pGuY1Gv7D z;8Psm(vEPiwn#MgJYu4Ty9D|h!?Rj0ddE|&L3S{IP%H4^N!m`60ZwZw^;eg4sk6K{ ziA^`Sbl_4~f&Oo%n;8Ye(tiAdlZKI!Z=|j$5hS|D$bDJ}p{gh$KN&JZYLUjv4h{NY zBJ>X9z!xfDGY z+oh_Z&_e#Q(-}>ssZfm=j$D&4W4FNy&-kAO1~#3Im;F)Nwe{(*75(p=P^VI?X0GFakfh+X-px4a%Uw@fSbmp9hM1_~R>?Z8+ ziy|e9>8V*`OP}4x5JjdWp}7eX;lVxp5qS}0YZek;SNmm7tEeSF*-dI)6U-A%m6YvCgM(}_=k#a6o^%-K4{`B1+}O4x zztDT%hVb;v#?j`lTvlFQ3aV#zkX=7;YFLS$uIzb0E3lozs5`Xy zi~vF+%{z9uLjKvKPhP%x5f~7-Gj+%5N`%^=yk*Qn{`> z;xj&ROY6g`iy2a@{O)V(jk&8#hHACVDXey5a+KDod_Z&}kHM}xt7}Md@pil{2x7E~ zL$k^d2@Ec2XskjrN+IILw;#7((abu;OJii&v3?60x>d_Ma(onIPtcVnX@ELF0aL?T zSmWiL3(dOFkt!x=1O!_0n(cAzZW+3nHJ{2S>tgSK?~cFha^y(l@-Mr2W$%MN{#af8J;V*>hdq!gx=d0h$T7l}>91Wh07)9CTX zh2_ZdQCyFOQ)l(}gft0UZG`Sh2`x-w`5vC2UD}lZs*5 zG76$akzn}Xi))L3oGJ75#pcN=cX3!=57$Ha=hQ2^lwdyU#a}4JJOz6ddR%zae%#4& za)bFj)z=YQela(F#Y|Q#dp}PJghITwXouVaMq$BM?K%cXn9^Y@g43$=O)F&ZlOUom zJiad#dea;-eywBA@e&D6Pdso1?2^(pXiN91?jvcaUyYoKUmvl5G9e$W!okWe*@a<^ z8cQQ6cNSf+UPDx%?_G4aIiybZHHagF{;IcD(dPO!#=u zWfqLcPc^+7Uu#l(Bpxft{*4lv#*u7X9AOzDO z1D9?^jIo}?%iz(_dwLa{ex#T}76ZfN_Z-hwpus9y+4xaUu9cX}&P{XrZVWE{1^0yw zO;YhLEW!pJcbCt3L8~a7>jsaN{V3>tz6_7`&pi%GxZ=V3?3K^U+*ryLSb)8^IblJ0 zSRLNDvIxt)S}g30?s_3NX>F?NKIGrG_zB9@Z>uSW3k2es_H2kU;Rnn%j5qP)!XHKE zPB2mHP~tLCg4K_vH$xv`HbRsJwbZMUV(t=ez;Ec(vyHH)FbfLg`c61I$W_uBB>i^r z&{_P;369-&>23R%qNIULe=1~T$(DA`ev*EWZ6j(B$(te}x1WvmIll21zvygkS%vwG zzkR6Z#RKA2!z!C%M!O>!=Gr0(J0FP=-MN=5t-Ir)of50y10W}j`GtRCsXBakrKtG& zazmITDJMA0C51&BnLY)SY9r)NVTMs);1<=oosS9g31l{4ztjD3#+2H7u_|66b|_*O z;Qk6nalpqdHOjx|K&vUS_6ITgGll;TdaN*ta=M_YtyC)I9Tmr~VaPrH2qb6sd~=AcIxV+%z{E&0@y=DPArw zdV7z(G1hBx7hd{>(cr43^WF%4Y@PXZ?wPpj{OQ#tvc$pABJbvPGvdR`cAtHn)cSEV zrpu}1tJwQ3y!mSmH*uz*x0o|CS<^w%&KJzsj~DU0cLQUxk5B!hWE>aBkjJle8z~;s z-!A=($+}Jq_BTK5^B!`R>!MulZN)F=iXXeUd0w5lUsE5VP*H*oCy(;?S$p*TVvTxwAeWFB$jHyb0593)$zqalVlDX=GcCN1gU0 zlgU)I$LcXZ8Oyc2TZYTPu@-;7<4YYB-``Qa;IDcvydIA$%kHhJKV^m*-zxcvU4viy&Kr5GVM{IT>WRywKQ9;>SEiQD*NqplK-KK4YR`p0@JW)n_{TU3bt0 zim%;(m1=#v2}zTps=?fU5w^(*y)xT%1vtQH&}50ZF!9YxW=&7*W($2kgKyz1mUgfs zfV<*XVVIFnohW=|j+@Kfo!#liQR^x>2yQdrG;2o8WZR+XzU_nG=Ed2rK?ntA;K5B{ z>M8+*A4!Jm^Bg}aW?R?6;@QG@uQ8&oJ{hFixcfEnJ4QH?A4>P=q29oDGW;L;= z9-a0;g%c`C+Ai!UmK$NC*4#;Jp<1=TioL=t^YM)<<%u#hnnfSS`nq63QKGO1L8RzX z@MFDqs1z ztYmxDl@LU)5acvHk)~Z`RW7=aJ_nGD!mOSYD>5Odjn@TK#LY{jf?+piB5AM-CAoT_ z?S-*q7}wyLJzK>N%eMPuFgN)Q_otKP;aqy=D5f!7<=n(lNkYRXVpkB{TAYLYg{|(jtRqYmg$xH zjmq?B(RE4 zQx^~Pt}gxC2~l=K$$-sYy_r$CO(d=+b3H1MB*y_5g6WLaWTXn+TKQ|hNY^>Mp6k*$ zwkovomhu776vQATqT4blf~g;TY(MWCrf^^yfWJvSAB$p5l;jm@o#=!lqw+Lqfq>X= z$6~kxfm7`3q4zUEB;u4qa#BdJxO!;xGm)wwuisj{0y2x{R(IGMrsIzDY9LW>m!Y`= z04sx3IjnYvL<4JqxQ8f7qYd0s2Ig%`ytYPEMKI)s(LD}D@EY>x`VFtqvnADNBdeao zC96X+MxnwKmjpg{U&gP3HE}1=s!lv&D{6(g_lzyF3A`7Jn*&d_kL<;dAFx!UZ>hB8 z5A*%LsAn;VLp>3${0>M?PSQ)9s3}|h2e?TG4_F{}{Cs>#3Q*t$(CUc}M)I}8cPF6% z=+h(Kh^8)}gj(0}#e7O^FQ6`~fd1#8#!}LMuo3A0bN`o}PYsm!Y}sdOz$+Tegc=qT z8x`PH$7lvnhJp{kHWb22l;@7B7|4yL4UOOVM0MP_>P%S1Lnid)+k9{+3D+JFa#Pyf zhVc#&df87APl4W9X)F3pGS>@etfl=_E5tBcVoOfrD4hmVeTY-cj((pkn%n@EgN{0f zwb_^Rk0I#iZuHK!l*lN`ceJn(sI{$Fq6nN& zE<-=0_2WN}m+*ivmIOxB@#~Q-cZ>l136w{#TIJe478`KE7@=a{>SzPHsKLzYAyBQO zAtuuF$-JSDy_S@6GW0MOE~R)b;+0f%_NMrW(+V#c_d&U8Z9+ec4=HmOHw?gdjF(Lu zzra83M_BoO-1b3;9`%&DHfuUY)6YDV21P$C!Rc?mv&{lx#f8oc6?0?x zK08{WP65?#>(vPfA-c=MCY|%*1_<3D4NX zeVTi-JGl2uP_2@0F{G({pxQOXt_d{g_CV6b?jNpfUG9;8yle-^4KHRvZs-_2siata zt+d_T@U$&t*xaD22(fH(W1r$Mo?3dc%Tncm=C6{V9y{v&VT#^1L04vDrLM9qBoZ4@ z6DBN#m57hX7$C(=#$Y5$bJmwA$T8jKD8+6A!-IJwA{WOfs%s}yxUw^?MRZjF$n_KN z6`_bGXcmE#5e4Ym)aQJ)xg3Pg0@k`iGuHe?f(5LtuzSq=nS^5z>vqU0EuZ&75V%Z{ zYyhRLN^)$c6Ds{f7*FBpE;n5iglx5PkHfWrj3`x^j^t z7ntuV`g!9Xg#^3!x)l*}IW=(Tz3>Y5l4uGaB&lz{GDjm2D5S$CExLT`I1#n^lBH7Y zDgpMag@`iETKAI=p<5E#LTkwzVR@=yY|uBVI1HG|8h+d;G-qfuj}-ZR6fN>EfCCW z9~wRQoAPEa#aO?3h?x{YvV*d+NtPkf&4V0k4|L=uj!U{L+oLa(z#&iuhJr3-PjO3R z5s?=nn_5^*^Rawr>>Nr@K(jwkB#JK-=+HqwfdO<+P5byeim)wvqGlP-P|~Nse8=XF zz`?RYB|D6SwS}C+YQv+;}k6$-%D(@+t14BL@vM z2q%q?f6D-A5s$_WY3{^G0F131bbh|g!}#BKw=HQ7mx;Dzg4Z*bTLQSfo{ed{4}NZW zfrRm^Ca$rlE{Ue~uYv>R9{3smwATcdM_6+yWIO z*ZRH~uXE@#p$XTbCt5j7j2=86e{9>HIB6xDzV+vAo&B?KUiMP|ttOElepnl%|DPqL b{|{}U^kRn2wo}j7|0ATu<;8xA7zX}7|B6mN literal 0 HcmV?d00001 diff --git a/recipe-hooks-project/public/manifest.json b/recipe-hooks-project/public/manifest.json new file mode 100644 index 00000000..080d6c77 --- /dev/null +++ b/recipe-hooks-project/public/manifest.json @@ -0,0 +1,25 @@ +{ + "short_name": "React App", + "name": "Create React App Sample", + "icons": [ + { + "src": "favicon.ico", + "sizes": "64x64 32x32 24x24 16x16", + "type": "image/x-icon" + }, + { + "src": "logo192.png", + "type": "image/png", + "sizes": "192x192" + }, + { + "src": "logo512.png", + "type": "image/png", + "sizes": "512x512" + } + ], + "start_url": ".", + "display": "standalone", + "theme_color": "#000000", + "background_color": "#ffffff" +} diff --git a/recipe-hooks-project/public/robots.txt b/recipe-hooks-project/public/robots.txt new file mode 100644 index 00000000..e9e57dc4 --- /dev/null +++ b/recipe-hooks-project/public/robots.txt @@ -0,0 +1,3 @@ +# https://www.robotstxt.org/robotstxt.html +User-agent: * +Disallow: diff --git a/recipe-hooks-project/src/App.css b/recipe-hooks-project/src/App.css new file mode 100644 index 00000000..74b5e053 --- /dev/null +++ b/recipe-hooks-project/src/App.css @@ -0,0 +1,38 @@ +.App { + text-align: center; +} + +.App-logo { + height: 40vmin; + pointer-events: none; +} + +@media (prefers-reduced-motion: no-preference) { + .App-logo { + animation: App-logo-spin infinite 20s linear; + } +} + +.App-header { + background-color: #282c34; + min-height: 100vh; + display: flex; + flex-direction: column; + align-items: center; + justify-content: center; + font-size: calc(10px + 2vmin); + color: white; +} + +.App-link { + color: #61dafb; +} + +@keyframes App-logo-spin { + from { + transform: rotate(0deg); + } + to { + transform: rotate(360deg); + } +} diff --git a/recipe-hooks-project/src/App.js b/recipe-hooks-project/src/App.js new file mode 100644 index 00000000..c7781333 --- /dev/null +++ b/recipe-hooks-project/src/App.js @@ -0,0 +1,10 @@ +import React from 'react'; +import RecipeApp from "./RecipeApp"; + +function App() { + return ( + + ); +} + +export default App; diff --git a/recipe-hooks-project/src/App.test.js b/recipe-hooks-project/src/App.test.js new file mode 100644 index 00000000..4db7ebc2 --- /dev/null +++ b/recipe-hooks-project/src/App.test.js @@ -0,0 +1,9 @@ +import React from 'react'; +import { render } from '@testing-library/react'; +import App from './App'; + +test('renders learn react link', () => { + const { getByText } = render(); + const linkElement = getByText(/learn react/i); + expect(linkElement).toBeInTheDocument(); +}); diff --git a/recipe-hooks-project/src/RecipeApp.js b/recipe-hooks-project/src/RecipeApp.js new file mode 100644 index 00000000..78d9e2f5 --- /dev/null +++ b/recipe-hooks-project/src/RecipeApp.js @@ -0,0 +1,9 @@ +import React, {useState, useEffect} from 'react'; + +export default function RecipeApp(props) { + return ( +
+

{props.title}

+
+ ); +}; \ No newline at end of file diff --git a/recipe-hooks-project/src/index.css b/recipe-hooks-project/src/index.css new file mode 100644 index 00000000..ec2585e8 --- /dev/null +++ b/recipe-hooks-project/src/index.css @@ -0,0 +1,13 @@ +body { + margin: 0; + font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Roboto', 'Oxygen', + 'Ubuntu', 'Cantarell', 'Fira Sans', 'Droid Sans', 'Helvetica Neue', + sans-serif; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} + +code { + font-family: source-code-pro, Menlo, Monaco, Consolas, 'Courier New', + monospace; +} diff --git a/recipe-hooks-project/src/index.js b/recipe-hooks-project/src/index.js new file mode 100644 index 00000000..f5185c1e --- /dev/null +++ b/recipe-hooks-project/src/index.js @@ -0,0 +1,17 @@ +import React from 'react'; +import ReactDOM from 'react-dom'; +import './index.css'; +import App from './App'; +import * as serviceWorker from './serviceWorker'; + +ReactDOM.render( + + + , + document.getElementById('root') +); + +// 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: https://bit.ly/CRA-PWA +serviceWorker.unregister(); diff --git a/recipe-hooks-project/src/logo.svg b/recipe-hooks-project/src/logo.svg new file mode 100644 index 00000000..6b60c104 --- /dev/null +++ b/recipe-hooks-project/src/logo.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/recipe-hooks-project/src/serviceWorker.js b/recipe-hooks-project/src/serviceWorker.js new file mode 100644 index 00000000..b04b771a --- /dev/null +++ b/recipe-hooks-project/src/serviceWorker.js @@ -0,0 +1,141 @@ +// This optional code is used to register a service worker. +// register() is not called by default. + +// This lets the app load faster on subsequent visits in production, and gives +// it offline capabilities. However, it also means that developers (and users) +// will only see deployed updates on subsequent visits to a page, after all the +// existing tabs open on the page have been closed, since previously cached +// resources are updated in the background. + +// To learn more about the benefits of this model and instructions on how to +// opt-in, read https://bit.ly/CRA-PWA + +const isLocalhost = Boolean( + window.location.hostname === 'localhost' || + // [::1] is the IPv6 localhost address. + window.location.hostname === '[::1]' || + // 127.0.0.0/8 are considered localhost for IPv4. + window.location.hostname.match( + /^127(?:\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){3}$/ + ) +); + +export function register(config) { + if (process.env.NODE_ENV === 'production' && 'serviceWorker' in navigator) { + // The URL constructor is available in all browsers that support SW. + const publicUrl = new URL(process.env.PUBLIC_URL, window.location.href); + if (publicUrl.origin !== window.location.origin) { + // Our service worker won't work if PUBLIC_URL is on a different origin + // from what our page is served on. This might happen if a CDN is used to + // serve assets; see https://github.com/facebook/create-react-app/issues/2374 + return; + } + + window.addEventListener('load', () => { + const swUrl = `${process.env.PUBLIC_URL}/service-worker.js`; + + if (isLocalhost) { + // This is running on localhost. Let's check if a service worker still exists or not. + checkValidServiceWorker(swUrl, config); + + // Add some additional logging to localhost, pointing developers to the + // service worker/PWA documentation. + navigator.serviceWorker.ready.then(() => { + console.log( + 'This web app is being served cache-first by a service ' + + 'worker. To learn more, visit https://bit.ly/CRA-PWA' + ); + }); + } else { + // Is not localhost. Just register service worker + registerValidSW(swUrl, config); + } + }); + } +} + +function registerValidSW(swUrl, config) { + navigator.serviceWorker + .register(swUrl) + .then(registration => { + registration.onupdatefound = () => { + const installingWorker = registration.installing; + if (installingWorker == null) { + return; + } + installingWorker.onstatechange = () => { + if (installingWorker.state === 'installed') { + if (navigator.serviceWorker.controller) { + // At this point, the updated precached content has been fetched, + // but the previous service worker will still serve the older + // content until all client tabs are closed. + console.log( + 'New content is available and will be used when all ' + + 'tabs for this page are closed. See https://bit.ly/CRA-PWA.' + ); + + // Execute callback + if (config && config.onUpdate) { + config.onUpdate(registration); + } + } else { + // At this point, everything has been precached. + // It's the perfect time to display a + // "Content is cached for offline use." message. + console.log('Content is cached for offline use.'); + + // Execute callback + if (config && config.onSuccess) { + config.onSuccess(registration); + } + } + } + }; + }; + }) + .catch(error => { + console.error('Error during service worker registration:', error); + }); +} + +function checkValidServiceWorker(swUrl, config) { + // Check if the service worker can be found. If it can't reload the page. + fetch(swUrl, { + headers: { 'Service-Worker': 'script' }, + }) + .then(response => { + // Ensure service worker exists, and that we really are getting a JS file. + const contentType = response.headers.get('content-type'); + if ( + response.status === 404 || + (contentType != null && contentType.indexOf('javascript') === -1) + ) { + // No service worker found. Probably a different app. Reload the page. + navigator.serviceWorker.ready.then(registration => { + registration.unregister().then(() => { + window.location.reload(); + }); + }); + } else { + // Service worker found. Proceed as normal. + registerValidSW(swUrl, config); + } + }) + .catch(() => { + console.log( + 'No internet connection found. App is running in offline mode.' + ); + }); +} + +export function unregister() { + if ('serviceWorker' in navigator) { + navigator.serviceWorker.ready + .then(registration => { + registration.unregister(); + }) + .catch(error => { + console.error(error.message); + }); + } +} diff --git a/recipe-hooks-project/src/setupTests.js b/recipe-hooks-project/src/setupTests.js new file mode 100644 index 00000000..74b1a275 --- /dev/null +++ b/recipe-hooks-project/src/setupTests.js @@ -0,0 +1,5 @@ +// jest-dom adds custom jest matchers for asserting on DOM nodes. +// allows you to do things like: +// expect(element).toHaveTextContent(/react/i) +// learn more: https://github.com/testing-library/jest-dom +import '@testing-library/jest-dom/extend-expect'; From c9a9a91d8130804db6ca74d9c3aae1774a7ca198 Mon Sep 17 00:00:00 2001 From: Francesco Venneri Date: Mon, 29 Jun 2020 14:40:49 +0200 Subject: [PATCH 02/31] [RECIPE-PROJECT] Added some of the needed packages --- package-lock.json | 730 +------------------------ recipe-hooks-project/package-lock.json | 244 ++++++++- recipe-hooks-project/package.json | 8 +- 3 files changed, 258 insertions(+), 724 deletions(-) diff --git a/package-lock.json b/package-lock.json index 8796573d..33dd9601 100644 --- a/package-lock.json +++ b/package-lock.json @@ -2,725 +2,31 @@ "requires": true, "lockfileVersion": 1, "dependencies": { - "@types/color-name": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@types/color-name/-/color-name-1.1.1.tgz", - "integrity": "sha512-rr+OQyAjxze7GgWrSaJwydHStIhHq2lvY3BOC2Mj7KnzI7XK0Uw1TOOdI9lDoajEbSWLiYgoo4f1R51erQfhPQ==" - }, - "ansi-escapes": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.1.tgz", - "integrity": "sha512-JWF7ocqNrp8u9oqpgV+wH5ftbt+cfvv+PTjOvKLT3AdYly/LmORARfEVT1iyjwN+4MqE5UmVKoAdIBqeoCHgLA==", - "requires": { - "type-fest": "^0.11.0" - } - }, - "ansi-regex": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", - "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==" - }, - "ansi-styles": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.2.1.tgz", - "integrity": "sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA==", - "requires": { - "@types/color-name": "^1.1.1", - "color-convert": "^2.0.1" - } - }, - "balanced-match": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", - "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=" - }, - "block-stream": { - "version": "0.0.9", - "resolved": "https://registry.npmjs.org/block-stream/-/block-stream-0.0.9.tgz", - "integrity": "sha1-E+v+d4oDIFz+A3UUgeu0szAMEmo=", - "requires": { - "inherits": "~2.0.0" - } - }, - "brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "requires": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "buffer-from": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-0.1.2.tgz", - "integrity": "sha512-RiWIenusJsmI2KcvqQABB83tLxCByE3upSP8QU3rJDMVFGPWLvPQJt/O1Su9moRWeH7d+Q2HYb68f6+v+tw2vg==" - }, - "builtins": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/builtins/-/builtins-1.0.3.tgz", - "integrity": "sha1-y5T662HIaWRR2zZTThQi+U8K7og=" - }, - "chalk": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", - "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "chardet": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz", - "integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==" - }, - "cli-cursor": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz", - "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==", - "requires": { - "restore-cursor": "^3.1.0" - } - }, - "cli-width": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-2.2.1.tgz", - "integrity": "sha512-GRMWDxpOB6Dgk2E5Uo+3eEBvtOOlimMmpbFiKuLFnQzYDavtLFY3K5ona41jgN/WdRZtG7utuVSVTL4HbZHGkw==" - }, - "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==", - "requires": { - "color-name": "~1.1.4" - } - }, - "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==" - }, - "commander": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-4.1.0.tgz", - "integrity": "sha512-NIQrwvv9V39FHgGFm36+U9SMQzbiHvU79k+iADraJTpmrFFfx7Ds0IvDoAdZsDrknlkRk14OYoWXb57uTh7/sw==" - }, - "concat-map": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=" - }, - "core-util-is": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", - "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=" - }, - "create-react-app": { - "version": "3.4.1", - "resolved": "https://registry.npmjs.org/create-react-app/-/create-react-app-3.4.1.tgz", - "integrity": "sha512-i0Zxiqj8Q2tMJkMousrZdB/vlvtoAZyN49bgAfM4yHhWQUzrpM1rZU7TX1Rg5bbDQ1R8Gk/usNnpkDzEHJdVXg==", - "requires": { - "chalk": "3.0.0", - "commander": "4.1.0", - "cross-spawn": "7.0.1", - "envinfo": "7.5.0", - "fs-extra": "8.1.0", - "hyperquest": "2.1.3", - "inquirer": "7.0.4", - "semver": "6.3.0", - "tar-pack": "3.4.1", - "tmp": "0.1.0", - "validate-npm-package-name": "3.0.0" - } - }, - "cross-spawn": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.1.tgz", - "integrity": "sha512-u7v4o84SwFpD32Z8IIcPZ6z1/ie24O6RU3RbtL5Y316l3KuHVPx9ItBgWQ6VlfAFnRnTtMUrsQ9MUUTuEZjogg==", - "requires": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" - } - }, - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "requires": { - "ms": "2.0.0" - } - }, - "duplexer2": { - "version": "0.0.2", - "resolved": "https://registry.npmjs.org/duplexer2/-/duplexer2-0.0.2.tgz", - "integrity": "sha1-xhTc9n4vsUmVqRcR5aYX6KYKMds=", - "requires": { - "readable-stream": "~1.1.9" - } - }, - "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==" - }, - "envinfo": { - "version": "7.5.0", - "resolved": "https://registry.npmjs.org/envinfo/-/envinfo-7.5.0.tgz", - "integrity": "sha512-jDgnJaF/Btomk+m3PZDTTCb5XIIIX3zYItnCRfF73zVgvinLoRomuhi75Y4su0PtQxWz4v66XnLLckyvyJTOIQ==" - }, - "escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=" - }, - "external-editor": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-3.1.0.tgz", - "integrity": "sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==", - "requires": { - "chardet": "^0.7.0", - "iconv-lite": "^0.4.24", - "tmp": "^0.0.33" - }, - "dependencies": { - "tmp": { - "version": "0.0.33", - "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", - "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", - "requires": { - "os-tmpdir": "~1.0.2" - } - } - } - }, - "figures": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/figures/-/figures-3.2.0.tgz", - "integrity": "sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==", - "requires": { - "escape-string-regexp": "^1.0.5" - } - }, - "fs-extra": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz", - "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==", - "requires": { - "graceful-fs": "^4.2.0", - "jsonfile": "^4.0.0", - "universalify": "^0.1.0" - } - }, - "fs.realpath": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=" - }, - "fstream": { - "version": "1.0.12", - "resolved": "https://registry.npmjs.org/fstream/-/fstream-1.0.12.tgz", - "integrity": "sha512-WvJ193OHa0GHPEL+AycEJgxvBEwyfRkN1vhjca23OaPVMCaLCXTd5qAu82AjTcgP1UJmytkOKb63Ypde7raDIg==", - "requires": { - "graceful-fs": "^4.1.2", - "inherits": "~2.0.0", - "mkdirp": ">=0.5 0", - "rimraf": "2" - } - }, - "fstream-ignore": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/fstream-ignore/-/fstream-ignore-1.0.5.tgz", - "integrity": "sha1-nDHa40dnAY/h0kmyTa2mfQktoQU=", - "requires": { - "fstream": "^1.0.0", - "inherits": "2", - "minimatch": "^3.0.0" - } - }, - "glob": { - "version": "7.1.6", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", - "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", - "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - } - }, - "graceful-fs": { - "version": "4.2.4", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.4.tgz", - "integrity": "sha512-WjKPNJF79dtJAVniUlGGWHYGz2jWxT6VhN/4m1NdkbZ2nOsEF+cI1Edgql5zCRhs/VsQYRvrXctxktVXZUkixw==" - }, - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" - }, - "hyperquest": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/hyperquest/-/hyperquest-2.1.3.tgz", - "integrity": "sha512-fUuDOrB47PqNK/BAMOS13v41UoaqIxqSLHX6CAbOD7OfT+/GCWO1/vPLfTNutOeXrv1ikuaZ3yux+33Z9vh+rw==", - "requires": { - "buffer-from": "^0.1.1", - "duplexer2": "~0.0.2", - "through2": "~0.6.3" - } - }, - "iconv-lite": { - "version": "0.4.24", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", - "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", - "requires": { - "safer-buffer": ">= 2.1.2 < 3" - } - }, - "inflight": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", - "requires": { - "once": "^1.3.0", - "wrappy": "1" - } - }, - "inherits": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" - }, - "inquirer": { - "version": "7.0.4", - "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-7.0.4.tgz", - "integrity": "sha512-Bu5Td5+j11sCkqfqmUTiwv+tWisMtP0L7Q8WrqA2C/BbBhy1YTdFrvjjlrKq8oagA/tLQBski2Gcx/Sqyi2qSQ==", - "requires": { - "ansi-escapes": "^4.2.1", - "chalk": "^2.4.2", - "cli-cursor": "^3.1.0", - "cli-width": "^2.0.0", - "external-editor": "^3.0.3", - "figures": "^3.0.0", - "lodash": "^4.17.15", - "mute-stream": "0.0.8", - "run-async": "^2.2.0", - "rxjs": "^6.5.3", - "string-width": "^4.1.0", - "strip-ansi": "^5.1.0", - "through": "^2.3.6" - }, - "dependencies": { - "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==", - "requires": { - "color-convert": "^1.9.0" - } - }, - "chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - } - }, - "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==", - "requires": { - "color-name": "1.1.3" - } - }, - "color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=" - }, - "has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=" - }, - "supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "requires": { - "has-flag": "^3.0.0" - } - } - } - }, - "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==" - }, - "isarray": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", - "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=" - }, - "isexe": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=" - }, - "jsonfile": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", - "integrity": "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=", - "requires": { - "graceful-fs": "^4.1.6" - } - }, - "lodash": { - "version": "4.17.15", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz", - "integrity": "sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==" - }, - "mimic-fn": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", - "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==" - }, - "minimatch": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", - "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", - "requires": { - "brace-expansion": "^1.1.7" - } - }, - "minimist": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", - "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==" - }, - "mkdirp": { - "version": "0.5.5", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", - "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==", - "requires": { - "minimist": "^1.2.5" - } - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" - }, - "mute-stream": { - "version": "0.0.8", - "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.8.tgz", - "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==" - }, - "once": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", - "requires": { - "wrappy": "1" - } - }, - "onetime": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.0.tgz", - "integrity": "sha512-5NcSkPHhwTVFIQN+TUqXoS5+dlElHXdpAWu9I0HP20YOtIi+aZ0Ct82jdlILDxjLEAWwvm+qj1m6aEtsDVmm6Q==", - "requires": { - "mimic-fn": "^2.1.0" - } - }, - "os-tmpdir": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", - "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=" - }, - "path-is-absolute": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=" - }, - "path-key": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", - "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==" - }, - "process-nextick-args": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", - "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==" - }, - "readable-stream": { - "version": "1.1.14", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz", - "integrity": "sha1-fPTFTvZI44EwhMY23SB54WbAgdk=", - "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.1", - "isarray": "0.0.1", - "string_decoder": "~0.10.x" - } - }, - "restore-cursor": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz", - "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==", - "requires": { - "onetime": "^5.1.0", - "signal-exit": "^3.0.2" - } - }, - "rimraf": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", - "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", - "requires": { - "glob": "^7.1.3" - } - }, - "run-async": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.4.1.tgz", - "integrity": "sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==" - }, - "rxjs": { - "version": "6.5.5", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.5.5.tgz", - "integrity": "sha512-WfQI+1gohdf0Dai/Bbmk5L5ItH5tYqm3ki2c5GdWhKjalzjg93N3avFjVStyZZz+A2Em+ZxKH5bNghw9UeylGQ==", - "requires": { - "tslib": "^1.9.0" - } - }, - "safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" - }, - "safer-buffer": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" - }, - "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==" - }, - "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==", - "requires": { - "shebang-regex": "^3.0.0" - } - }, - "shebang-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", - "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==" - }, - "signal-exit": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.3.tgz", - "integrity": "sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA==" - }, - "string-width": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.0.tgz", - "integrity": "sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg==", - "requires": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.0" - }, - "dependencies": { - "strip-ansi": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", - "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", - "requires": { - "ansi-regex": "^5.0.0" - } - } - } - }, - "string_decoder": { - "version": "0.10.31", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", - "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=" - }, - "strip-ansi": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", - "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", - "requires": { - "ansi-regex": "^4.1.0" - }, - "dependencies": { - "ansi-regex": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", - "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==" - } - } - }, - "supports-color": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.1.0.tgz", - "integrity": "sha512-oRSIpR8pxT1Wr2FquTNnGet79b3BWljqOuoW/h4oBhxJ/HUbX5nX6JSruTkvXDCFMwDPvsaTTbvMLKZWSy0R5g==", - "requires": { - "has-flag": "^4.0.0" - } - }, - "tar": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/tar/-/tar-2.2.2.tgz", - "integrity": "sha512-FCEhQ/4rE1zYv9rYXJw/msRqsnmlje5jHP6huWeBZ704jUTy02c5AZyWujpMR1ax6mVw9NyJMfuK2CMDWVIfgA==", - "requires": { - "block-stream": "*", - "fstream": "^1.0.12", - "inherits": "2" - } - }, - "tar-pack": { - "version": "3.4.1", - "resolved": "https://registry.npmjs.org/tar-pack/-/tar-pack-3.4.1.tgz", - "integrity": "sha512-PPRybI9+jM5tjtCbN2cxmmRU7YmqT3Zv/UDy48tAh2XRkLa9bAORtSWLkVc13+GJF+cdTh1yEnHEk3cpTaL5Kg==", - "requires": { - "debug": "^2.2.0", - "fstream": "^1.0.10", - "fstream-ignore": "^1.0.5", - "once": "^1.3.3", - "readable-stream": "^2.1.4", - "rimraf": "^2.5.1", - "tar": "^2.2.1", - "uid-number": "^0.0.6" - }, - "dependencies": { - "isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" - }, - "readable-stream": { - "version": "2.3.7", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", - "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", - "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "requires": { - "safe-buffer": "~5.1.0" - } - } - } - }, - "through": { - "version": "2.3.8", - "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", - "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=" - }, - "through2": { - "version": "0.6.5", - "resolved": "https://registry.npmjs.org/through2/-/through2-0.6.5.tgz", - "integrity": "sha1-QaucZ7KdVyCQcUEOHXp6lozTrUg=", - "requires": { - "readable-stream": ">=1.0.33-1 <1.1.0-0", - "xtend": ">=4.0.0 <4.1.0-0" - }, - "dependencies": { - "readable-stream": { - "version": "1.0.34", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz", - "integrity": "sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw=", - "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.1", - "isarray": "0.0.1", - "string_decoder": "~0.10.x" - } - } - } - }, - "tmp": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.1.0.tgz", - "integrity": "sha512-J7Z2K08jbGcdA1kkQpJSqLF6T0tdQqpR2pnSUXsIchbPdTI9v3e85cLW0d6WDhwuAleOV71j2xWs8qMPfK7nKw==", - "requires": { - "rimraf": "^2.6.3" - } - }, - "tslib": { - "version": "1.13.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.13.0.tgz", - "integrity": "sha512-i/6DQjL8Xf3be4K/E6Wgpekn5Qasl1usyw++dAA35Ue5orEn65VIxOA+YvNNl9HV3qv70T7CNwjODHZrLwvd1Q==" - }, - "type-fest": { - "version": "0.11.0", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.11.0.tgz", - "integrity": "sha512-OdjXJxnCN1AvyLSzeKIgXTXxV+99ZuXl3Hpo9XpJAv9MBcHrrJOQ5kV7ypXOuQie+AmWG25hLbiKdwYTifzcfQ==" - }, - "uid-number": { - "version": "0.0.6", - "resolved": "https://registry.npmjs.org/uid-number/-/uid-number-0.0.6.tgz", - "integrity": "sha1-DqEOgDXo61uOREnwbaHHMGY7qoE=" - }, - "universalify": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", - "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==" - }, - "util-deprecate": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=" - }, - "validate-npm-package-name": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/validate-npm-package-name/-/validate-npm-package-name-3.0.0.tgz", - "integrity": "sha1-X6kS2B630MdK/BQN5zF/DKffQ34=", + "@babel/runtime": { + "version": "7.10.3", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.10.3.tgz", + "integrity": "sha512-RzGO0RLSdokm9Ipe/YD+7ww8X2Ro79qiXZF3HU9ljrM+qnJmH1Vqth+hbiQZy761LnMJTMitHDuKVYTk3k4dLw==", "requires": { - "builtins": "^1.0.3" + "regenerator-runtime": "^0.13.4" } }, - "which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "@material-ui/icons": { + "version": "4.9.1", + "resolved": "https://registry.npmjs.org/@material-ui/icons/-/icons-4.9.1.tgz", + "integrity": "sha512-GBitL3oBWO0hzBhvA9KxqcowRUsA0qzwKkURyC8nppnC3fw54KPKZ+d4V1Eeg/UnDRSzDaI9nGCdel/eh9AQMg==", "requires": { - "isexe": "^2.0.0" + "@babel/runtime": "^7.4.4" } }, - "wrappy": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" + "regenerator-runtime": { + "version": "0.13.5", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.5.tgz", + "integrity": "sha512-ZS5w8CpKFinUzOwW3c83oPeVXoNsrLsaCoLtJvAClH135j/R77RuymhiSErhm2lKcwSCIpmvIWSbDkIfAqKQlA==" }, - "xtend": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", - "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==" + "uuid": { + "version": "8.2.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.2.0.tgz", + "integrity": "sha512-CYpGiFTUrmI6OBMkAdjSDM0k5h8SkkiTP4WAjQgDgNB1S3Ou9VBEvr6q0Kv2H1mMk7IWfxYGpMH5sd5AvcIV2Q==" } } } diff --git a/recipe-hooks-project/package-lock.json b/recipe-hooks-project/package-lock.json index 34a6ff15..5ae263fb 100644 --- a/recipe-hooks-project/package-lock.json +++ b/recipe-hooks-project/package-lock.json @@ -1122,6 +1122,29 @@ "resolved": "https://registry.npmjs.org/@emotion/hash/-/hash-0.8.0.tgz", "integrity": "sha512-kBJtf7PH6aWwZ6fka3zQ0p6SBYzx4fl1LoZXE2RrnYST9Xljm7WfKJrU4g/Xr3Beg72MLrp1AWNUmuYJTL7Cow==" }, + "@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==", + "requires": { + "@emotion/memoize": "0.7.4" + } + }, + "@emotion/memoize": { + "version": "0.7.4", + "resolved": "https://registry.npmjs.org/@emotion/memoize/-/memoize-0.7.4.tgz", + "integrity": "sha512-Ja/Vfqe3HpuzRsG1oBtWTHk2PGZ7GR+2Vz5iYGelAw8dx32K0y7PjVuxK6z1nMpZOqAFsRUPCkK1YjJ56qJlgw==" + }, + "@emotion/stylis": { + "version": "0.8.5", + "resolved": "https://registry.npmjs.org/@emotion/stylis/-/stylis-0.8.5.tgz", + "integrity": "sha512-h6KtPihKFn3T9fuIrwvXXUOwlx3rfUvfZIcP5a6rh8Y7zjE3O06hT5Ss4S/YI1AYhuZ1kjaE/5EaOOI2NqSylQ==" + }, + "@emotion/unitless": { + "version": "0.7.5", + "resolved": "https://registry.npmjs.org/@emotion/unitless/-/unitless-0.7.5.tgz", + "integrity": "sha512-OWORNpfjMsSSUBVrRBVGECkhWcULOAJz9ZW8uK9qgxD+87M7jHRcvh/A96XXNhXTLmKcoYSQtBEX7lHMO7YRwg==" + }, "@hapi/address": { "version": "2.1.4", "resolved": "https://registry.npmjs.org/@hapi/address/-/address-2.1.4.tgz", @@ -1432,7 +1455,8 @@ "@sheerun/mutationobserver-shim": { "version": "0.3.3", "resolved": "https://registry.npmjs.org/@sheerun/mutationobserver-shim/-/mutationobserver-shim-0.3.3.tgz", - "integrity": "sha512-DetpxZw1fzPD5xUBrIAoplLChO2VB8DlL5Gg+I1IR9b2wPqYIca2WSUxL5g1vLeR4MsQq1NeWriXAVffV+U1Fw==" + "integrity": "sha512-DetpxZw1fzPD5xUBrIAoplLChO2VB8DlL5Gg+I1IR9b2wPqYIca2WSUxL5g1vLeR4MsQq1NeWriXAVffV+U1Fw==", + "dev": true }, "@svgr/babel-plugin-add-jsx-attribute": { "version": "4.2.0", @@ -1547,6 +1571,7 @@ "version": "6.16.0", "resolved": "https://registry.npmjs.org/@testing-library/dom/-/dom-6.16.0.tgz", "integrity": "sha512-lBD88ssxqEfz0wFL6MeUyyWZfV/2cjEZZV3YRpb2IoJRej/4f1jB0TzqIOznTpfR1r34CNesrubxwIlAQ8zgPA==", + "dev": true, "requires": { "@babel/runtime": "^7.8.4", "@sheerun/mutationobserver-shim": "^0.3.2", @@ -1561,6 +1586,7 @@ "version": "25.5.0", "resolved": "https://registry.npmjs.org/@jest/types/-/types-25.5.0.tgz", "integrity": "sha512-OXD0RgQ86Tu3MazKo8bnrkDRaDXXMGUqd+kTtLtK1Zb7CRzQcaSRPPPV37SvYTdevXEBVxe0HXylEjs8ibkmCw==", + "dev": true, "requires": { "@types/istanbul-lib-coverage": "^2.0.0", "@types/istanbul-reports": "^1.1.1", @@ -1572,6 +1598,7 @@ "version": "15.0.5", "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-15.0.5.tgz", "integrity": "sha512-Dk/IDOPtOgubt/IaevIUbTgV7doaKkoorvOyYM2CMwuDyP89bekI7H4xLIwunNYiK9jhCkmc6pUrJk3cj2AB9w==", + "dev": true, "requires": { "@types/yargs-parser": "*" } @@ -1580,6 +1607,7 @@ "version": "4.2.1", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.2.1.tgz", "integrity": "sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA==", + "dev": true, "requires": { "@types/color-name": "^1.1.1", "color-convert": "^2.0.1" @@ -1589,6 +1617,7 @@ "version": "4.2.2", "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-4.2.2.tgz", "integrity": "sha512-o/HelwhuKpTj/frsOsbNLNgnNGVIFsVP/SW2BSF14gVl7kAfMOJ6/8wUAUvG1R1NHKrfG+2sHZTu0yauT1qBrA==", + "dev": true, "requires": { "@babel/runtime": "^7.10.2", "@babel/runtime-corejs3": "^7.10.2" @@ -1598,6 +1627,7 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", + "dev": true, "requires": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -1607,6 +1637,7 @@ "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, "requires": { "color-name": "~1.1.4" } @@ -1614,17 +1645,20 @@ "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==" + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true }, "has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true }, "pretty-format": { "version": "25.5.0", "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-25.5.0.tgz", "integrity": "sha512-kbo/kq2LQ/A/is0PQwsEHM7Ca6//bGPPvU6UnsdDRSKTWxT/ru/xb88v4BJf6a69H+uTytOEsTusT9ksd/1iWQ==", + "dev": true, "requires": { "@jest/types": "^25.5.0", "ansi-regex": "^5.0.0", @@ -1636,6 +1670,7 @@ "version": "7.1.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.1.0.tgz", "integrity": "sha512-oRSIpR8pxT1Wr2FquTNnGet79b3BWljqOuoW/h4oBhxJ/HUbX5nX6JSruTkvXDCFMwDPvsaTTbvMLKZWSy0R5g==", + "dev": true, "requires": { "has-flag": "^4.0.0" } @@ -1662,6 +1697,7 @@ "version": "9.5.0", "resolved": "https://registry.npmjs.org/@testing-library/react/-/react-9.5.0.tgz", "integrity": "sha512-di1b+D0p+rfeboHO5W7gTVeZDIK5+maEgstrZbWZSSvxDyfDRkkyBE1AJR5Psd6doNldluXlCWqXriUfqu/9Qg==", + "dev": true, "requires": { "@babel/runtime": "^7.8.4", "@testing-library/dom": "^6.15.0", @@ -1794,6 +1830,7 @@ "version": "16.9.8", "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-16.9.8.tgz", "integrity": "sha512-ykkPQ+5nFknnlU6lDd947WbQ6TE3NNzbQAkInC2EKY1qeYdTKp7onFusmYZb+ityzx2YviqT6BXSu+LyWWJwcA==", + "dev": true, "requires": { "@types/react": "*" } @@ -1815,6 +1852,7 @@ "version": "6.14.0", "resolved": "https://registry.npmjs.org/@types/testing-library__dom/-/testing-library__dom-6.14.0.tgz", "integrity": "sha512-sMl7OSv0AvMOqn1UJ6j1unPMIHRXen0Ita1ujnMX912rrOcawe4f7wu0Zt9GIQhBhJvH2BaibqFgQ3lP+Pj2hA==", + "dev": true, "requires": { "pretty-format": "^24.3.0" } @@ -1823,6 +1861,7 @@ "version": "9.1.3", "resolved": "https://registry.npmjs.org/@types/testing-library__react/-/testing-library__react-9.1.3.tgz", "integrity": "sha512-iCdNPKU3IsYwRK9JieSYAiX0+aYDXOGAmrC/3/M7AqqSDKnWWVv07X+Zk1uFSL7cMTUYzv4lQRfohucEocn5/w==", + "dev": true, "requires": { "@types/react-dom": "*", "@types/testing-library__dom": "*", @@ -1833,6 +1872,7 @@ "version": "25.5.0", "resolved": "https://registry.npmjs.org/@jest/types/-/types-25.5.0.tgz", "integrity": "sha512-OXD0RgQ86Tu3MazKo8bnrkDRaDXXMGUqd+kTtLtK1Zb7CRzQcaSRPPPV37SvYTdevXEBVxe0HXylEjs8ibkmCw==", + "dev": true, "requires": { "@types/istanbul-lib-coverage": "^2.0.0", "@types/istanbul-reports": "^1.1.1", @@ -1844,6 +1884,7 @@ "version": "15.0.5", "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-15.0.5.tgz", "integrity": "sha512-Dk/IDOPtOgubt/IaevIUbTgV7doaKkoorvOyYM2CMwuDyP89bekI7H4xLIwunNYiK9jhCkmc6pUrJk3cj2AB9w==", + "dev": true, "requires": { "@types/yargs-parser": "*" } @@ -1852,6 +1893,7 @@ "version": "4.2.1", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.2.1.tgz", "integrity": "sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA==", + "dev": true, "requires": { "@types/color-name": "^1.1.1", "color-convert": "^2.0.1" @@ -1861,6 +1903,7 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", + "dev": true, "requires": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -1870,6 +1913,7 @@ "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, "requires": { "color-name": "~1.1.4" } @@ -1877,17 +1921,20 @@ "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==" + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true }, "has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true }, "pretty-format": { "version": "25.5.0", "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-25.5.0.tgz", "integrity": "sha512-kbo/kq2LQ/A/is0PQwsEHM7Ca6//bGPPvU6UnsdDRSKTWxT/ru/xb88v4BJf6a69H+uTytOEsTusT9ksd/1iWQ==", + "dev": true, "requires": { "@jest/types": "^25.5.0", "ansi-regex": "^5.0.0", @@ -1899,6 +1946,7 @@ "version": "7.1.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.1.0.tgz", "integrity": "sha512-oRSIpR8pxT1Wr2FquTNnGet79b3BWljqOuoW/h4oBhxJ/HUbX5nX6JSruTkvXDCFMwDPvsaTTbvMLKZWSy0R5g==", + "dev": true, "requires": { "has-flag": "^4.0.0" } @@ -2715,6 +2763,22 @@ "resolved": "https://registry.npmjs.org/babel-plugin-named-asset-import/-/babel-plugin-named-asset-import-0.3.6.tgz", "integrity": "sha512-1aGDUfL1qOOIoqk9QKGIo2lANk+C7ko/fqH0uIyC71x3PEGz0uVP8ISgfEsFuG+FKmjHTvFK/nNM8dowpmUxLA==" }, + "babel-plugin-styled-components": { + "version": "1.10.7", + "resolved": "https://registry.npmjs.org/babel-plugin-styled-components/-/babel-plugin-styled-components-1.10.7.tgz", + "integrity": "sha512-MBMHGcIA22996n9hZRf/UJLVVgkEOITuR2SvjHLb5dSTUyR4ZRGn+ngITapes36FI3WLxZHfRhkA1ffHxihOrg==", + "requires": { + "@babel/helper-annotate-as-pure": "^7.0.0", + "@babel/helper-module-imports": "^7.0.0", + "babel-plugin-syntax-jsx": "^6.18.0", + "lodash": "^4.17.11" + } + }, + "babel-plugin-syntax-jsx": { + "version": "6.18.0", + "resolved": "https://registry.npmjs.org/babel-plugin-syntax-jsx/-/babel-plugin-syntax-jsx-6.18.0.tgz", + "integrity": "sha1-CvMqmm4Tyno/1QaeYtew9Y0NiUY=" + }, "babel-plugin-syntax-object-rest-spread": { "version": "6.13.0", "resolved": "https://registry.npmjs.org/babel-plugin-syntax-object-rest-spread/-/babel-plugin-syntax-object-rest-spread-6.13.0.tgz", @@ -3018,6 +3082,15 @@ "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.0.0.tgz", "integrity": "sha512-Phlt0plgpIIBOGTT/ehfFnbNlfsDEiqmzE2KRXoX1bLIlir4X/MR+zSyBEkL05ffWgnRSf/DXv+WrUAVr93/ow==" }, + "bindings": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/bindings/-/bindings-1.5.0.tgz", + "integrity": "sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==", + "optional": true, + "requires": { + "file-uri-to-path": "1.0.0" + } + }, "bluebird": { "version": "3.7.2", "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz", @@ -3375,6 +3448,11 @@ "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==" }, + "camelize": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/camelize/-/camelize-1.0.0.tgz", + "integrity": "sha1-FkpUg+Yw+kMh5a8HAg5TGDGyYJs=" + }, "caniuse-api": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/caniuse-api/-/caniuse-api-3.0.0.tgz", @@ -4012,6 +4090,11 @@ "postcss": "^7.0.5" } }, + "css-color-keywords": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/css-color-keywords/-/css-color-keywords-1.0.0.tgz", + "integrity": "sha1-/qJhbcZ2spYmhrOvjb2+GAskTgU=" + }, "css-color-names": { "version": "0.0.4", "resolved": "https://registry.npmjs.org/css-color-names/-/css-color-names-0.0.4.tgz", @@ -4102,6 +4185,16 @@ "resolved": "https://registry.npmjs.org/css-select-base-adapter/-/css-select-base-adapter-0.1.1.tgz", "integrity": "sha512-jQVeeRG70QI08vSTwf1jHxp74JoZsr2XSgETae8/xC8ovSnL2WF87GTLO86Sbwdt2lK4Umg4HnnwMO4YF3Ce7w==" }, + "css-to-react-native": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/css-to-react-native/-/css-to-react-native-3.0.0.tgz", + "integrity": "sha512-Ro1yETZA813eoyUp2GDBhG2j+YggidUmzO1/v9eYBKR2EHVEniE2MI/NqpTQ954BMpTPZFsGNPm46qFB9dpaPQ==", + "requires": { + "camelize": "^1.0.0", + "css-color-keywords": "^1.0.0", + "postcss-value-parser": "^4.0.2" + } + }, "css-tree": { "version": "1.0.0-alpha.37", "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-1.0.0-alpha.37.tgz", @@ -4576,7 +4669,8 @@ "dom-accessibility-api": { "version": "0.3.0", "resolved": "https://registry.npmjs.org/dom-accessibility-api/-/dom-accessibility-api-0.3.0.tgz", - "integrity": "sha512-PzwHEmsRP3IGY4gv/Ug+rMeaTIyTJvadCb+ujYXYeIylbHJezIyNToe8KfEgHTCEYyC+/bUghYOGg8yMGlZ6vA==" + "integrity": "sha512-PzwHEmsRP3IGY4gv/Ug+rMeaTIyTJvadCb+ujYXYeIylbHJezIyNToe8KfEgHTCEYyC+/bUghYOGg8yMGlZ6vA==", + "dev": true }, "dom-converter": { "version": "0.2.0", @@ -5791,6 +5885,12 @@ "schema-utils": "^2.5.0" } }, + "file-uri-to-path": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz", + "integrity": "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==", + "optional": true + }, "filesize": { "version": "6.0.1", "resolved": "https://registry.npmjs.org/filesize/-/filesize-6.0.1.tgz", @@ -6363,6 +6463,19 @@ "resolved": "https://registry.npmjs.org/hex-color-regex/-/hex-color-regex-1.1.0.tgz", "integrity": "sha512-l9sfDFsuqtOqKDsQdqrMRk0U85RZc0RtOR9yPI7mRVOa4FsR/BVnZ0shmQRM96Ji99kYZP/7hn1cedc1+ApsTQ==" }, + "history": { + "version": "4.10.1", + "resolved": "https://registry.npmjs.org/history/-/history-4.10.1.tgz", + "integrity": "sha512-36nwAD620w12kuzPAsyINPWJqlNbij+hpK1k9XRloDtym8mxzGYl2c17LnV6IAGB2Dmg4tEa7G7DlawS0+qjew==", + "requires": { + "@babel/runtime": "^7.1.2", + "loose-envify": "^1.2.0", + "resolve-pathname": "^3.0.0", + "tiny-invariant": "^1.0.2", + "tiny-warning": "^1.0.0", + "value-equal": "^1.0.1" + } + }, "hmac-drbg": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz", @@ -7384,7 +7497,11 @@ "version": "1.2.13", "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.13.tgz", "integrity": "sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw==", - "optional": true + "optional": true, + "requires": { + "bindings": "^1.5.0", + "nan": "^2.12.1" + } } } }, @@ -8367,6 +8484,15 @@ "resolved": "https://registry.npmjs.org/min-indent/-/min-indent-1.0.1.tgz", "integrity": "sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==" }, + "mini-create-react-context": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/mini-create-react-context/-/mini-create-react-context-0.4.0.tgz", + "integrity": "sha512-b0TytUgFSbgFJGzJqXPKCFCBWigAjpjo+Fl7Vf7ZbKRDptszpppKxXH6DRXEABZ/gcEQczeb0iZ7JvL8e8jjCA==", + "requires": { + "@babel/runtime": "^7.5.5", + "tiny-warning": "^1.0.3" + } + }, "mini-css-extract-plugin": { "version": "0.9.0", "resolved": "https://registry.npmjs.org/mini-css-extract-plugin/-/mini-css-extract-plugin-0.9.0.tgz", @@ -8542,6 +8668,12 @@ "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.8.tgz", "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==" }, + "nan": { + "version": "2.14.1", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.14.1.tgz", + "integrity": "sha512-isWHgVjnFjh2x2yuJ/tj3JbwoHu3UC2dX5G/88Cm24yB6YopVgxvBObDY7n5xW6ExmFhJpSEQqFPvq9zaXc8Jw==", + "optional": true + }, "nanomatch": { "version": "1.2.13", "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.13.tgz", @@ -10771,6 +10903,52 @@ "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==" }, + "react-router": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/react-router/-/react-router-5.2.0.tgz", + "integrity": "sha512-smz1DUuFHRKdcJC0jobGo8cVbhO3x50tCL4icacOlcwDOEQPq4TMqwx3sY1TP+DvtTgz4nm3thuo7A+BK2U0Dw==", + "requires": { + "@babel/runtime": "^7.1.2", + "history": "^4.9.0", + "hoist-non-react-statics": "^3.1.0", + "loose-envify": "^1.3.1", + "mini-create-react-context": "^0.4.0", + "path-to-regexp": "^1.7.0", + "prop-types": "^15.6.2", + "react-is": "^16.6.0", + "tiny-invariant": "^1.0.2", + "tiny-warning": "^1.0.0" + }, + "dependencies": { + "isarray": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=" + }, + "path-to-regexp": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-1.8.0.tgz", + "integrity": "sha512-n43JRhlUKUAlibEJhPeir1ncUID16QnEjNpwzNdO3Lm4ywrBpBZ5oLD0I6br9evr1Y9JTqwRtAh7JLoOzAQdVA==", + "requires": { + "isarray": "0.0.1" + } + } + } + }, + "react-router-dom": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/react-router-dom/-/react-router-dom-5.2.0.tgz", + "integrity": "sha512-gxAmfylo2QUjcwxI63RhQ5G85Qqt4voZpUXSEqCwykV0baaOTQDR1f0PmY8AELqIyVc0NEZUj0Gov5lNGcXgsA==", + "requires": { + "@babel/runtime": "^7.1.2", + "history": "^4.9.0", + "loose-envify": "^1.3.1", + "prop-types": "^15.6.2", + "react-router": "5.2.0", + "tiny-invariant": "^1.0.2", + "tiny-warning": "^1.0.0" + } + }, "react-scripts": { "version": "3.4.1", "resolved": "https://registry.npmjs.org/react-scripts/-/react-scripts-3.4.1.tgz", @@ -11145,6 +11323,11 @@ "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-3.0.0.tgz", "integrity": "sha1-six699nWiBvItuZTM17rywoYh0g=" }, + "resolve-pathname": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/resolve-pathname/-/resolve-pathname-3.0.0.tgz", + "integrity": "sha512-C7rARubxI8bXFNB/hqcp/4iUeIXJhJZvFPFPiSPRnhU5UPxzMFIl+2E6yY6c4k9giDJAhtV+enfA+G89N6Csng==" + }, "resolve-url": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz", @@ -11618,6 +11801,11 @@ } } }, + "shallowequal": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/shallowequal/-/shallowequal-1.1.0.tgz", + "integrity": "sha512-y0m1JoUZSlPAjXVtPPW70aZWfIL/dSP7AFkRnniLCrK/8MDKog3TySTBmckD+RObVxH0v4Tox67+F14PdED2oQ==" + }, "shebang-command": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", @@ -12286,6 +12474,23 @@ } } }, + "styled-components": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/styled-components/-/styled-components-5.1.1.tgz", + "integrity": "sha512-1ps8ZAYu2Husx+Vz8D+MvXwEwvMwFv+hqqUwhNlDN5ybg6A+3xyW1ECrAgywhvXapNfXiz79jJyU0x22z0FFTg==", + "requires": { + "@babel/helper-module-imports": "^7.0.0", + "@babel/traverse": "^7.4.5", + "@emotion/is-prop-valid": "^0.8.8", + "@emotion/stylis": "^0.8.4", + "@emotion/unitless": "^0.7.4", + "babel-plugin-styled-components": ">= 1", + "css-to-react-native": "^3.0.0", + "hoist-non-react-statics": "^3.0.0", + "shallowequal": "^1.1.0", + "supports-color": "^5.5.0" + } + }, "stylehacks": { "version": "4.0.3", "resolved": "https://registry.npmjs.org/stylehacks/-/stylehacks-4.0.3.tgz", @@ -12579,6 +12784,11 @@ "resolved": "https://registry.npmjs.org/timsort/-/timsort-0.3.0.tgz", "integrity": "sha1-QFQRqOfmM5/mTbmiNN4R3DHgK9Q=" }, + "tiny-invariant": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/tiny-invariant/-/tiny-invariant-1.1.0.tgz", + "integrity": "sha512-ytxQvrb1cPc9WBEI/HSeYYoGD0kWnGEOR8RY6KomWLBVhqz0RgTwVO9dLrGz7dC+nN9llyI7OKAgRq8Vq4ZBSw==" + }, "tiny-warning": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/tiny-warning/-/tiny-warning-1.0.3.tgz", @@ -12955,6 +13165,11 @@ "spdx-expression-parse": "^3.0.0" } }, + "value-equal": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/value-equal/-/value-equal-1.0.1.tgz", + "integrity": "sha512-NOJ6JZCAWr0zlxZt+xqCHNTEKOsrks2HQd4MqhP1qy4z1SkbEP467eNx6TgDKXMvUOb+OENfJCZwM+16n7fRfw==" + }, "vary": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", @@ -13001,7 +13216,8 @@ "wait-for-expect": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/wait-for-expect/-/wait-for-expect-3.0.2.tgz", - "integrity": "sha512-cfS1+DZxuav1aBYbaO/kE06EOS8yRw7qOFoD3XtjTkYvCvh3zUvNST8DXK/nPaeqIzIv3P3kL3lRJn8iwOiSag==" + "integrity": "sha512-cfS1+DZxuav1aBYbaO/kE06EOS8yRw7qOFoD3XtjTkYvCvh3zUvNST8DXK/nPaeqIzIv3P3kL3lRJn8iwOiSag==", + "dev": true }, "walker": { "version": "1.0.7", @@ -13061,7 +13277,11 @@ "version": "1.2.13", "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.13.tgz", "integrity": "sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw==", - "optional": true + "optional": true, + "requires": { + "bindings": "^1.5.0", + "nan": "^2.12.1" + } }, "glob-parent": { "version": "3.1.0", @@ -13374,7 +13594,11 @@ "version": "1.2.13", "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.13.tgz", "integrity": "sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw==", - "optional": true + "optional": true, + "requires": { + "bindings": "^1.5.0", + "nan": "^2.12.1" + } }, "get-caller-file": { "version": "1.0.3", diff --git a/recipe-hooks-project/package.json b/recipe-hooks-project/package.json index 5f54e9a3..5d451b87 100644 --- a/recipe-hooks-project/package.json +++ b/recipe-hooks-project/package.json @@ -5,11 +5,12 @@ "dependencies": { "@material-ui/core": "^4.10.2", "@testing-library/jest-dom": "^4.2.4", - "@testing-library/react": "^9.5.0", "@testing-library/user-event": "^7.2.1", "react": "^16.13.1", "react-dom": "^16.13.1", - "react-scripts": "3.4.1" + "react-router-dom": "^5.2.0", + "react-scripts": "3.4.1", + "styled-components": "^5.1.1" }, "scripts": { "start": "react-scripts start", @@ -31,5 +32,8 @@ "last 1 firefox version", "last 1 safari version" ] + }, + "devDependencies": { + "@testing-library/react": "^9.5.0" } } From 615369629fdb4eb25a74299224a9bfc083b3eade Mon Sep 17 00:00:00 2001 From: Francesco Venneri Date: Mon, 29 Jun 2020 14:46:37 +0200 Subject: [PATCH 03/31] [RECIPE-PROJECT] Fixed the App.test.js --- recipe-hooks-project/src/App.test.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/recipe-hooks-project/src/App.test.js b/recipe-hooks-project/src/App.test.js index 4db7ebc2..b78e27f2 100644 --- a/recipe-hooks-project/src/App.test.js +++ b/recipe-hooks-project/src/App.test.js @@ -4,6 +4,6 @@ import App from './App'; test('renders learn react link', () => { const { getByText } = render(); - const linkElement = getByText(/learn react/i); - expect(linkElement).toBeInTheDocument(); + const appTitle = getByText(/Recipe App/i); + expect(appTitle).toBeInTheDocument(); }); From 9c9323d0b77bf7185aebe96e81781bfd50c1a981 Mon Sep 17 00:00:00 2001 From: Francesco Venneri Date: Mon, 29 Jun 2020 14:50:45 +0200 Subject: [PATCH 04/31] [RECIPE-PROJECT] Added exercise description to README --- recipe-hooks-project/README.md | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/recipe-hooks-project/README.md b/recipe-hooks-project/README.md index 54ef0943..4904edcc 100644 --- a/recipe-hooks-project/README.md +++ b/recipe-hooks-project/README.md @@ -1,3 +1,18 @@ +# Exercise description +- React TK Exercise (instructors: @Giuseppe Bandiera, @Iván Navarro): + - We want to create a client application for the Recipe/Ingredients server we already built in the previous exercise (Django) + - Use Hooks not classes + - Create React App → [https://facebook.github.io/create-react-app/](https://facebook.github.io/create-react-app/) + - Style library → [Styled components](https://www.styled-components.com/) + - For routing use this library → [https://reacttraining.com/react-router/](https://reacttraining.com/react-router/) + - [React docs](https://reactjs.org/) + - [React testing library](https://github.com/kentcdodds/react-testing-library) + - [TravelPerk Styleguide](https://www.notion.so/travelperk/Frontend-Guidelines-0743e3e822934b4899e98062f9e42000) + +You can find more information, questions or issues on [#travelperk-university](https://travelperk.slack.com/messages/C4C085Z0B/convo/C3NTN87L3-1548067719.221800/?cdn_fallback=1) channel on slack. + +# CREATE-REACT-APP README + This project was bootstrapped with [Create React App](https://github.com/facebook/create-react-app). ## Available Scripts From 9dd6f4fb5f3b56e61475f5d609ce77f6be43a48c Mon Sep 17 00:00:00 2001 From: Francesco Venneri Date: Mon, 29 Jun 2020 18:06:11 +0200 Subject: [PATCH 05/31] [RECIPE-PROJECT] Installed some dependencies and make the login request correctly for the TOKEN --- recipe-hooks-project/package-lock.json | 35 +++++++++ recipe-hooks-project/package.json | 3 +- recipe-hooks-project/src/App.js | 4 +- recipe-hooks-project/src/Login.js | 78 +++++++++++++++++++ .../src/hooks/useInputState.js | 12 +++ 5 files changed, 129 insertions(+), 3 deletions(-) create mode 100644 recipe-hooks-project/src/Login.js create mode 100644 recipe-hooks-project/src/hooks/useInputState.js diff --git a/recipe-hooks-project/package-lock.json b/recipe-hooks-project/package-lock.json index 5ae263fb..8b95f789 100644 --- a/recipe-hooks-project/package-lock.json +++ b/recipe-hooks-project/package-lock.json @@ -2566,6 +2566,41 @@ "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.10.0.tgz", "integrity": "sha512-3YDiu347mtVtjpyV3u5kVqQLP242c06zwDOgpeRnybmXlYYsLbtTrUBUm8i8srONt+FWobl5aibnU1030PeeuA==" }, + "axios": { + "version": "0.19.2", + "resolved": "https://registry.npmjs.org/axios/-/axios-0.19.2.tgz", + "integrity": "sha512-fjgm5MvRHLhx+osE2xoekY70AhARk3a6hkN+3Io1jc00jtquGvxYlKlsFUhmUET0V5te6CcZI7lcv2Ym61mjHA==", + "dev": true, + "requires": { + "follow-redirects": "1.5.10" + }, + "dependencies": { + "debug": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", + "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "follow-redirects": { + "version": "1.5.10", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.5.10.tgz", + "integrity": "sha512-0V5l4Cizzvqt5D44aTXbFZz+FtyXV1vrDN6qrelxtfYQKW0KO0W2T/hkE8xvGa/540LkZlkaUjO4ailYTFtHVQ==", + "dev": true, + "requires": { + "debug": "=3.1.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + } + } + }, "axobject-query": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/axobject-query/-/axobject-query-2.2.0.tgz", diff --git a/recipe-hooks-project/package.json b/recipe-hooks-project/package.json index 5d451b87..09e2c84a 100644 --- a/recipe-hooks-project/package.json +++ b/recipe-hooks-project/package.json @@ -34,6 +34,7 @@ ] }, "devDependencies": { - "@testing-library/react": "^9.5.0" + "@testing-library/react": "^9.5.0", + "axios": "^0.19.2" } } diff --git a/recipe-hooks-project/src/App.js b/recipe-hooks-project/src/App.js index c7781333..226be5bd 100644 --- a/recipe-hooks-project/src/App.js +++ b/recipe-hooks-project/src/App.js @@ -1,9 +1,9 @@ import React from 'react'; -import RecipeApp from "./RecipeApp"; +import Login from "./Login"; function App() { return ( - + ); } diff --git a/recipe-hooks-project/src/Login.js b/recipe-hooks-project/src/Login.js new file mode 100644 index 00000000..f0b06d14 --- /dev/null +++ b/recipe-hooks-project/src/Login.js @@ -0,0 +1,78 @@ +import React from 'react'; +import styled from 'styled-components'; +import useInputState from "./hooks/useInputState"; +import axios from "axios"; + +const Container = styled.div` + height: 100vh; + display: flex; +`; + +const LoginFormTitle = styled.h3` + font-size: 2em; +`; + +const LoginForm = styled.form` + display: flex; + justify-content: center; + align-items: center; + flex-direction: column; + border: 1px solid gray; + border-radius: 5px; + width: 20%; + box-shadow: 0 19px 38px rgba(0, 0, 0, 0.3), 0 15px 12px rgba(0, 0, 0, 0.1); + margin: auto; + padding: 10px; +`; + +const Input = styled.input.attrs(props => ({ + type: props.type, + placeholder: props.name, + name: props.name, + size: "1em", + onChange: props.onChange +}))` + color: blue; + font-size: 1em; + border: 2px solid blue; + border-radius: 3px; + margin: 1em; + padding: 1em; +`; + +const LoginButton = styled.button.attrs(props => ({ + onClick: props.handleClick +}))` + background: ${props => props.primary ? "blue" : "white"}; + color: ${props => props.primary ? "white" : "blue"}; + font-size: 1em; + margin: 1em; + padding: 0.25em 1em; + border: 2px solid blue; + border-radius: 3px; +`; + +export default function Login() { + const [email, handleEmailChange] = useInputState(""); + const [password, handlePasswordChange] = useInputState(""); + + async function login(evt) { + evt.preventDefault(); + const token = await axios.post("http://localhost:8000/api/user/token/", + {email: email, password: password} + ); + // STORE INTO CONTEXT + // REDIRECT TO HOME + } + + return ( + + + Login + + + login + + + ); +}; \ No newline at end of file diff --git a/recipe-hooks-project/src/hooks/useInputState.js b/recipe-hooks-project/src/hooks/useInputState.js new file mode 100644 index 00000000..019393f1 --- /dev/null +++ b/recipe-hooks-project/src/hooks/useInputState.js @@ -0,0 +1,12 @@ +import { useState } from "react"; +export default initialVal => { + const [value, setValue] = useState(initialVal); + const handleChange = e => { + e.preventDefault(); + setValue(e.target.value); + }; + const reset = () => { + setValue(""); + }; + return [value, handleChange, reset]; +}; From 502a5fb80ee9be3dd5453cad073a75af4bfd09da Mon Sep 17 00:00:00 2001 From: Francesco Venneri Date: Tue, 30 Jun 2020 11:24:57 +0200 Subject: [PATCH 06/31] [RECIPE-PROJECT] Done login form and added Auth context --- recipe-hooks-project/src/App.js | 15 +++++- recipe-hooks-project/src/App.test.js | 23 +++++--- recipe-hooks-project/src/Login.js | 53 +------------------ recipe-hooks-project/src/Login.test.js | 12 +++++ .../src/components/LoginForm.js | 52 ++++++++++++++++++ recipe-hooks-project/src/contexts/useAuth.js | 7 +++ 6 files changed, 102 insertions(+), 60 deletions(-) create mode 100644 recipe-hooks-project/src/Login.test.js create mode 100644 recipe-hooks-project/src/components/LoginForm.js create mode 100644 recipe-hooks-project/src/contexts/useAuth.js diff --git a/recipe-hooks-project/src/App.js b/recipe-hooks-project/src/App.js index 226be5bd..1acdaf17 100644 --- a/recipe-hooks-project/src/App.js +++ b/recipe-hooks-project/src/App.js @@ -1,9 +1,20 @@ -import React from 'react'; +import React from "react"; import Login from "./Login"; +import {AuthContext, useAuth} from "./contexts/useAuth"; function App() { + const isAuthenticated = useAuth(); + return ( - + + {isAuthenticated + ? <> + + : <> + + + } + ); } diff --git a/recipe-hooks-project/src/App.test.js b/recipe-hooks-project/src/App.test.js index b78e27f2..73e6d28a 100644 --- a/recipe-hooks-project/src/App.test.js +++ b/recipe-hooks-project/src/App.test.js @@ -1,9 +1,18 @@ -import React from 'react'; -import { render } from '@testing-library/react'; -import App from './App'; +import React from "react"; +import {render} from "@testing-library/react"; +import App from "./App"; +import {AuthContext} from "./contexts/useAuth"; -test('renders learn react link', () => { - const { getByText } = render(); - const appTitle = getByText(/Recipe App/i); - expect(appTitle).toBeInTheDocument(); +test("when not authenticated, renders login", () => { + const {container} = render(); + expect(container.querySelector("h3")).toHaveTextContent("Login"); +}); + +test("when authenticated, do not render login", () => { + const {container} = render( + + + + ); + expect(container.querySelector("input[name=email]")).toBeNull(); }); diff --git a/recipe-hooks-project/src/Login.js b/recipe-hooks-project/src/Login.js index f0b06d14..37eaa390 100644 --- a/recipe-hooks-project/src/Login.js +++ b/recipe-hooks-project/src/Login.js @@ -1,56 +1,7 @@ -import React from 'react'; -import styled from 'styled-components'; +import React from "react"; import useInputState from "./hooks/useInputState"; import axios from "axios"; - -const Container = styled.div` - height: 100vh; - display: flex; -`; - -const LoginFormTitle = styled.h3` - font-size: 2em; -`; - -const LoginForm = styled.form` - display: flex; - justify-content: center; - align-items: center; - flex-direction: column; - border: 1px solid gray; - border-radius: 5px; - width: 20%; - box-shadow: 0 19px 38px rgba(0, 0, 0, 0.3), 0 15px 12px rgba(0, 0, 0, 0.1); - margin: auto; - padding: 10px; -`; - -const Input = styled.input.attrs(props => ({ - type: props.type, - placeholder: props.name, - name: props.name, - size: "1em", - onChange: props.onChange -}))` - color: blue; - font-size: 1em; - border: 2px solid blue; - border-radius: 3px; - margin: 1em; - padding: 1em; -`; - -const LoginButton = styled.button.attrs(props => ({ - onClick: props.handleClick -}))` - background: ${props => props.primary ? "blue" : "white"}; - color: ${props => props.primary ? "white" : "blue"}; - font-size: 1em; - margin: 1em; - padding: 0.25em 1em; - border: 2px solid blue; - border-radius: 3px; -`; +import {Container, Input, LoginButton, LoginForm, LoginFormTitle} from "./components/LoginForm" export default function Login() { const [email, handleEmailChange] = useInputState(""); diff --git a/recipe-hooks-project/src/Login.test.js b/recipe-hooks-project/src/Login.test.js new file mode 100644 index 00000000..27266d03 --- /dev/null +++ b/recipe-hooks-project/src/Login.test.js @@ -0,0 +1,12 @@ +import React from "react"; +import Login from "./Login"; +import {render} from "@testing-library/react"; + +test("renders the login page", () => { + const {container} = render(); + + expect(container.querySelector("h3")).toHaveTextContent("Login"); + expect(container.querySelector("input[name=email]")).toBeInTheDocument(); + expect(container.querySelector("input[name=password]")).toBeInTheDocument(); + expect(container.querySelector("button")).toHaveTextContent("login"); +}); diff --git a/recipe-hooks-project/src/components/LoginForm.js b/recipe-hooks-project/src/components/LoginForm.js new file mode 100644 index 00000000..81709b57 --- /dev/null +++ b/recipe-hooks-project/src/components/LoginForm.js @@ -0,0 +1,52 @@ +import styled from "styled-components"; + +const Container = styled.div` + height: 100vh; + display: flex; +`; + +const LoginFormTitle = styled.h3` + font-size: 2em; +`; + +const LoginForm = styled.form` + display: flex; + justify-content: center; + align-items: center; + flex-direction: column; + border: 1px solid gray; + border-radius: 5px; + width: 20%; + box-shadow: 0 19px 38px rgba(0, 0, 0, 0.3), 0 15px 12px rgba(0, 0, 0, 0.1); + margin: auto; + padding: 10px; +`; + +const Input = styled.input.attrs(props => ({ + type: props.type, + placeholder: props.name, + name: props.name, + size: "1em", + onChange: props.onChange +}))` + color: blue; + font-size: 1em; + border: 2px solid blue; + border-radius: 3px; + margin: 1em; + padding: 1em; +`; + +const LoginButton = styled.button.attrs(props => ({ + onClick: props.handleClick +}))` + background: ${props => props.primary ? "blue" : "white"}; + color: ${props => props.primary ? "white" : "blue"}; + font-size: 1em; + margin: 1em; + padding: 0.25em 1em; + border: 2px solid blue; + border-radius: 3px; +`; + +export {Container, LoginForm, LoginFormTitle, Input, LoginButton}; \ No newline at end of file diff --git a/recipe-hooks-project/src/contexts/useAuth.js b/recipe-hooks-project/src/contexts/useAuth.js new file mode 100644 index 00000000..c9670531 --- /dev/null +++ b/recipe-hooks-project/src/contexts/useAuth.js @@ -0,0 +1,7 @@ +import {createContext, useContext} from "react"; + +export const AuthContext = createContext(); + +export function useAuth() { + return useContext(AuthContext); +} \ No newline at end of file From 3e803d06445b48d7a0bd27ce6c11dfebd4a1be0b Mon Sep 17 00:00:00 2001 From: Francesco Venneri Date: Tue, 30 Jun 2020 14:26:23 +0200 Subject: [PATCH 07/31] [RECIPE-PROJECT] Login implemented and tested --- recipe-hooks-project/src/App.js | 21 ++++------ recipe-hooks-project/src/App.test.js | 18 --------- recipe-hooks-project/src/AppPage.js | 21 ++++++++++ recipe-hooks-project/src/AppPage.test.js | 39 +++++++++++++++++++ recipe-hooks-project/src/Login.js | 13 ++++--- recipe-hooks-project/src/Login.test.js | 2 +- recipe-hooks-project/src/RecipeApp.js | 2 +- .../src/contexts/AuthenticationProvider.js | 14 +++++++ recipe-hooks-project/src/contexts/useAuth.js | 7 ---- .../src/hooks/useInputState.js | 3 +- 10 files changed, 93 insertions(+), 47 deletions(-) delete mode 100644 recipe-hooks-project/src/App.test.js create mode 100644 recipe-hooks-project/src/AppPage.js create mode 100644 recipe-hooks-project/src/AppPage.test.js create mode 100644 recipe-hooks-project/src/contexts/AuthenticationProvider.js delete mode 100644 recipe-hooks-project/src/contexts/useAuth.js diff --git a/recipe-hooks-project/src/App.js b/recipe-hooks-project/src/App.js index 1acdaf17..03e2855a 100644 --- a/recipe-hooks-project/src/App.js +++ b/recipe-hooks-project/src/App.js @@ -1,20 +1,15 @@ import React from "react"; -import Login from "./Login"; -import {AuthContext, useAuth} from "./contexts/useAuth"; +import {AuthenticationProvider} from "./contexts/AuthenticationProvider"; +import AppPage from "./AppPage"; +import {BrowserRouter} from "react-router-dom"; function App() { - const isAuthenticated = useAuth(); - return ( - - {isAuthenticated - ? <> - - : <> - - - } - + + + + + ); } diff --git a/recipe-hooks-project/src/App.test.js b/recipe-hooks-project/src/App.test.js deleted file mode 100644 index 73e6d28a..00000000 --- a/recipe-hooks-project/src/App.test.js +++ /dev/null @@ -1,18 +0,0 @@ -import React from "react"; -import {render} from "@testing-library/react"; -import App from "./App"; -import {AuthContext} from "./contexts/useAuth"; - -test("when not authenticated, renders login", () => { - const {container} = render(); - expect(container.querySelector("h3")).toHaveTextContent("Login"); -}); - -test("when authenticated, do not render login", () => { - const {container} = render( - - - - ); - expect(container.querySelector("input[name=email]")).toBeNull(); -}); diff --git a/recipe-hooks-project/src/AppPage.js b/recipe-hooks-project/src/AppPage.js new file mode 100644 index 00000000..8166f6d2 --- /dev/null +++ b/recipe-hooks-project/src/AppPage.js @@ -0,0 +1,21 @@ +import React, {useContext} from "react"; +import RecipeApp from "./RecipeApp"; +import Login from "./Login"; +import {AuthContext} from "./contexts/AuthenticationProvider"; + +export default function AppPage(props) { + const {token} = useContext(AuthContext); + + return ( +
+ {token !== null + ? <> + + + : <> + + + } +
+ ); +}; \ No newline at end of file diff --git a/recipe-hooks-project/src/AppPage.test.js b/recipe-hooks-project/src/AppPage.test.js new file mode 100644 index 00000000..36a720c4 --- /dev/null +++ b/recipe-hooks-project/src/AppPage.test.js @@ -0,0 +1,39 @@ +import {fireEvent, render} from "@testing-library/react"; +import {AuthContext, AuthenticationProvider} from "./contexts/AuthenticationProvider"; +import AppPage from "./AppPage"; +import React from "react"; +import Login from "./Login"; +import {waitForElement} from "@testing-library/dom"; + +test("when not authenticated, renders login", () => { + const {container} = render( + + + + ); + expect(container.querySelector("h3")).toHaveTextContent("Login"); +}); + +test("when authenticated, do not render login", () => { + const {container, getByText} = render( + + + + ); + expect(getByText(/Recipe App/i)).toBeInTheDocument(); + expect(container.querySelector("input[name=email]")).toBeNull(); +}); + +test("when not authenticated, an user can login", async () => { + const {container, getByText} = render( + + + + ); + + fireEvent.change(container.querySelector("input[name=email]"), {target: {value: "test@test.com"}}); + fireEvent.change(container.querySelector("input[name=password]"), {target: {value: "testpass"}}); + fireEvent.click(container.querySelector("button[name=loginButton]")); + + expect(await waitForElement(() => getByText(/Recipe App/i))).toBeInTheDocument(); +}); \ No newline at end of file diff --git a/recipe-hooks-project/src/Login.js b/recipe-hooks-project/src/Login.js index 37eaa390..72ea50a0 100644 --- a/recipe-hooks-project/src/Login.js +++ b/recipe-hooks-project/src/Login.js @@ -1,28 +1,29 @@ -import React from "react"; +import React, {useContext} from "react"; import useInputState from "./hooks/useInputState"; import axios from "axios"; import {Container, Input, LoginButton, LoginForm, LoginFormTitle} from "./components/LoginForm" +import {AuthContext} from "./contexts/AuthenticationProvider"; export default function Login() { const [email, handleEmailChange] = useInputState(""); const [password, handlePasswordChange] = useInputState(""); + const {login} = useContext(AuthContext); - async function login(evt) { + async function handleLogin(evt) { evt.preventDefault(); const token = await axios.post("http://localhost:8000/api/user/token/", {email: email, password: password} ); - // STORE INTO CONTEXT - // REDIRECT TO HOME + login(token); } return ( Login - + - login + login ); diff --git a/recipe-hooks-project/src/Login.test.js b/recipe-hooks-project/src/Login.test.js index 27266d03..8fd6e2ad 100644 --- a/recipe-hooks-project/src/Login.test.js +++ b/recipe-hooks-project/src/Login.test.js @@ -9,4 +9,4 @@ test("renders the login page", () => { expect(container.querySelector("input[name=email]")).toBeInTheDocument(); expect(container.querySelector("input[name=password]")).toBeInTheDocument(); expect(container.querySelector("button")).toHaveTextContent("login"); -}); +}); \ No newline at end of file diff --git a/recipe-hooks-project/src/RecipeApp.js b/recipe-hooks-project/src/RecipeApp.js index 78d9e2f5..5366bb92 100644 --- a/recipe-hooks-project/src/RecipeApp.js +++ b/recipe-hooks-project/src/RecipeApp.js @@ -1,4 +1,4 @@ -import React, {useState, useEffect} from 'react'; +import React from "react"; export default function RecipeApp(props) { return ( diff --git a/recipe-hooks-project/src/contexts/AuthenticationProvider.js b/recipe-hooks-project/src/contexts/AuthenticationProvider.js new file mode 100644 index 00000000..2a21efac --- /dev/null +++ b/recipe-hooks-project/src/contexts/AuthenticationProvider.js @@ -0,0 +1,14 @@ +import React, {createContext, useState} from "react"; + +export const AuthContext = createContext(); + +export function AuthenticationProvider(props) { + const [token, setToken] = useState(null); + const login = tokenValue => setToken(tokenValue); + const logout = () => setToken(null); + return ( + + {props.children} + + ); +} \ No newline at end of file diff --git a/recipe-hooks-project/src/contexts/useAuth.js b/recipe-hooks-project/src/contexts/useAuth.js deleted file mode 100644 index c9670531..00000000 --- a/recipe-hooks-project/src/contexts/useAuth.js +++ /dev/null @@ -1,7 +0,0 @@ -import {createContext, useContext} from "react"; - -export const AuthContext = createContext(); - -export function useAuth() { - return useContext(AuthContext); -} \ No newline at end of file diff --git a/recipe-hooks-project/src/hooks/useInputState.js b/recipe-hooks-project/src/hooks/useInputState.js index 019393f1..c3c0a8f6 100644 --- a/recipe-hooks-project/src/hooks/useInputState.js +++ b/recipe-hooks-project/src/hooks/useInputState.js @@ -1,4 +1,5 @@ -import { useState } from "react"; +import {useState} from "react"; + export default initialVal => { const [value, setValue] = useState(initialVal); const handleChange = e => { From 64b5a37a335c1167b65156d613f19b3c05aa64c3 Mon Sep 17 00:00:00 2001 From: Francesco Venneri Date: Tue, 30 Jun 2020 15:38:13 +0200 Subject: [PATCH 08/31] [RECIPE-PROJECT] Temporary commit --- recipe-hooks-project/package-lock.json | 5 ++++ recipe-hooks-project/package.json | 3 ++- recipe-hooks-project/src/AppPage.test.js | 25 ++++++++++++++++--- recipe-hooks-project/src/Login.js | 13 +++++++--- .../src/components/LoginForm.js | 1 + 5 files changed, 39 insertions(+), 8 deletions(-) diff --git a/recipe-hooks-project/package-lock.json b/recipe-hooks-project/package-lock.json index 8b95f789..88276721 100644 --- a/recipe-hooks-project/package-lock.json +++ b/recipe-hooks-project/package-lock.json @@ -12526,6 +12526,11 @@ "supports-color": "^5.5.0" } }, + "styled-react-modal": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/styled-react-modal/-/styled-react-modal-2.0.1.tgz", + "integrity": "sha512-uoyPlwdM8FLmdOE8dvA3iv2IOnlqMsygPxLAZy8WaK0pEcon67+SWJY/osAWZuBvRKtSo/VXn1fRCYVgbD0KUQ==" + }, "stylehacks": { "version": "4.0.3", "resolved": "https://registry.npmjs.org/stylehacks/-/stylehacks-4.0.3.tgz", diff --git a/recipe-hooks-project/package.json b/recipe-hooks-project/package.json index 09e2c84a..b2039349 100644 --- a/recipe-hooks-project/package.json +++ b/recipe-hooks-project/package.json @@ -10,7 +10,8 @@ "react-dom": "^16.13.1", "react-router-dom": "^5.2.0", "react-scripts": "3.4.1", - "styled-components": "^5.1.1" + "styled-components": "^5.1.1", + "styled-react-modal": "^2.0.1" }, "scripts": { "start": "react-scripts start", diff --git a/recipe-hooks-project/src/AppPage.test.js b/recipe-hooks-project/src/AppPage.test.js index 36a720c4..aa3d8ee9 100644 --- a/recipe-hooks-project/src/AppPage.test.js +++ b/recipe-hooks-project/src/AppPage.test.js @@ -1,9 +1,12 @@ +import React from "react"; import {fireEvent, render} from "@testing-library/react"; +import {waitForElement} from "@testing-library/dom"; import {AuthContext, AuthenticationProvider} from "./contexts/AuthenticationProvider"; +import axios from "axios"; import AppPage from "./AppPage"; -import React from "react"; import Login from "./Login"; -import {waitForElement} from "@testing-library/dom"; + +jest.mock("axios"); test("when not authenticated, renders login", () => { const {container} = render( @@ -31,9 +34,25 @@ test("when not authenticated, an user can login", async () => { ); + axios.post.mockImplementation(() => Promise.resolve({status: 200, data: {token: "myToken"}})); + fireEvent.change(container.querySelector("input[name=email]"), {target: {value: "test@test.com"}}); fireEvent.change(container.querySelector("input[name=password]"), {target: {value: "testpass"}}); fireEvent.click(container.querySelector("button[name=loginButton]")); - + expect(await waitForElement(() => getByText(/Recipe App/i))).toBeInTheDocument(); +}); + +test("login fails", async () => { + const {container} = render( + + + + ); + + axios.post.mockImplementation(() => Promise.reject({status: 400, data: {error: "Login Failed"}})); + + fireEvent.click(container.querySelector("button[name=loginButton]")); + + expect(container.querySelector("input[name=email]")).toBeInTheDocument(); }); \ No newline at end of file diff --git a/recipe-hooks-project/src/Login.js b/recipe-hooks-project/src/Login.js index 72ea50a0..7eb378f6 100644 --- a/recipe-hooks-project/src/Login.js +++ b/recipe-hooks-project/src/Login.js @@ -11,10 +11,15 @@ export default function Login() { async function handleLogin(evt) { evt.preventDefault(); - const token = await axios.post("http://localhost:8000/api/user/token/", - {email: email, password: password} - ); - login(token); + try { + const response = await axios.post("http://localhost:8000/api/user/token/", + {email: email, password: password} + ); + if (response.status === 200) + login(response.token); + } catch (e) { + console.log("Login failed"); //FIXME message to user? + } } return ( diff --git a/recipe-hooks-project/src/components/LoginForm.js b/recipe-hooks-project/src/components/LoginForm.js index 81709b57..0dde8af1 100644 --- a/recipe-hooks-project/src/components/LoginForm.js +++ b/recipe-hooks-project/src/components/LoginForm.js @@ -1,4 +1,5 @@ import styled from "styled-components"; +import React from "react"; const Container = styled.div` height: 100vh; From 8537b4d60d200c84319e8a336c38437d85bba66a Mon Sep 17 00:00:00 2001 From: Francesco Venneri Date: Wed, 1 Jul 2020 09:43:07 +0200 Subject: [PATCH 09/31] [RECIPE-PROJECT] Added and tested registration feature --- recipe-hooks-project/src/App.js | 19 ++++--- recipe-hooks-project/src/AppPage.js | 2 +- recipe-hooks-project/src/AppPage.test.js | 6 +-- recipe-hooks-project/src/Home.js | 32 ++++++++++++ recipe-hooks-project/src/Login.js | 12 +++-- recipe-hooks-project/src/Login.test.js | 15 ++++-- recipe-hooks-project/src/Register.js | 49 ++++++++++++++++++ recipe-hooks-project/src/Register.test.js | 47 +++++++++++++++++ .../src/components/{LoginForm.js => Form.js} | 9 ++-- recipe-hooks-project/src/components/Routes.js | 15 ++++++ .../src/hooks/useToggleState.js | 11 ++++ .../src/images/patatasBravas.jpg | Bin 0 -> 231265 bytes 12 files changed, 193 insertions(+), 24 deletions(-) create mode 100644 recipe-hooks-project/src/Home.js create mode 100644 recipe-hooks-project/src/Register.js create mode 100644 recipe-hooks-project/src/Register.test.js rename recipe-hooks-project/src/components/{LoginForm.js => Form.js} (81%) create mode 100644 recipe-hooks-project/src/components/Routes.js create mode 100644 recipe-hooks-project/src/hooks/useToggleState.js create mode 100644 recipe-hooks-project/src/images/patatasBravas.jpg diff --git a/recipe-hooks-project/src/App.js b/recipe-hooks-project/src/App.js index 03e2855a..d53145cc 100644 --- a/recipe-hooks-project/src/App.js +++ b/recipe-hooks-project/src/App.js @@ -1,15 +1,20 @@ import React from "react"; import {AuthenticationProvider} from "./contexts/AuthenticationProvider"; -import AppPage from "./AppPage"; -import {BrowserRouter} from "react-router-dom"; +import {BrowserRouter, Switch} from "react-router-dom"; +import {ThemeProvider} from "styled-components"; +import {Routes} from "./components/Routes"; function App() { return ( - - - - - + + + + + + + + + ); } diff --git a/recipe-hooks-project/src/AppPage.js b/recipe-hooks-project/src/AppPage.js index 8166f6d2..b5c17eb2 100644 --- a/recipe-hooks-project/src/AppPage.js +++ b/recipe-hooks-project/src/AppPage.js @@ -1,7 +1,7 @@ import React, {useContext} from "react"; +import {AuthContext} from "./contexts/AuthenticationProvider"; import RecipeApp from "./RecipeApp"; import Login from "./Login"; -import {AuthContext} from "./contexts/AuthenticationProvider"; export default function AppPage(props) { const {token} = useContext(AuthContext); diff --git a/recipe-hooks-project/src/AppPage.test.js b/recipe-hooks-project/src/AppPage.test.js index aa3d8ee9..d0130354 100644 --- a/recipe-hooks-project/src/AppPage.test.js +++ b/recipe-hooks-project/src/AppPage.test.js @@ -29,7 +29,7 @@ test("when authenticated, do not render login", () => { test("when not authenticated, an user can login", async () => { const {container, getByText} = render( - + ); @@ -45,7 +45,7 @@ test("when not authenticated, an user can login", async () => { test("login fails", async () => { const {container} = render( - + ); @@ -53,6 +53,6 @@ test("login fails", async () => { axios.post.mockImplementation(() => Promise.reject({status: 400, data: {error: "Login Failed"}})); fireEvent.click(container.querySelector("button[name=loginButton]")); - + expect(container.querySelector("input[name=email]")).toBeInTheDocument(); }); \ No newline at end of file diff --git a/recipe-hooks-project/src/Home.js b/recipe-hooks-project/src/Home.js new file mode 100644 index 00000000..24c58b21 --- /dev/null +++ b/recipe-hooks-project/src/Home.js @@ -0,0 +1,32 @@ +import React from "react"; +import PatatasBravas from "./images/patatasBravas.jpg"; +import {Link} from "react-router-dom"; +import styled from "styled-components"; + +const SplashScreen = styled.div` + display: flex; + justify-content: center; + align-items: center; + flex-direction: column; + height: 100vh; +`; + +const AppDescription = styled.div` + font-size: 1.5em; + text-align: center; + font-weight: 500; + padding: 1em; + margin: 1em; +`; + +export default function Home(props) { + return ( + + Patatas bravas + + Use this amazing app to build your own cookbook! + + Go to the app (login required)! + + ); +}; \ No newline at end of file diff --git a/recipe-hooks-project/src/Login.js b/recipe-hooks-project/src/Login.js index 7eb378f6..24658589 100644 --- a/recipe-hooks-project/src/Login.js +++ b/recipe-hooks-project/src/Login.js @@ -1,8 +1,9 @@ import React, {useContext} from "react"; import useInputState from "./hooks/useInputState"; import axios from "axios"; -import {Container, Input, LoginButton, LoginForm, LoginFormTitle} from "./components/LoginForm" +import {Container, Form, FormTitle, Input, SubmitButton} from "./components/Form" import {AuthContext} from "./contexts/AuthenticationProvider"; +import {Link} from "react-router-dom"; export default function Login() { const [email, handleEmailChange] = useInputState(""); @@ -24,12 +25,13 @@ export default function Login() { return ( - - Login +
+ Login - login - + login + You don't have an account? Register it. +
); }; \ No newline at end of file diff --git a/recipe-hooks-project/src/Login.test.js b/recipe-hooks-project/src/Login.test.js index 8fd6e2ad..dfd17775 100644 --- a/recipe-hooks-project/src/Login.test.js +++ b/recipe-hooks-project/src/Login.test.js @@ -1,12 +1,21 @@ import React from "react"; -import Login from "./Login"; import {render} from "@testing-library/react"; +import {AuthenticationProvider} from "./contexts/AuthenticationProvider"; +import {BrowserRouter} from "react-router-dom"; +import Login from "./Login"; test("renders the login page", () => { - const {container} = render(); + const {container} = render( + + + + + + ); expect(container.querySelector("h3")).toHaveTextContent("Login"); expect(container.querySelector("input[name=email]")).toBeInTheDocument(); expect(container.querySelector("input[name=password]")).toBeInTheDocument(); - expect(container.querySelector("button")).toHaveTextContent("login"); + expect(container.querySelector("button[name=loginButton]")).toHaveTextContent("login"); + expect(container.querySelector("a")).toHaveTextContent("Register"); }); \ No newline at end of file diff --git a/recipe-hooks-project/src/Register.js b/recipe-hooks-project/src/Register.js new file mode 100644 index 00000000..95816edf --- /dev/null +++ b/recipe-hooks-project/src/Register.js @@ -0,0 +1,49 @@ +import React from "react"; +import {Redirect} from "react-router-dom"; +import axios from "axios"; +import {Container, Form, FormTitle, Input, SubmitButton} from "./components/Form" +import useInputState from "./hooks/useInputState"; +import useToggleState from "./hooks/useToggleState"; + +export default function Register(props) { + const [email, handleEmailChange] = useInputState(""); + const [password, handlePasswordChange] = useInputState(""); + const [name, handleNameChange] = useInputState(""); + const [redirect, setRedirect] = useToggleState(false) + + async function handleRegistration(evt) { + evt.preventDefault(); + try { + const response = await axios.post("http://localhost:8000/api/user/create/", + {email: email, name: name, password: password} + ); + if (response.status === 201) { + console.log("User created!"); + setRedirect(); + } + } catch (e) { + console.log("Registration failed"); //FIXME message to user? + } + } + + const renderRedirect = () => { + if (redirect) { + return ; + } + } + + return ( + <> + {renderRedirect()} + +
+ Registration + + + + Register +
+
+ + ); +}; \ No newline at end of file diff --git a/recipe-hooks-project/src/Register.test.js b/recipe-hooks-project/src/Register.test.js new file mode 100644 index 00000000..ba00e275 --- /dev/null +++ b/recipe-hooks-project/src/Register.test.js @@ -0,0 +1,47 @@ +import React from "react"; +import {fireEvent, render} from "@testing-library/react"; +import {AuthenticationProvider} from "./contexts/AuthenticationProvider"; +import {BrowserRouter} from "react-router-dom"; +import axios from "axios"; +import Register from "./Register"; +import {waitForElement} from "@testing-library/dom"; + +jest.mock("axios"); + +test("renders the page", () => { + const {container} = render( + + + + + + ); + + expect(container.querySelector("h3")).toHaveTextContent("Registration"); + expect(container.querySelector("input[name=email]")).toBeInTheDocument(); + expect(container.querySelector("input[name=name]")).toBeInTheDocument(); + expect(container.querySelector("input[name=password]")).toBeInTheDocument(); + expect(container.querySelector("button[name=registrationButton]")).toHaveTextContent("Register"); +}); + +test("creates an user", async () => { + const {container} = render( + + + + + + ); + + axios.post.mockImplementation(() => Promise.resolve({status: 201, data: {}})); + + fireEvent.change(container.querySelector("input[name=email]"), {target: {value: "test@test.com"}}); + fireEvent.change(container.querySelector("input[name=name]"), {target: {value: "test@test.com"}}); + fireEvent.change(container.querySelector("input[name=password]"), {target: {value: "testpass"}}); + fireEvent.click(container.querySelector("button[name=registrationButton]")); + + setTimeout(async () => { + expect(await waitForElement(() => container.querySelector("h3"), {timeout: 1000})) + .toHaveTextContent("Login"); + }, 500); +}); \ No newline at end of file diff --git a/recipe-hooks-project/src/components/LoginForm.js b/recipe-hooks-project/src/components/Form.js similarity index 81% rename from recipe-hooks-project/src/components/LoginForm.js rename to recipe-hooks-project/src/components/Form.js index 0dde8af1..9357dbbf 100644 --- a/recipe-hooks-project/src/components/LoginForm.js +++ b/recipe-hooks-project/src/components/Form.js @@ -1,16 +1,15 @@ import styled from "styled-components"; -import React from "react"; const Container = styled.div` height: 100vh; display: flex; `; -const LoginFormTitle = styled.h3` +const FormTitle = styled.h3` font-size: 2em; `; -const LoginForm = styled.form` +const Form = styled.form` display: flex; justify-content: center; align-items: center; @@ -38,7 +37,7 @@ const Input = styled.input.attrs(props => ({ padding: 1em; `; -const LoginButton = styled.button.attrs(props => ({ +const SubmitButton = styled.button.attrs(props => ({ onClick: props.handleClick }))` background: ${props => props.primary ? "blue" : "white"}; @@ -50,4 +49,4 @@ const LoginButton = styled.button.attrs(props => ({ border-radius: 3px; `; -export {Container, LoginForm, LoginFormTitle, Input, LoginButton}; \ No newline at end of file +export {Container, Form, FormTitle, Input, SubmitButton}; \ No newline at end of file diff --git a/recipe-hooks-project/src/components/Routes.js b/recipe-hooks-project/src/components/Routes.js new file mode 100644 index 00000000..c8d56142 --- /dev/null +++ b/recipe-hooks-project/src/components/Routes.js @@ -0,0 +1,15 @@ +import React from "react"; +import {Route} from "react-router-dom"; +import AppPage from "../AppPage"; +import Home from "../Home"; +import Register from "../Register"; + +export function Routes() { + return ( + <> + + + + + ); +} \ No newline at end of file diff --git a/recipe-hooks-project/src/hooks/useToggleState.js b/recipe-hooks-project/src/hooks/useToggleState.js new file mode 100644 index 00000000..f4fd3409 --- /dev/null +++ b/recipe-hooks-project/src/hooks/useToggleState.js @@ -0,0 +1,11 @@ +import {useState} from "react"; + +function useToggle(initialVal = false) { + const [state, setState] = useState(initialVal); + const toggle = () => { + setState(!state); + }; + return [state, toggle]; +} + +export default useToggle; diff --git a/recipe-hooks-project/src/images/patatasBravas.jpg b/recipe-hooks-project/src/images/patatasBravas.jpg new file mode 100644 index 0000000000000000000000000000000000000000..94d082240ba00a0e418934acb13004bc7f36b8b0 GIT binary patch literal 231265 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%0AcP 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�}H;ojRwIOKM$^^twHjjtM(0*d@hF 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
+ + +
+
+ + +
+
+ + +
+ + + + + + ); +} + +export default memo(Profile); \ No newline at end of file diff --git a/recipe-hooks-project/src/RecipeApp.js b/recipe-hooks-project/src/RecipeApp.js index 5366bb92..f482a0bf 100644 --- a/recipe-hooks-project/src/RecipeApp.js +++ b/recipe-hooks-project/src/RecipeApp.js @@ -1,9 +1,11 @@ -import React from "react"; +import React, {memo} from "react"; -export default function RecipeApp(props) { +function RecipeApp(props) { return (

{props.title}

); -}; \ No newline at end of file +} + +export default memo(RecipeApp); \ No newline at end of file diff --git a/recipe-hooks-project/src/Register.js b/recipe-hooks-project/src/Register.js index 95816edf..efce3745 100644 --- a/recipe-hooks-project/src/Register.js +++ b/recipe-hooks-project/src/Register.js @@ -1,15 +1,15 @@ -import React from "react"; +import React, {memo} from "react"; import {Redirect} from "react-router-dom"; import axios from "axios"; import {Container, Form, FormTitle, Input, SubmitButton} from "./components/Form" import useInputState from "./hooks/useInputState"; import useToggleState from "./hooks/useToggleState"; -export default function Register(props) { +function Register() { const [email, handleEmailChange] = useInputState(""); const [password, handlePasswordChange] = useInputState(""); const [name, handleNameChange] = useInputState(""); - const [redirect, setRedirect] = useToggleState(false) + const [redirect, toggleRedirect] = useToggleState(false) async function handleRegistration(evt) { evt.preventDefault(); @@ -19,7 +19,7 @@ export default function Register(props) { ); if (response.status === 201) { console.log("User created!"); - setRedirect(); + toggleRedirect(); } } catch (e) { console.log("Registration failed"); //FIXME message to user? @@ -46,4 +46,6 @@ export default function Register(props) { ); -}; \ No newline at end of file +} + +export default memo(Register); \ No newline at end of file diff --git a/recipe-hooks-project/src/Register.test.js b/recipe-hooks-project/src/Register.test.js index 26925186..a8c6157a 100644 --- a/recipe-hooks-project/src/Register.test.js +++ b/recipe-hooks-project/src/Register.test.js @@ -1,10 +1,9 @@ import React from "react"; -import {fireEvent, render} from "@testing-library/react"; +import {render} from "@testing-library/react"; import {AuthenticationProvider} from "./contexts/AuthenticationProvider"; import {BrowserRouter} from "react-router-dom"; import axios from "axios"; import Register from "./Register"; -import {waitForElement} from "@testing-library/dom"; jest.mock("axios"); @@ -18,32 +17,6 @@ test("renders the page", () => { expect(container.querySelector("button[name=registrationButton]")).toHaveTextContent("Register"); }); -test("creates an user", async () => { - const {container} = renderRegisterComponent(); - - axios.post.mockImplementation(() => Promise.resolve({status: 201, data: {}})); - - fillAndSubmitForm(container); - - setTimeout(async () => { - expect(await waitForElement(() => container.querySelector("h3"), {timeout: 1000})) - .toHaveTextContent("Login"); - }, 500); -}); - -test("creates an user", async () => { - const {container} = renderRegisterComponent(); - - axios.post.mockImplementation(() => Promise.resolve({status: 400, data: {}})); - - fillAndSubmitForm(container); - - setTimeout(async () => { - expect(await waitForElement(() => container.querySelector("h3"), {timeout: 1000})) - .toHaveTextContent("Login"); - }, 500); -}); - function renderRegisterComponent() { return render( @@ -53,10 +26,3 @@ function renderRegisterComponent() { ); } - -function fillAndSubmitForm(container) { - fireEvent.change(container.querySelector("input[name=email]"), {target: {value: "test@test.com"}}); - fireEvent.change(container.querySelector("input[name=name]"), {target: {value: "test@test.com"}}); - fireEvent.change(container.querySelector("input[name=password]"), {target: {value: "testpass"}}); - fireEvent.click(container.querySelector("button[name=registrationButton]")); -} diff --git a/recipe-hooks-project/src/components/Routes.js b/recipe-hooks-project/src/Routes.js similarity index 60% rename from recipe-hooks-project/src/components/Routes.js rename to recipe-hooks-project/src/Routes.js index c8d56142..3d600807 100644 --- a/recipe-hooks-project/src/components/Routes.js +++ b/recipe-hooks-project/src/Routes.js @@ -1,12 +1,14 @@ import React from "react"; import {Route} from "react-router-dom"; -import AppPage from "../AppPage"; -import Home from "../Home"; -import Register from "../Register"; +import AppPage from "./AppPage"; +import Home from "./Home"; +import Register from "./Register"; +import Profile from "./Profile"; export function Routes() { return ( <> + diff --git a/recipe-hooks-project/src/components/Form.js b/recipe-hooks-project/src/components/Form.js index 9357dbbf..fab6cf93 100644 --- a/recipe-hooks-project/src/components/Form.js +++ b/recipe-hooks-project/src/components/Form.js @@ -19,7 +19,8 @@ const Form = styled.form` width: 20%; box-shadow: 0 19px 38px rgba(0, 0, 0, 0.3), 0 15px 12px rgba(0, 0, 0, 0.1); margin: auto; - padding: 10px; + padding-top: 20px; + padding-bottom: 20px; `; const Input = styled.input.attrs(props => ({ @@ -29,7 +30,6 @@ const Input = styled.input.attrs(props => ({ size: "1em", onChange: props.onChange }))` - color: blue; font-size: 1em; border: 2px solid blue; border-radius: 3px; diff --git a/recipe-hooks-project/src/components/General.js b/recipe-hooks-project/src/components/General.js new file mode 100644 index 00000000..ffeeaffa --- /dev/null +++ b/recipe-hooks-project/src/components/General.js @@ -0,0 +1,12 @@ +import styled from "styled-components"; + +const Wrapper = styled.div` + height: 100vh; + padding: auto; + display: flex; + align-items: center; + justify-content: center; + color: blue; +`; + +export {Wrapper}; \ No newline at end of file diff --git a/recipe-hooks-project/src/hooks/useInputState.js b/recipe-hooks-project/src/hooks/useInputState.js index c3c0a8f6..27f2e06d 100644 --- a/recipe-hooks-project/src/hooks/useInputState.js +++ b/recipe-hooks-project/src/hooks/useInputState.js @@ -2,6 +2,7 @@ import {useState} from "react"; export default initialVal => { const [value, setValue] = useState(initialVal); + const handleChange = e => { e.preventDefault(); setValue(e.target.value); @@ -9,5 +10,9 @@ export default initialVal => { const reset = () => { setValue(""); }; - return [value, handleChange, reset]; + const setStateValue = v => { + setValue(v); + }; + + return [value, handleChange, setStateValue, reset]; }; From 54ff002bac2671285eb8b1243edd28c56eba6b1d Mon Sep 17 00:00:00 2001 From: Francesco Venneri Date: Thu, 2 Jul 2020 10:00:10 +0200 Subject: [PATCH 12/31] [RECIPE-PROJECT] Added Edit profile feature --- recipe-hooks-project/src/Profile.js | 86 ++++++------------- .../src/components/Profile.js | 66 ++++++++++++++ 2 files changed, 93 insertions(+), 59 deletions(-) create mode 100644 recipe-hooks-project/src/components/Profile.js diff --git a/recipe-hooks-project/src/Profile.js b/recipe-hooks-project/src/Profile.js index 641f874b..76070414 100644 --- a/recipe-hooks-project/src/Profile.js +++ b/recipe-hooks-project/src/Profile.js @@ -1,79 +1,26 @@ import React, {memo, useEffect} from "react"; -import styled from "styled-components"; import axios from "axios"; import "@fortawesome/fontawesome-free/css/all.css" import {Wrapper} from "./components/General"; +import {ProfileCard, Section, Title, Label, Input, EditSection, ActionIcon} from "./components/Profile"; import {RECIPE_API_BASE_URL} from "./App"; import useInputState from "./hooks/useInputState"; import useToggle from "./hooks/useToggleState"; -const ProfileCard = styled.form` - display: flex; - justify-content: center; - align-items: center; - flex-direction: column; - width: 30%; - border: 2px solid lightgray; - box-shadow: 0 19px 38px rgba(0, 0, 0, 0.3), 0 15px 12px rgba(0, 0, 0, 0.1); - margin: auto; -`; -const Section = styled.div` - display: flex; - justify-content: left; - align-items: center; - width: 90%; - padding-bottom: 1.5em; - margin: auto; -`; -const Title = styled(Section)` - height: 1em; - font-size: 1.5em; - font-weight: 500; - margin: auto; - justify-content: center; - padding-top: 1.5em; -`; -const Label = styled.label` - font-size: 1em; - width: 20%; - color: blue; - margin-left: 2.5em; -`; -const Input = styled.input.attrs((props) => ({ - ...props -}))` - font-size: 1em; - padding: 15px; - width: 50%; - border: 2px solid blue; - border-radius: 5px; - - &:hover { - border-color: red; - } -`; -const EditSection = styled(Section)` - margin: auto; - display: flex; - justify-content: center; - align-items: center; - cursor: pointer; -`; +const USER_PROFILE_API_RELATIVE_URL = "/user/me/"; function Profile() { const [isEditing, toggleIsEditing] = useToggle(false); - const [email, handleEmailChange, setEmail] = useInputState(""); + const [email, , setEmail] = useInputState(""); const [password, handlePasswordChange] = useInputState(""); const [name, handleNameChange, setName] = useInputState(""); useEffect(() => { async function fetchData() { - const profile = await axios.get(RECIPE_API_BASE_URL + "/user/me", + const profile = await axios.get(RECIPE_API_BASE_URL + USER_PROFILE_API_RELATIVE_URL, {headers: {Authorization: "Token 771588d4be688173e35ffe08caec07ac8a95009e"}}); setEmail(profile.data.email); setName(profile.data.name); - - console.log("RERENDER") } fetchData(); @@ -84,6 +31,24 @@ function Profile() { toggleIsEditing(); } + function handleSubmit(e) { + e.preventDefault(); + if (modifyUser(password, name)) + toggleIsEditing(); + else + console.log("Error"); //FIXME RETURN MESSAGE? + } + + async function modifyUser(password, name) { + let modifyUserPayload; + if (password !== "") + modifyUserPayload = {name: name, password: password} + else + modifyUserPayload = {name: name} + const response = await axios.patch(RECIPE_API_BASE_URL + USER_PROFILE_API_RELATIVE_URL, modifyUserPayload); + return response.status === 200; + } + return ( @@ -96,7 +61,7 @@ function Profile() {
- +
@@ -104,7 +69,10 @@ function Profile() { onChange={handlePasswordChange} readOnly={!isEditing}/>
- + {isEditing + ? + : + }
diff --git a/recipe-hooks-project/src/components/Profile.js b/recipe-hooks-project/src/components/Profile.js new file mode 100644 index 00000000..f4bbf952 --- /dev/null +++ b/recipe-hooks-project/src/components/Profile.js @@ -0,0 +1,66 @@ +import styled from "styled-components"; + +const ProfileCard = styled.form` + display: flex; + justify-content: center; + align-items: center; + flex-direction: column; + width: 30%; + border: 2px solid lightgray; + box-shadow: 0 19px 38px rgba(0, 0, 0, 0.3), 0 15px 12px rgba(0, 0, 0, 0.1); + margin: auto; +`; +const Section = styled.div` + display: flex; + justify-content: left; + align-items: center; + width: 90%; + padding-bottom: 1.5em; + margin: auto; +`; +const Title = styled(Section)` + height: 1em; + font-size: 1.5em; + font-weight: 500; + margin: auto; + justify-content: center; + padding-top: 1.5em; +`; +const Label = styled.label` + font-size: 1em; + width: 20%; + color: blue; + margin-left: 2.5em; +`; +const Input = styled.input.attrs((props) => ({ + ...props +}))` + font-size: 1em; + padding: 15px; + width: 50%; + border: 2px solid blue; + border-radius: 5px; + + &:hover { + border-color: red; + } + + &:read-only { + background: lightgray; + &:hover { + border: 2px solid blue; + } + } +`; +const EditSection = styled(Section)` + margin: auto; + display: flex; + justify-content: center; + align-items: center; + cursor: pointer; +`; +const ActionIcon = styled.i.attrs((props) => ({ + ...props +}))``; + +export {ProfileCard, Section, Title, Label, Input, EditSection, ActionIcon}; \ No newline at end of file From 215f1f11b1cd2d11913ddc3d5b37dbb57ffc16e6 Mon Sep 17 00:00:00 2001 From: Francesco Venneri Date: Thu, 2 Jul 2020 11:22:31 +0200 Subject: [PATCH 13/31] [RECIPE-PROJECT] Added timed error message when profile is not saved --- recipe-hooks-project/src/Profile.js | 27 +++++++++---- .../src/components/General.js | 1 + .../src/components/Profile.js | 38 ++++++++++++++++++- .../src/hooks/useTimedToggle.js | 15 ++++++++ 4 files changed, 72 insertions(+), 9 deletions(-) create mode 100644 recipe-hooks-project/src/hooks/useTimedToggle.js diff --git a/recipe-hooks-project/src/Profile.js b/recipe-hooks-project/src/Profile.js index 76070414..dbe618f4 100644 --- a/recipe-hooks-project/src/Profile.js +++ b/recipe-hooks-project/src/Profile.js @@ -2,10 +2,11 @@ import React, {memo, useEffect} from "react"; import axios from "axios"; import "@fortawesome/fontawesome-free/css/all.css" import {Wrapper} from "./components/General"; -import {ProfileCard, Section, Title, Label, Input, EditSection, ActionIcon} from "./components/Profile"; +import {ProfileCard, Section, Title, Label, Input, EditSection, ActionIcon, Overlay} from "./components/Profile"; import {RECIPE_API_BASE_URL} from "./App"; import useInputState from "./hooks/useInputState"; import useToggle from "./hooks/useToggleState"; +import useTimedToggle from "./hooks/useTimedToggle"; const USER_PROFILE_API_RELATIVE_URL = "/user/me/"; @@ -14,18 +15,19 @@ function Profile() { const [email, , setEmail] = useInputState(""); const [password, handlePasswordChange] = useInputState(""); const [name, handleNameChange, setName] = useInputState(""); + const [showError, toggleError] = useTimedToggle(false); useEffect(() => { - async function fetchData() { + async function fetchProfile() { const profile = await axios.get(RECIPE_API_BASE_URL + USER_PROFILE_API_RELATIVE_URL, {headers: {Authorization: "Token 771588d4be688173e35ffe08caec07ac8a95009e"}}); setEmail(profile.data.email); setName(profile.data.name); } - fetchData(); + fetchProfile(); }, []); - + function toggleReadonly(e) { e.preventDefault(); toggleIsEditing(); @@ -33,18 +35,24 @@ function Profile() { function handleSubmit(e) { e.preventDefault(); - if (modifyUser(password, name)) - toggleIsEditing(); - else - console.log("Error"); //FIXME RETURN MESSAGE? + Promise.resolve(modifyUser(password, name)).then(isModified => { + if (isModified) + toggleIsEditing(); + else + toggleError(3000); + }); } async function modifyUser(password, name) { + if ((name === "" || name === undefined) && (password === "" || password === undefined)) + return false; + let modifyUserPayload; if (password !== "") modifyUserPayload = {name: name, password: password} else modifyUserPayload = {name: name} + //FIXME is it possible to hide the post payload? const response = await axios.patch(RECIPE_API_BASE_URL + USER_PROFILE_API_RELATIVE_URL, modifyUserPayload); return response.status === 200; } @@ -75,6 +83,9 @@ function Profile() { } + + Error saving the profile, retry! + ); } diff --git a/recipe-hooks-project/src/components/General.js b/recipe-hooks-project/src/components/General.js index ffeeaffa..d4a46bd8 100644 --- a/recipe-hooks-project/src/components/General.js +++ b/recipe-hooks-project/src/components/General.js @@ -6,6 +6,7 @@ const Wrapper = styled.div` display: flex; align-items: center; justify-content: center; + flex-direction: column; color: blue; `; diff --git a/recipe-hooks-project/src/components/Profile.js b/recipe-hooks-project/src/components/Profile.js index f4bbf952..45f63159 100644 --- a/recipe-hooks-project/src/components/Profile.js +++ b/recipe-hooks-project/src/components/Profile.js @@ -62,5 +62,41 @@ const EditSection = styled(Section)` const ActionIcon = styled.i.attrs((props) => ({ ...props }))``; +const Overlay = styled.div.attrs((props) => ({ + ...props, +}))` + color: red; + background: white; + font-weight: 400; + border: 2px solid red; + box-shadow: 0 19px 38px rgba(220, 20, 60, 0.3), 0 15px 12px rgba(220, 20, 60, 0.1); + z-index: 10; + width: 25%; + height: 100px; + display: flex; + justify-content: center; + align-items: center; + position: absolute; + left: 0; + top: 10%; + right: 0; + bottom: 0; + margin: 0 auto; + + display: ${props => props.show ? "" : "none"}; + -webkit-animation: ${props => props.show ? `fadeInOut ${props.animationDuration / 1000}s linear forwards` : ""}; + animation: ${props => props.show ? `fadeInOut ${props.animationDuration / 1000}s linear forwards` : ""}; + + @-webkit-keyframes fadeInOut { + 0% { opacity: 0; } + 50% { opacity: 1; } + 100% { opacity: 0; } + } + @keyframes fadeInOut { + 0% { opacity: 0; } + 50% { opacity: 1; } + 100% { opacity: 0; } + } +`; -export {ProfileCard, Section, Title, Label, Input, EditSection, ActionIcon}; \ No newline at end of file +export {ProfileCard, Section, Title, Label, Input, EditSection, ActionIcon, Overlay}; \ No newline at end of file diff --git a/recipe-hooks-project/src/hooks/useTimedToggle.js b/recipe-hooks-project/src/hooks/useTimedToggle.js new file mode 100644 index 00000000..51732b5c --- /dev/null +++ b/recipe-hooks-project/src/hooks/useTimedToggle.js @@ -0,0 +1,15 @@ +import {useState} from "react"; + +export default initialVal => { + const [value, setValue] = useState(initialVal); + + const toggle = (millis) => { + const toggleValue = value; + setValue(!value); + setTimeout(() => { + setValue(toggleValue); + }, millis); + }; + + return [value, toggle]; +}; From 8abe3311d5f17b0fec200f5b16405c51be83f215 Mon Sep 17 00:00:00 2001 From: Francesco Venneri Date: Thu, 2 Jul 2020 17:48:28 +0200 Subject: [PATCH 14/31] [RECIPE-PROJECT] Added ingredients page --- recipe-hooks-project/package-lock.json | 5 ++ recipe-hooks-project/package.json | 4 +- recipe-hooks-project/src/Ingredients.js | 73 +++++++++++++++++++ recipe-hooks-project/src/Profile.js | 8 +- recipe-hooks-project/src/Routes.js | 2 + .../src/components/General.js | 14 +++- .../src/components/Profile.js | 10 +-- 7 files changed, 100 insertions(+), 16 deletions(-) create mode 100644 recipe-hooks-project/src/Ingredients.js diff --git a/recipe-hooks-project/package-lock.json b/recipe-hooks-project/package-lock.json index a66c08ac..ad723b5a 100644 --- a/recipe-hooks-project/package-lock.json +++ b/recipe-hooks-project/package-lock.json @@ -12980,6 +12980,11 @@ "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=" }, + "typescript": { + "version": "3.9.6", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-3.9.6.tgz", + "integrity": "sha512-Pspx3oKAPJtjNwE92YS05HQoY7z2SFyOpHo9MqJor3BXAGNaPUs83CuVp9VISFkSjyRfiTpmKuAYGJB7S7hOxw==" + }, "unicode-canonical-property-names-ecmascript": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-1.0.4.tgz", diff --git a/recipe-hooks-project/package.json b/recipe-hooks-project/package.json index 773c4130..3fdc397c 100644 --- a/recipe-hooks-project/package.json +++ b/recipe-hooks-project/package.json @@ -7,12 +7,14 @@ "@material-ui/core": "^4.10.2", "@testing-library/jest-dom": "^4.2.4", "@testing-library/user-event": "^7.2.1", + "prop-types": "^15.7.2", "react": "^16.13.1", "react-dom": "^16.13.1", "react-router-dom": "^5.2.0", "react-scripts": "3.4.1", "styled-components": "^5.1.1", - "styled-react-modal": "^2.0.1" + "styled-react-modal": "^2.0.1", + "typescript": "^3.9.6" }, "scripts": { "start": "react-scripts start", diff --git a/recipe-hooks-project/src/Ingredients.js b/recipe-hooks-project/src/Ingredients.js new file mode 100644 index 00000000..8143a6d4 --- /dev/null +++ b/recipe-hooks-project/src/Ingredients.js @@ -0,0 +1,73 @@ +import React, {useEffect, useState} from "react"; +import styled from "styled-components"; +import {Wrapper, Title} from "./components/General"; +import axios from "axios"; +import {RECIPE_API_BASE_URL} from "./App"; + +const List = styled.ul` + list-style: none; + width: 60%; + height: 80%; + display: flex; + justify-content: center; + align-items: center; + // flex-direction: column; + flex-wrap: wrap; +`; +const ListItem = styled.li` + text-decoration: none; + display: flex; + justify-content: center; + align-items: center; + flex-direction: column; + border: 2px solid blue; + box-shadow: 0 15px 20px rgba(220, 20, 60, 0.3), 0 10px 7px rgba(220, 20, 60, 0.1); + border-radius: 5px; + width: 20%; + padding: 30px; + margin: 1em; + background: #eae9e9; +`; +const ListItemCaption = styled.span` + margin-top: 1em; +`; +const ListItemImage = styled.img` + max-width: 80%; + object-fit: cover; +`; + +const INGREDIENTS_RELATIVE_URL = "/recipe/ingredients/"; + +function Ingredients(props) { + const [ingredientList, setIngredients] = useState([]); + + useEffect(() => { + async function fetchIngredients() { + const response = await axios.get(RECIPE_API_BASE_URL + INGREDIENTS_RELATIVE_URL, + {headers: {Authorization: "Token 771588d4be688173e35ffe08caec07ac8a95009e"}}); //FIXME it should work with a real login + const ingredients = response.data; + console.log(ingredients); + + setIngredients(ingredients); + } + + fetchIngredients(); + }, []); + + return ( + + Your favorite ingredients + + {ingredientList.map(e => { + return ( + + + {e.name} + ) + })} + + + ); +} + +export default Ingredients; \ No newline at end of file diff --git a/recipe-hooks-project/src/Profile.js b/recipe-hooks-project/src/Profile.js index dbe618f4..b9619ab6 100644 --- a/recipe-hooks-project/src/Profile.js +++ b/recipe-hooks-project/src/Profile.js @@ -1,8 +1,8 @@ import React, {memo, useEffect} from "react"; import axios from "axios"; import "@fortawesome/fontawesome-free/css/all.css" -import {Wrapper} from "./components/General"; -import {ProfileCard, Section, Title, Label, Input, EditSection, ActionIcon, Overlay} from "./components/Profile"; +import {Wrapper, Title} from "./components/General"; +import {ProfileCard, Section, Label, Input, EditSection, ActionIcon, Overlay} from "./components/Profile"; import {RECIPE_API_BASE_URL} from "./App"; import useInputState from "./hooks/useInputState"; import useToggle from "./hooks/useToggleState"; @@ -20,14 +20,14 @@ function Profile() { useEffect(() => { async function fetchProfile() { const profile = await axios.get(RECIPE_API_BASE_URL + USER_PROFILE_API_RELATIVE_URL, - {headers: {Authorization: "Token 771588d4be688173e35ffe08caec07ac8a95009e"}}); + {headers: {Authorization: "Token 771588d4be688173e35ffe08caec07ac8a95009e"}}); //FIXME it should work with a real login setEmail(profile.data.email); setName(profile.data.name); } fetchProfile(); }, []); - + function toggleReadonly(e) { e.preventDefault(); toggleIsEditing(); diff --git a/recipe-hooks-project/src/Routes.js b/recipe-hooks-project/src/Routes.js index 3d600807..f7469db0 100644 --- a/recipe-hooks-project/src/Routes.js +++ b/recipe-hooks-project/src/Routes.js @@ -4,10 +4,12 @@ import AppPage from "./AppPage"; import Home from "./Home"; import Register from "./Register"; import Profile from "./Profile"; +import Ingredients from "./Ingredients"; export function Routes() { return ( <> + diff --git a/recipe-hooks-project/src/components/General.js b/recipe-hooks-project/src/components/General.js index d4a46bd8..919802bb 100644 --- a/recipe-hooks-project/src/components/General.js +++ b/recipe-hooks-project/src/components/General.js @@ -1,7 +1,8 @@ import styled from "styled-components"; +import {Section} from "./Profile"; const Wrapper = styled.div` - height: 100vh; + height: 90vh; padding: auto; display: flex; align-items: center; @@ -10,4 +11,13 @@ const Wrapper = styled.div` color: blue; `; -export {Wrapper}; \ No newline at end of file +const Title = styled(Section)` + height: 1em; + font-size: 1.5em; + font-weight: 500; + margin: auto; + justify-content: center; + padding-top: 1.5em; +`; + +export {Wrapper, Title}; \ No newline at end of file diff --git a/recipe-hooks-project/src/components/Profile.js b/recipe-hooks-project/src/components/Profile.js index 45f63159..2035676c 100644 --- a/recipe-hooks-project/src/components/Profile.js +++ b/recipe-hooks-project/src/components/Profile.js @@ -18,14 +18,6 @@ const Section = styled.div` padding-bottom: 1.5em; margin: auto; `; -const Title = styled(Section)` - height: 1em; - font-size: 1.5em; - font-weight: 500; - margin: auto; - justify-content: center; - padding-top: 1.5em; -`; const Label = styled.label` font-size: 1em; width: 20%; @@ -99,4 +91,4 @@ const Overlay = styled.div.attrs((props) => ({ } `; -export {ProfileCard, Section, Title, Label, Input, EditSection, ActionIcon, Overlay}; \ No newline at end of file +export {ProfileCard, Section, Label, Input, EditSection, ActionIcon, Overlay}; \ No newline at end of file From 1cc6d2c3b67cbf7e8213c83e5001d3b7e8b66291 Mon Sep 17 00:00:00 2001 From: Francesco Venneri Date: Fri, 3 Jul 2020 12:26:45 +0200 Subject: [PATCH 15/31] [RECIPE-PROJECT] Added new ingredient feature --- recipe-hooks-project/src/App.css | 72 +++++++++-------- recipe-hooks-project/src/App.js | 11 ++- recipe-hooks-project/src/Ingredients.js | 81 +++++++++++++++---- recipe-hooks-project/src/Profile.js | 4 +- .../src/components/General.js | 11 ++- .../src/components/Profile.js | 11 +-- 6 files changed, 126 insertions(+), 64 deletions(-) diff --git a/recipe-hooks-project/src/App.css b/recipe-hooks-project/src/App.css index 74b5e053..9221c613 100644 --- a/recipe-hooks-project/src/App.css +++ b/recipe-hooks-project/src/App.css @@ -1,38 +1,44 @@ -.App { - text-align: center; -} +/*.App {*/ +/* text-align: center;*/ +/*}*/ -.App-logo { - height: 40vmin; - pointer-events: none; -} +/*.App-logo {*/ +/* height: 40vmin;*/ +/* pointer-events: none;*/ +/*}*/ -@media (prefers-reduced-motion: no-preference) { - .App-logo { - animation: App-logo-spin infinite 20s linear; - } -} +/*@media (prefers-reduced-motion: no-preference) {*/ +/* .App-logo {*/ +/* animation: App-logo-spin infinite 20s linear;*/ +/* }*/ +/*}*/ -.App-header { - background-color: #282c34; - min-height: 100vh; - display: flex; - flex-direction: column; - align-items: center; - justify-content: center; - font-size: calc(10px + 2vmin); - color: white; -} +/*.App-header {*/ +/* background-color: #282c34;*/ +/* min-height: 100vh;*/ +/* display: flex;*/ +/* flex-direction: column;*/ +/* align-items: center;*/ +/* justify-content: center;*/ +/* font-size: calc(10px + 2vmin);*/ +/* color: white;*/ +/*}*/ -.App-link { - color: #61dafb; -} +/*.App-link {*/ +/* color: #61dafb;*/ +/*}*/ -@keyframes App-logo-spin { - from { - transform: rotate(0deg); - } - to { - transform: rotate(360deg); - } -} +/*@keyframes App-logo-spin {*/ +/* from {*/ +/* transform: rotate(0deg);*/ +/* }*/ +/* to {*/ +/* transform: rotate(360deg);*/ +/* }*/ +/*}*/ + +body, html { + height: 100%; + width: 100%; + margin: 0; +} \ No newline at end of file diff --git a/recipe-hooks-project/src/App.js b/recipe-hooks-project/src/App.js index 8ccc9af3..5a64c736 100644 --- a/recipe-hooks-project/src/App.js +++ b/recipe-hooks-project/src/App.js @@ -4,6 +4,7 @@ import {BrowserRouter, Switch} from "react-router-dom"; import {ThemeProvider} from "styled-components"; import {Routes} from "./Routes"; import Navbar from "./Navbar"; +import "./App.css"; const RECIPE_API_BASE_URL = "http://localhost:8000/api"; @@ -12,10 +13,12 @@ function App() { - - - - +
+ + + + +
diff --git a/recipe-hooks-project/src/Ingredients.js b/recipe-hooks-project/src/Ingredients.js index 8143a6d4..88db446a 100644 --- a/recipe-hooks-project/src/Ingredients.js +++ b/recipe-hooks-project/src/Ingredients.js @@ -1,18 +1,24 @@ -import React, {useEffect, useState} from "react"; +import React, {memo, useEffect, useState} from "react"; import styled from "styled-components"; import {Wrapper, Title} from "./components/General"; import axios from "axios"; import {RECIPE_API_BASE_URL} from "./App"; +import {Input} from "./components/Form"; +import useInputState from "./hooks/useInputState"; +import useToggle from "./hooks/useToggleState"; +import {Overlay, ProfileCard} from "./components/Profile"; +import useTimedToggle from "./hooks/useTimedToggle"; const List = styled.ul` list-style: none; width: 60%; - height: 80%; + height: 100%; display: flex; justify-content: center; align-items: center; // flex-direction: column; flex-wrap: wrap; + overflow: auto; `; const ListItem = styled.li` text-decoration: none; @@ -35,30 +41,65 @@ const ListItemImage = styled.img` max-width: 80%; object-fit: cover; `; +const Button = styled.button.attrs((props) => ({ + ...props +}))` + background: ${props => props.primary ? "blue" : "white"}; + color: ${props => props.primary ? "white" : "blue"}; + font-size: 1em; + margin: 1em; + padding: 0.5em 1em; + border: 2px solid blue; + border-radius: 3px; + width: 250px; + + &:hover { + background: ${props => props.primary ? "white" : "blue"}; + color: ${props => props.primary ? "blue" : "white"}; + border: 2px solid blue; + cursor: pointer; + } +`; const INGREDIENTS_RELATIVE_URL = "/recipe/ingredients/"; function Ingredients(props) { - const [ingredientList, setIngredients] = useState([]); - - useEffect(() => { - async function fetchIngredients() { - const response = await axios.get(RECIPE_API_BASE_URL + INGREDIENTS_RELATIVE_URL, - {headers: {Authorization: "Token 771588d4be688173e35ffe08caec07ac8a95009e"}}); //FIXME it should work with a real login - const ingredients = response.data; - console.log(ingredients); + const [ingredientsList, setIngredients] = useState([]); + const [newIngredient, handleNewIngredientChange, resetNewIngredient] = useInputState(""); + const [addingIngredient, toggleAddIngredient] = useToggle(false); + const [showError, toggleError] = useTimedToggle(false); - setIngredients(ingredients); - } + async function fetchIngredients() { + const response = await axios.get(RECIPE_API_BASE_URL + INGREDIENTS_RELATIVE_URL, + {headers: {Authorization: "Token 771588d4be688173e35ffe08caec07ac8a95009e"}}); //FIXME it should work with a real login + const ingredients = response.data; + setIngredients(ingredients); + } + useEffect(() => { fetchIngredients(); }, []); + async function handleNewIngredientCreation(e) { + e.preventDefault(); + // const response = await axios.post(RECIPE_API_BASE_URL + INGREDIENTS_RELATIVE_URL, + // {name: newIngredient}, + // {headers: {Authorization: "Token 771588d4be688173e35ffe08caec07ac8a95009e"}}); //FIXME it should work with a real login) + // if (response.status === 201) { + // toggleAddIngredient(); + // fetchIngredients(); + // } else { + // toggleError(3000); + // } + toggleError(3000); + + } + return ( Your favorite ingredients - {ingredientList.map(e => { + {ingredientsList.map(e => { return ( @@ -66,8 +107,20 @@ function Ingredients(props) { ) })} + { + addingIngredient + ?
+ + +
+ : + } + + + Error saving the ingredient, retry! +
); } -export default Ingredients; \ No newline at end of file +export default memo(Ingredients); \ No newline at end of file diff --git a/recipe-hooks-project/src/Profile.js b/recipe-hooks-project/src/Profile.js index b9619ab6..0eb3d16a 100644 --- a/recipe-hooks-project/src/Profile.js +++ b/recipe-hooks-project/src/Profile.js @@ -1,8 +1,8 @@ import React, {memo, useEffect} from "react"; import axios from "axios"; import "@fortawesome/fontawesome-free/css/all.css" -import {Wrapper, Title} from "./components/General"; -import {ProfileCard, Section, Label, Input, EditSection, ActionIcon, Overlay} from "./components/Profile"; +import {Wrapper, Title, Section} from "./components/General"; +import {ProfileCard, Label, Input, EditSection, ActionIcon, Overlay} from "./components/Profile"; import {RECIPE_API_BASE_URL} from "./App"; import useInputState from "./hooks/useInputState"; import useToggle from "./hooks/useToggleState"; diff --git a/recipe-hooks-project/src/components/General.js b/recipe-hooks-project/src/components/General.js index 919802bb..0c1cb1a6 100644 --- a/recipe-hooks-project/src/components/General.js +++ b/recipe-hooks-project/src/components/General.js @@ -1,5 +1,4 @@ import styled from "styled-components"; -import {Section} from "./Profile"; const Wrapper = styled.div` height: 90vh; @@ -11,6 +10,14 @@ const Wrapper = styled.div` color: blue; `; +const Section = styled.div` + display: flex; + justify-content: left; + align-items: center; + width: 90%; + padding-bottom: 1.5em; + margin: auto; +`; const Title = styled(Section)` height: 1em; font-size: 1.5em; @@ -20,4 +27,4 @@ const Title = styled(Section)` padding-top: 1.5em; `; -export {Wrapper, Title}; \ No newline at end of file +export {Wrapper, Title, Section}; diff --git a/recipe-hooks-project/src/components/Profile.js b/recipe-hooks-project/src/components/Profile.js index 2035676c..5c4d3ddc 100644 --- a/recipe-hooks-project/src/components/Profile.js +++ b/recipe-hooks-project/src/components/Profile.js @@ -1,4 +1,5 @@ import styled from "styled-components"; +import {Section} from "./General"; const ProfileCard = styled.form` display: flex; @@ -10,14 +11,6 @@ const ProfileCard = styled.form` box-shadow: 0 19px 38px rgba(0, 0, 0, 0.3), 0 15px 12px rgba(0, 0, 0, 0.1); margin: auto; `; -const Section = styled.div` - display: flex; - justify-content: left; - align-items: center; - width: 90%; - padding-bottom: 1.5em; - margin: auto; -`; const Label = styled.label` font-size: 1em; width: 20%; @@ -91,4 +84,4 @@ const Overlay = styled.div.attrs((props) => ({ } `; -export {ProfileCard, Section, Label, Input, EditSection, ActionIcon, Overlay}; \ No newline at end of file +export {ProfileCard, Label, Input, EditSection, ActionIcon, Overlay}; \ No newline at end of file From dac9fa53414095675a010e83145816ab489c11a6 Mon Sep 17 00:00:00 2001 From: Francesco Venneri Date: Fri, 3 Jul 2020 16:06:14 +0200 Subject: [PATCH 16/31] [RECIPE-PROJECT] Added tags page --- recipe-hooks-project/src/Ingredients.js | 120 ++++++---------- recipe-hooks-project/src/Profile.js | 4 +- recipe-hooks-project/src/Routes.js | 2 + recipe-hooks-project/src/Tags.js | 98 +++++++++++++ .../src/components/General.js | 131 +++++++++++++++++- .../src/components/Profile.js | 38 +---- 6 files changed, 279 insertions(+), 114 deletions(-) create mode 100644 recipe-hooks-project/src/Tags.js diff --git a/recipe-hooks-project/src/Ingredients.js b/recipe-hooks-project/src/Ingredients.js index 88db446a..4c170f57 100644 --- a/recipe-hooks-project/src/Ingredients.js +++ b/recipe-hooks-project/src/Ingredients.js @@ -1,103 +1,73 @@ import React, {memo, useEffect, useState} from "react"; -import styled from "styled-components"; -import {Wrapper, Title} from "./components/General"; +import { + Button, + List, + ListItem, + ListItemCaption, + ListItemImage, + Overlay, + OverlayOpaqueBackground, + Title, + Wrapper +} from "./components/General"; import axios from "axios"; import {RECIPE_API_BASE_URL} from "./App"; import {Input} from "./components/Form"; import useInputState from "./hooks/useInputState"; import useToggle from "./hooks/useToggleState"; -import {Overlay, ProfileCard} from "./components/Profile"; import useTimedToggle from "./hooks/useTimedToggle"; -const List = styled.ul` - list-style: none; - width: 60%; - height: 100%; - display: flex; - justify-content: center; - align-items: center; - // flex-direction: column; - flex-wrap: wrap; - overflow: auto; -`; -const ListItem = styled.li` - text-decoration: none; - display: flex; - justify-content: center; - align-items: center; - flex-direction: column; - border: 2px solid blue; - box-shadow: 0 15px 20px rgba(220, 20, 60, 0.3), 0 10px 7px rgba(220, 20, 60, 0.1); - border-radius: 5px; - width: 20%; - padding: 30px; - margin: 1em; - background: #eae9e9; -`; -const ListItemCaption = styled.span` - margin-top: 1em; -`; -const ListItemImage = styled.img` - max-width: 80%; - object-fit: cover; -`; -const Button = styled.button.attrs((props) => ({ - ...props -}))` - background: ${props => props.primary ? "blue" : "white"}; - color: ${props => props.primary ? "white" : "blue"}; - font-size: 1em; - margin: 1em; - padding: 0.5em 1em; - border: 2px solid blue; - border-radius: 3px; - width: 250px; - - &:hover { - background: ${props => props.primary ? "white" : "blue"}; - color: ${props => props.primary ? "blue" : "white"}; - border: 2px solid blue; - cursor: pointer; - } -`; - const INGREDIENTS_RELATIVE_URL = "/recipe/ingredients/"; -function Ingredients(props) { +function Ingredients() { const [ingredientsList, setIngredients] = useState([]); const [newIngredient, handleNewIngredientChange, resetNewIngredient] = useInputState(""); const [addingIngredient, toggleAddIngredient] = useToggle(false); const [showError, toggleError] = useTimedToggle(false); + const [filterByAssignedToRecipe, toggleFilterByAssignedToRecipe] = useToggle(false); async function fetchIngredients() { - const response = await axios.get(RECIPE_API_BASE_URL + INGREDIENTS_RELATIVE_URL, - {headers: {Authorization: "Token 771588d4be688173e35ffe08caec07ac8a95009e"}}); //FIXME it should work with a real login + const headers = { + Authorization: "Token 771588d4be688173e35ffe08caec07ac8a95009e" + }; //FIXME it should work with a real login + const response = await axios.request({ + url: RECIPE_API_BASE_URL + INGREDIENTS_RELATIVE_URL, + method: "get", + params: { + assigned_only: filterByAssignedToRecipe ? 1 : 0, + headers: headers + } + }); const ingredients = response.data; setIngredients(ingredients); } useEffect(() => { fetchIngredients(); - }, []); + }, [filterByAssignedToRecipe]); async function handleNewIngredientCreation(e) { e.preventDefault(); - // const response = await axios.post(RECIPE_API_BASE_URL + INGREDIENTS_RELATIVE_URL, - // {name: newIngredient}, - // {headers: {Authorization: "Token 771588d4be688173e35ffe08caec07ac8a95009e"}}); //FIXME it should work with a real login) - // if (response.status === 201) { - // toggleAddIngredient(); - // fetchIngredients(); - // } else { - // toggleError(3000); - // } - toggleError(3000); - + const response = await axios.post(RECIPE_API_BASE_URL + INGREDIENTS_RELATIVE_URL, + {name: newIngredient}, + {headers: {Authorization: "Token 771588d4be688173e35ffe08caec07ac8a95009e"}}); //FIXME it should work with a real login) + if (response.status === 201) { + toggleAddIngredient(); + fetchIngredients(); + } else { + toggleError(3000); + } } return ( - Your favorite ingredients + + <div>Your favorite ingredients</div> + +
+ Filter ingredients used in recipes + +
{ingredientsList.map(e => { return ( @@ -116,9 +86,11 @@ function Ingredients(props) { : } - - Error saving the ingredient, retry! - + + + Error saving the ingredient, retry! + +
); } diff --git a/recipe-hooks-project/src/Profile.js b/recipe-hooks-project/src/Profile.js index 0eb3d16a..932b7e03 100644 --- a/recipe-hooks-project/src/Profile.js +++ b/recipe-hooks-project/src/Profile.js @@ -1,8 +1,8 @@ import React, {memo, useEffect} from "react"; import axios from "axios"; import "@fortawesome/fontawesome-free/css/all.css" -import {Wrapper, Title, Section} from "./components/General"; -import {ProfileCard, Label, Input, EditSection, ActionIcon, Overlay} from "./components/Profile"; +import {Wrapper, Title, Section, Overlay} from "./components/General"; +import {ProfileCard, Label, Input, EditSection, ActionIcon} from "./components/Profile"; import {RECIPE_API_BASE_URL} from "./App"; import useInputState from "./hooks/useInputState"; import useToggle from "./hooks/useToggleState"; diff --git a/recipe-hooks-project/src/Routes.js b/recipe-hooks-project/src/Routes.js index f7469db0..35bb5c36 100644 --- a/recipe-hooks-project/src/Routes.js +++ b/recipe-hooks-project/src/Routes.js @@ -5,10 +5,12 @@ import Home from "./Home"; import Register from "./Register"; import Profile from "./Profile"; import Ingredients from "./Ingredients"; +import Tags from "./Tags"; export function Routes() { return ( <> + diff --git a/recipe-hooks-project/src/Tags.js b/recipe-hooks-project/src/Tags.js new file mode 100644 index 00000000..02814c6f --- /dev/null +++ b/recipe-hooks-project/src/Tags.js @@ -0,0 +1,98 @@ +import React, {memo, useEffect, useState} from "react"; +import { + Button, + List, + ListItem, + ListItemCaption, + ListItemImage, + Overlay, + OverlayOpaqueBackground, + Title, + Wrapper +} from "./components/General"; +import axios from "axios"; +import {RECIPE_API_BASE_URL} from "./App"; +import {Input} from "./components/Form"; +import useInputState from "./hooks/useInputState"; +import useToggle from "./hooks/useToggleState"; +import useTimedToggle from "./hooks/useTimedToggle"; + +const TAGS_RELATIVE_URL = "/recipe/tags/"; + +function Tags() { + const [tagsList, setTags] = useState([]); + const [newTag, handleNewTagChange, resetNewIngredient] = useInputState(""); + const [addingTag, toggleAddTag] = useToggle(false); + const [showError, toggleError] = useTimedToggle(false); + const [filterByAssignedToRecipe, toggleFilterByAssignedToRecipe] = useToggle(false); + + async function fetchTags() { + const headers = { + Authorization: "Token 771588d4be688173e35ffe08caec07ac8a95009e" + }; //FIXME it should work with a real login + const response = await axios.request({ + url: RECIPE_API_BASE_URL + TAGS_RELATIVE_URL, + method: "get", + params: { + assigned_only: filterByAssignedToRecipe ? 1 : 0, + headers: headers + } + }); + const tags = response.data; + setTags(tags); + } + + useEffect(() => { + fetchTags(); + }, [filterByAssignedToRecipe]); + + async function handleNewTagCreation(e) { + e.preventDefault(); + const response = await axios.post(RECIPE_API_BASE_URL + TAGS_RELATIVE_URL, + {name: newTag}, + {headers: {Authorization: "Token 771588d4be688173e35ffe08caec07ac8a95009e"}}); //FIXME it should work with a real login) + if (response.status === 201) { + toggleAddTag(); + fetchTags(); + } else { + toggleError(3000); + } + } + + return ( + + + <div>Your favorite tags</div> + +
+ Filter tags used in recipes + +
+ + {tagsList.map(e => { + return ( + + + {e.name} + ) + })} + + { + addingTag + ?
+ + +
+ : + } + + + + Error saving the tag, retry! + + +
+ ); +} + +export default memo(Tags); \ No newline at end of file diff --git a/recipe-hooks-project/src/components/General.js b/recipe-hooks-project/src/components/General.js index 0c1cb1a6..09b82824 100644 --- a/recipe-hooks-project/src/components/General.js +++ b/recipe-hooks-project/src/components/General.js @@ -18,6 +18,7 @@ const Section = styled.div` padding-bottom: 1.5em; margin: auto; `; + const Title = styled(Section)` height: 1em; font-size: 1.5em; @@ -27,4 +28,132 @@ const Title = styled(Section)` padding-top: 1.5em; `; -export {Wrapper, Title, Section}; +const OverlayOpaqueBackground = styled.div.attrs((props) => ({ + ...props, +}))` + z-index: 10; + width: 25%; + height: 100px; + position: absolute; + left: 0; + top: 15%; + right: 0; + bottom: 0; + margin: 0 auto; + padding: 0; + background: white; + + display: ${props => props.show ? "" : "none"}; +`; + +const Overlay = styled(OverlayOpaqueBackground).attrs((props) => ({ + ...props, +}))` + color: red; + background: white; + font-weight: 400; + border: 2px solid red; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; + box-shadow: 0 19px 38px rgba(220, 20, 60, 0.3), 0 15px 12px rgba(220, 20, 60, 0.1); + z-index: 20; + position: relative; + left: 0; + top: 0; + right: 0; + bottom: 0; + margin: 0 auto; + padding: 0; + width: 100%; + height: 100%; + display: flex; + justify-content: center; + align-items: center; + + display: ${props => props.show ? "" : "none"}; + -webkit-animation: ${props => props.show ? `fadeInOut ${props.animationDuration / 1000}s linear forwards` : ""}; + animation: ${props => props.show ? `fadeInOut ${props.animationDuration / 1000}s linear forwards` : ""}; + + @-webkit-keyframes fadeInOut { + 0% { opacity: 0; } + 50% { opacity: 1; } + 100% { opacity: 0; } + } + @keyframes fadeInOut { + 0% { opacity: 0; } + 50% { opacity: 1; } + 100% { opacity: 0; } + } +`; +const Button = styled.button.attrs((props) => ({ + ...props +}))` + background: ${props => props.primary ? "blue" : "white"}; + color: ${props => props.primary ? "white" : "blue"}; + font-size: 1em; + margin: 1em; + padding: 0.5em 1em; + border: 2px solid blue; + border-radius: 3px; + width: 250px; + + &:hover { + background: ${props => props.primary ? "white" : "blue"}; + color: ${props => props.primary ? "blue" : "white"}; + border: 2px solid blue; + cursor: pointer; + } + + &:focus { + outline: none; + } +`; + +const List = styled.ul` + list-style: none; + width: 60%; + height: 100%; + display: flex; + justify-content: center; + align-items: center; + // flex-direction: column; + flex-wrap: wrap; + overflow: auto; +`; + +const ListItem = styled.li` + text-decoration: none; + display: flex; + justify-content: center; + align-items: center; + flex-direction: column; + border: 2px solid blue; + box-shadow: 0 15px 20px rgba(0, 0, 139, 0.3), 0 10px 7px rgba(0, 0, 139, 0.1); + border-radius: 5px; + width: 20%; + padding: 30px; + margin: 1em; + background: #eae9e9; +`; + +const ListItemCaption = styled.span` + margin-top: 1em; +`; + +const ListItemImage = styled.img` + max-width: 80%; + object-fit: cover; +`; +export { + Wrapper, + Title, + Section, + Overlay, + OverlayOpaqueBackground, + Button, + List, + ListItem, + ListItemCaption, + ListItemImage +}; \ No newline at end of file diff --git a/recipe-hooks-project/src/components/Profile.js b/recipe-hooks-project/src/components/Profile.js index 5c4d3ddc..411ea6cd 100644 --- a/recipe-hooks-project/src/components/Profile.js +++ b/recipe-hooks-project/src/components/Profile.js @@ -47,41 +47,5 @@ const EditSection = styled(Section)` const ActionIcon = styled.i.attrs((props) => ({ ...props }))``; -const Overlay = styled.div.attrs((props) => ({ - ...props, -}))` - color: red; - background: white; - font-weight: 400; - border: 2px solid red; - box-shadow: 0 19px 38px rgba(220, 20, 60, 0.3), 0 15px 12px rgba(220, 20, 60, 0.1); - z-index: 10; - width: 25%; - height: 100px; - display: flex; - justify-content: center; - align-items: center; - position: absolute; - left: 0; - top: 10%; - right: 0; - bottom: 0; - margin: 0 auto; - - display: ${props => props.show ? "" : "none"}; - -webkit-animation: ${props => props.show ? `fadeInOut ${props.animationDuration / 1000}s linear forwards` : ""}; - animation: ${props => props.show ? `fadeInOut ${props.animationDuration / 1000}s linear forwards` : ""}; - - @-webkit-keyframes fadeInOut { - 0% { opacity: 0; } - 50% { opacity: 1; } - 100% { opacity: 0; } - } - @keyframes fadeInOut { - 0% { opacity: 0; } - 50% { opacity: 1; } - 100% { opacity: 0; } - } -`; -export {ProfileCard, Label, Input, EditSection, ActionIcon, Overlay}; \ No newline at end of file +export {ProfileCard, Label, Input, EditSection, ActionIcon}; \ No newline at end of file From a03db87853ed6f96c8662c76f622f00f46a1a8fc Mon Sep 17 00:00:00 2001 From: Francesco Venneri Date: Fri, 3 Jul 2020 16:38:58 +0200 Subject: [PATCH 17/31] [RECIPE-PROJECT] Fixed a typo --- recipe-hooks-project/src/Ingredients.js | 1 + recipe-hooks-project/src/Tags.js | 3 ++- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/recipe-hooks-project/src/Ingredients.js b/recipe-hooks-project/src/Ingredients.js index 4c170f57..f7d98adc 100644 --- a/recipe-hooks-project/src/Ingredients.js +++ b/recipe-hooks-project/src/Ingredients.js @@ -53,6 +53,7 @@ function Ingredients() { {headers: {Authorization: "Token 771588d4be688173e35ffe08caec07ac8a95009e"}}); //FIXME it should work with a real login) if (response.status === 201) { toggleAddIngredient(); + resetNewIngredient(); fetchIngredients(); } else { toggleError(3000); diff --git a/recipe-hooks-project/src/Tags.js b/recipe-hooks-project/src/Tags.js index 02814c6f..8492c08b 100644 --- a/recipe-hooks-project/src/Tags.js +++ b/recipe-hooks-project/src/Tags.js @@ -21,7 +21,7 @@ const TAGS_RELATIVE_URL = "/recipe/tags/"; function Tags() { const [tagsList, setTags] = useState([]); - const [newTag, handleNewTagChange, resetNewIngredient] = useInputState(""); + const [newTag, handleNewTagChange, resetNewTag] = useInputState(""); const [addingTag, toggleAddTag] = useToggle(false); const [showError, toggleError] = useTimedToggle(false); const [filterByAssignedToRecipe, toggleFilterByAssignedToRecipe] = useToggle(false); @@ -53,6 +53,7 @@ function Tags() { {headers: {Authorization: "Token 771588d4be688173e35ffe08caec07ac8a95009e"}}); //FIXME it should work with a real login) if (response.status === 201) { toggleAddTag(); + resetNewTag(); fetchTags(); } else { toggleError(3000); From ffa725e71f875a0eb138e39bbe23a06f68e228ed Mon Sep 17 00:00:00 2001 From: Francesco Venneri Date: Mon, 6 Jul 2020 09:38:56 +0200 Subject: [PATCH 18/31] [RECIPE-PROJECT] Added visualization for recipe --- recipe-hooks-project/src/Ingredients.js | 12 +-- recipe-hooks-project/src/RecipeDetails.js | 93 +++++++++++++++++++ recipe-hooks-project/src/Recipes.js | 74 +++++++++++++++ recipe-hooks-project/src/Routes.js | 4 + recipe-hooks-project/src/Tags.js | 8 +- .../src/components/General.js | 10 +- 6 files changed, 190 insertions(+), 11 deletions(-) create mode 100644 recipe-hooks-project/src/RecipeDetails.js create mode 100644 recipe-hooks-project/src/Recipes.js diff --git a/recipe-hooks-project/src/Ingredients.js b/recipe-hooks-project/src/Ingredients.js index f7d98adc..0c687ccd 100644 --- a/recipe-hooks-project/src/Ingredients.js +++ b/recipe-hooks-project/src/Ingredients.js @@ -1,4 +1,6 @@ import React, {memo, useEffect, useState} from "react"; +import axios from "axios"; +import {RECIPE_API_BASE_URL} from "./App"; import { Button, List, @@ -10,8 +12,6 @@ import { Title, Wrapper } from "./components/General"; -import axios from "axios"; -import {RECIPE_API_BASE_URL} from "./App"; import {Input} from "./components/Form"; import useInputState from "./hooks/useInputState"; import useToggle from "./hooks/useToggleState"; @@ -70,11 +70,11 @@ function Ingredients() { - {ingredientsList.map(e => { + {ingredientsList.map(ingredient => { return ( - - - {e.name} + + + {ingredient.name} ) })} diff --git a/recipe-hooks-project/src/RecipeDetails.js b/recipe-hooks-project/src/RecipeDetails.js new file mode 100644 index 00000000..97e7a5fa --- /dev/null +++ b/recipe-hooks-project/src/RecipeDetails.js @@ -0,0 +1,93 @@ +import React, {useEffect, useState} from "react"; +import styled from "styled-components"; +import {ListItemImage, Wrapper} from "./components/General"; +import axios from "axios"; +import {RECIPE_API_BASE_URL} from "./App"; +import {RECIPES_RELATIVE_URL} from "./Recipes"; + +const Recipe = styled.div.attrs(props => ({ + ...props +}))` + border: 2px solid darkblue; + border-radius: 5px; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; + box-shadow: 0 19px 38px rgba(0, 0, 139, 0.3), 0 15px 12px rgba(0, 0, 139, 0.1); +`; +const Image = styled.img.attrs(props => ({ + ...props +}))` +`; +const Name = styled.div.attrs(props => ({ + ...props +}))` + display: flex; + justify-content: center; + align-items: center; + font-size: 2em; + margin-top: 20px; + margin-bottom: 10px; +`; +const Details = styled(Name).attrs(props => ({ + ...props +}))` + font-size: 1em; + margin-top: 10px; +`; +const DetailsText = styled.span.attrs(props => ({ + ...props +}))` + color: ${props => props.color !== undefined ? props.color : "blue"}; + padding-left: 10px; + padding-right: 10px; +`; + +export default function RecipeDetails(props) { + const [recipe, setRecipe] = useState({}); + + async function fetchRecipe() { + const response = await axios.request({ + url: RECIPE_API_BASE_URL + RECIPES_RELATIVE_URL + props.match.params.id, + method: "get", + params: { + headers: { + Authorization: "Token 771588d4be688173e35ffe08caec07ac8a95009e" //FIXME it should work with a real login + } + } + }); + const recipe = response.data; + const imgTag = recipe.title.replace(/\s/g, "-").toLowerCase(); + setRecipe({...recipe, imgTag: imgTag}); + console.log(recipe); + } + + useEffect(() => { + fetchRecipe(); + }, []); + + return ( + + + {recipe.imgTag}/ + {recipe.title} +
+ Ingredients: + { + recipe.ingredients !== undefined && recipe.ingredients.map(ing => { + return {ing.name} + }) + } +
+
+ Tags: + { + recipe.tags !== undefined && recipe.tags.map(tag => { + return {tag.name} + }) + } +
+
+
+ ); +}; \ No newline at end of file diff --git a/recipe-hooks-project/src/Recipes.js b/recipe-hooks-project/src/Recipes.js new file mode 100644 index 00000000..c021654f --- /dev/null +++ b/recipe-hooks-project/src/Recipes.js @@ -0,0 +1,74 @@ +import React, {memo, useEffect, useState} from "react"; +import axios from "axios"; +import styled from "styled-components"; +import {RECIPE_API_BASE_URL} from "./App"; +import { + Button, + List, + ListItem, + ListItemCaption, + ListItemImage, Overlay, + OverlayOpaqueBackground, StyledListItemLink, + Title, Wrapper +} from "./components/General"; + +const RECIPES_RELATIVE_URL = "/recipe/recipes/"; + +function Recipes() { + const [recipesList, setRecipes] = useState([]); + + async function fetchRecipes() { + const response = await axios.request({ + url: RECIPE_API_BASE_URL + RECIPES_RELATIVE_URL, + method: "get", + params: { + headers: { + Authorization: "Token 771588d4be688173e35ffe08caec07ac8a95009e" //FIXME it should work with a real login + } + } + }); + const recipes = response.data; + setRecipes(recipes); + } + + useEffect(() => { + fetchRecipes(); + }, []); + + return ( + + + <div>Your favorite recipes</div> + + + + {recipesList.map(recipe => { + return ( + + + + {recipe.title} + + ) + })} + + {/*{*/} + {/* addingIngredient*/} + {/* ?
*/} + {/* */} + {/* */} + {/*
*/} + {/* : */} + {/*}*/} + + {/**/} + {/* */} + {/* Error saving the ingredient, retry!*/} + {/* */} + {/**/} +
+ ); +} + +export default memo(Recipes); +export {RECIPES_RELATIVE_URL}; \ No newline at end of file diff --git a/recipe-hooks-project/src/Routes.js b/recipe-hooks-project/src/Routes.js index 35bb5c36..aec5728a 100644 --- a/recipe-hooks-project/src/Routes.js +++ b/recipe-hooks-project/src/Routes.js @@ -6,10 +6,14 @@ import Register from "./Register"; import Profile from "./Profile"; import Ingredients from "./Ingredients"; import Tags from "./Tags"; +import Recipes from "./Recipes"; +import RecipeDetails from "./RecipeDetails"; export function Routes() { return ( <> + }/> + diff --git a/recipe-hooks-project/src/Tags.js b/recipe-hooks-project/src/Tags.js index 8492c08b..3067a677 100644 --- a/recipe-hooks-project/src/Tags.js +++ b/recipe-hooks-project/src/Tags.js @@ -70,11 +70,11 @@ function Tags() { - {tagsList.map(e => { + {tagsList.map(tag => { return ( - - - {e.name} + + + {tag.name} ) })} diff --git a/recipe-hooks-project/src/components/General.js b/recipe-hooks-project/src/components/General.js index 09b82824..1ffc8ffb 100644 --- a/recipe-hooks-project/src/components/General.js +++ b/recipe-hooks-project/src/components/General.js @@ -1,4 +1,5 @@ import styled from "styled-components"; +import {Link} from "react-router-dom"; const Wrapper = styled.div` height: 90vh; @@ -122,6 +123,12 @@ const List = styled.ul` overflow: auto; `; +const StyledListItemLink = styled(Link).attrs(props => ({ + ...props +}))` + width: 30%; +`; + const ListItem = styled.li` text-decoration: none; display: flex; @@ -131,7 +138,6 @@ const ListItem = styled.li` border: 2px solid blue; box-shadow: 0 15px 20px rgba(0, 0, 139, 0.3), 0 10px 7px rgba(0, 0, 139, 0.1); border-radius: 5px; - width: 20%; padding: 30px; margin: 1em; background: #eae9e9; @@ -145,6 +151,7 @@ const ListItemImage = styled.img` max-width: 80%; object-fit: cover; `; + export { Wrapper, Title, @@ -153,6 +160,7 @@ export { OverlayOpaqueBackground, Button, List, + StyledListItemLink, ListItem, ListItemCaption, ListItemImage From af0c9e25b03509be0854e65d8b9d88f7a8435635 Mon Sep 17 00:00:00 2001 From: Francesco Venneri Date: Mon, 6 Jul 2020 11:27:41 +0200 Subject: [PATCH 19/31] [RECIPE-PROJECT] Added creating recipe feature --- recipe-hooks-project/src/Ingredients.js | 3 +- recipe-hooks-project/src/RecipeDetails.js | 1 + recipe-hooks-project/src/Recipes.js | 200 +++++++++++++++--- recipe-hooks-project/src/Tags.js | 3 +- .../src/components/General.js | 5 +- 5 files changed, 180 insertions(+), 32 deletions(-) diff --git a/recipe-hooks-project/src/Ingredients.js b/recipe-hooks-project/src/Ingredients.js index 0c687ccd..9d7e56ae 100644 --- a/recipe-hooks-project/src/Ingredients.js +++ b/recipe-hooks-project/src/Ingredients.js @@ -96,4 +96,5 @@ function Ingredients() { ); } -export default memo(Ingredients); \ No newline at end of file +export default memo(Ingredients); +export {INGREDIENTS_RELATIVE_URL}; \ No newline at end of file diff --git a/recipe-hooks-project/src/RecipeDetails.js b/recipe-hooks-project/src/RecipeDetails.js index 97e7a5fa..a4ab7ac6 100644 --- a/recipe-hooks-project/src/RecipeDetails.js +++ b/recipe-hooks-project/src/RecipeDetails.js @@ -8,6 +8,7 @@ import {RECIPES_RELATIVE_URL} from "./Recipes"; const Recipe = styled.div.attrs(props => ({ ...props }))` + margin-top: 2em; border: 2px solid darkblue; border-radius: 5px; -webkit-box-sizing: border-box; diff --git a/recipe-hooks-project/src/Recipes.js b/recipe-hooks-project/src/Recipes.js index c021654f..bd4f3298 100644 --- a/recipe-hooks-project/src/Recipes.js +++ b/recipe-hooks-project/src/Recipes.js @@ -7,15 +7,47 @@ import { List, ListItem, ListItemCaption, - ListItemImage, Overlay, - OverlayOpaqueBackground, StyledListItemLink, + ListItemImage, + StyledListItemLink, Title, Wrapper } from "./components/General"; +import useToggle from "./hooks/useToggleState"; +import {Form, Input} from "./components/Form"; +import {Label} from "./components/Profile"; +import useInputState from "./hooks/useInputState"; +import {INGREDIENTS_RELATIVE_URL} from "./Ingredients"; +import {TAGS_RELATIVE_URL} from "./Tags"; const RECIPES_RELATIVE_URL = "/recipe/recipes/"; +const RecipeForm = styled(Form)` + width: 40%; +`; +const RecipeFormSection = styled.div.attrs(props => ({ + ...props +}))` + width: 100%; + display: flex; + justify-content: center; + align-items: center; +`; +const RecipeFormSelect = styled.select.attrs(props => ({ + ...props +}))` + width: 50%; + margin-top: 20px; +`; + function Recipes() { const [recipesList, setRecipes] = useState([]); + const [ingredientsList, setIngredients] = useState([]); + const [tagsList, setTags] = useState([]); + const [selectedIngredients, setSelectedIngredients] = useState([]); + const [selectedTags, setSelectedTags] = useState([]); + const [isCreatingNewRecipe, toggleCreatingNewRecipe] = useToggle(false); + const [title, handleTitleChange] = useInputState(""); + const [time, handleTimeChange] = useInputState(""); + const [price, handlePriceChange] = useInputState(""); async function fetchRecipes() { const response = await axios.request({ @@ -32,8 +64,85 @@ function Recipes() { } useEffect(() => { - fetchRecipes(); - }, []); + if (isCreatingNewRecipe) { + fetchIngredients(); + fetchTags(); + } else + fetchRecipes(); + }, [isCreatingNewRecipe]); + + async function fetchIngredients() { + const response = await axios.request({ + url: RECIPE_API_BASE_URL + INGREDIENTS_RELATIVE_URL, + method: "get", + params: { + headers: { + Authorization: "Token 771588d4be688173e35ffe08caec07ac8a95009e" //FIXME it should work with a real login + } + } + }); + const ingredients = response.data; + setIngredients(ingredients); + } + + async function fetchTags() { + const response = await axios.request({ + url: RECIPE_API_BASE_URL + TAGS_RELATIVE_URL, + method: "get", + params: { + headers: { + Authorization: "Token 771588d4be688173e35ffe08caec07ac8a95009e" //FIXME it should work with a real login + } + } + }); + const tags = response.data; + setTags(tags); + } + + async function handleCreateRecipe(e) { + e.preventDefault(); + const response = await axios.request({ + url: RECIPE_API_BASE_URL + RECIPES_RELATIVE_URL, + method: "post", + data: { + "title": title, + "ingredients": selectedIngredients, + "tags": selectedTags, + "time_minutes": 60, + "price": 5.00 + }, + params: { + headers: { + Authorization: "Token 771588d4be688173e35ffe08caec07ac8a95009e" //FIXME it should work with a real login + } + } + }); + if (response.status === 201) { + toggleCreatingNewRecipe(); + console.log("Success"); + } else + console.log("Error"); + } + + function handleSelectIngredients(e) { + const data = e.target.options; + const selected = []; + for (let i = 0; i < data.length; i++) { + if (data[i].selected) + selected.push(data[i].value); + } + setSelectedIngredients(selected); + } + + function handleSelectTags(e) { + const data = e.target.options; + const selected = []; + for (let i = 0; i < data.length; i++) { + if (data[i].selected) + selected.push(data[i].value); + } + setSelectedTags(selected); + } return ( @@ -41,31 +150,64 @@ function Recipes() {
Your favorite recipes
- - {recipesList.map(recipe => { - return ( - - - - {recipe.title} - - ) - })} - - {/*{*/} - {/* addingIngredient*/} - {/* ?
*/} - {/* */} - {/* */} - {/*
*/} - {/* : */} - {/*}*/} - - {/**/} - {/* */} - {/* Error saving the ingredient, retry!*/} - {/* */} - {/**/} + { + isCreatingNewRecipe + ? <> + + + + + + + + + { + ingredientsList.map((item, i) => { + return ( + + ) + }, this)} + + + + + + { + tagsList.map((item, i) => { + return ( + + ) + }, this)} + + + + + + + + + + + + + + + + : <> + + + {recipesList.map(recipe => { + return ( + + + + {recipe.title} + + ) + })} + + + }
); } diff --git a/recipe-hooks-project/src/Tags.js b/recipe-hooks-project/src/Tags.js index 3067a677..fea927b5 100644 --- a/recipe-hooks-project/src/Tags.js +++ b/recipe-hooks-project/src/Tags.js @@ -96,4 +96,5 @@ function Tags() { ); } -export default memo(Tags); \ No newline at end of file +export default memo(Tags); +export {TAGS_RELATIVE_URL}; \ No newline at end of file diff --git a/recipe-hooks-project/src/components/General.js b/recipe-hooks-project/src/components/General.js index 1ffc8ffb..3f9ae999 100644 --- a/recipe-hooks-project/src/components/General.js +++ b/recipe-hooks-project/src/components/General.js @@ -2,7 +2,7 @@ import styled from "styled-components"; import {Link} from "react-router-dom"; const Wrapper = styled.div` - height: 90vh; + // height: 90vh; padding: auto; display: flex; align-items: center; @@ -121,6 +121,9 @@ const List = styled.ul` // flex-direction: column; flex-wrap: wrap; overflow: auto; + margin-block-start: 0; + margin-block-end: 0; + padding-inline-start: 0; `; const StyledListItemLink = styled(Link).attrs(props => ({ From ab4c243ab61454f0626b24db34c8acefa4d5ae0e Mon Sep 17 00:00:00 2001 From: Francesco Venneri Date: Mon, 6 Jul 2020 15:32:04 +0200 Subject: [PATCH 20/31] [RECIPE-PROJECT] Added filtering based on ingredients and tags --- recipe-hooks-project/src/RecipeDetails.js | 62 ++++++++++++++--- recipe-hooks-project/src/Recipes.js | 83 +++++++++++++++++++---- 2 files changed, 121 insertions(+), 24 deletions(-) diff --git a/recipe-hooks-project/src/RecipeDetails.js b/recipe-hooks-project/src/RecipeDetails.js index a4ab7ac6..87634436 100644 --- a/recipe-hooks-project/src/RecipeDetails.js +++ b/recipe-hooks-project/src/RecipeDetails.js @@ -1,9 +1,10 @@ import React, {useEffect, useState} from "react"; import styled from "styled-components"; -import {ListItemImage, Wrapper} from "./components/General"; +import {Button, Wrapper} from "./components/General"; import axios from "axios"; import {RECIPE_API_BASE_URL} from "./App"; import {RECIPES_RELATIVE_URL} from "./Recipes"; +import {Form, Input} from "./components/Form"; const Recipe = styled.div.attrs(props => ({ ...props @@ -15,12 +16,16 @@ const Recipe = styled.div.attrs(props => ({ -moz-box-sizing: border-box; box-sizing: border-box; box-shadow: 0 19px 38px rgba(0, 0, 139, 0.3), 0 15px 12px rgba(0, 0, 139, 0.1); + width: 50%; `; const Image = styled.img.attrs(props => ({ ...props }))` + max-width: 100%; + object-fit: cover; + margin: auto; `; -const Name = styled.div.attrs(props => ({ +const Title = styled.div.attrs(props => ({ ...props }))` display: flex; @@ -30,7 +35,7 @@ const Name = styled.div.attrs(props => ({ margin-top: 20px; margin-bottom: 10px; `; -const Details = styled(Name).attrs(props => ({ +const Details = styled(Title).attrs(props => ({ ...props }))` font-size: 1em; @@ -43,9 +48,20 @@ const DetailsText = styled.span.attrs(props => ({ padding-left: 10px; padding-right: 10px; `; +const ImageForm = styled(Form).attrs(props => ({ + ...props +}))` + margin-top: 50px; + width: 30%; +`; +const ImageInput = styled(Input).attrs(props => ({ + ...props +}))` +`; export default function RecipeDetails(props) { const [recipe, setRecipe] = useState({}); + const [image, setImage] = useState(null); async function fetchRecipe() { const response = await axios.request({ @@ -60,23 +76,47 @@ export default function RecipeDetails(props) { const recipe = response.data; const imgTag = recipe.title.replace(/\s/g, "-").toLowerCase(); setRecipe({...recipe, imgTag: imgTag}); - console.log(recipe); } useEffect(() => { fetchRecipe(); - }, []); + }); + + function handleChangeImage(e) { + e.preventDefault(); + setImage(e.target.files[0]); + } + + async function handleImageUpload(e) { + e.preventDefault(); + const formData = new FormData(); + formData.append("image", image); + const response = await axios.request({ + url: RECIPE_API_BASE_URL + RECIPES_RELATIVE_URL + props.match.params.id + "/upload-image/", + method: "post", + data: formData, + params: { + headers: { + Authorization: "Token 771588d4be688173e35ffe08caec07ac8a95009e" //FIXME it should work with a real login + } + } + }); + if (response.status === 200) { + console.log("Success"); + } else + console.log("Error"); + } return ( - {recipe.imgTag}/ - {recipe.title} + {recipe.imgTag}/ + {recipe.title}
Ingredients: { recipe.ingredients !== undefined && recipe.ingredients.map(ing => { - return {ing.name} + return {ing.name} }) }
@@ -84,11 +124,15 @@ export default function RecipeDetails(props) { Tags: { recipe.tags !== undefined && recipe.tags.map(tag => { - return {tag.name} + return {tag.name} }) }
+ + + +
); }; \ No newline at end of file diff --git a/recipe-hooks-project/src/Recipes.js b/recipe-hooks-project/src/Recipes.js index bd4f3298..95f1745e 100644 --- a/recipe-hooks-project/src/Recipes.js +++ b/recipe-hooks-project/src/Recipes.js @@ -37,6 +37,22 @@ const RecipeFormSelect = styled.select.attrs(props => ({ width: 50%; margin-top: 20px; `; +const Filters = styled.div.attrs(props => ({ + ...props +}))` + display: flex; + align-items: center; + justify-content: center; + width: 80%; +`; +const Filter = styled.div.attrs(props => ({ + ...props +}))` + display: flex; + align-items: center; + justify-content: center; + width: 50%; +`; function Recipes() { const [recipesList, setRecipes] = useState([]); @@ -48,28 +64,34 @@ function Recipes() { const [title, handleTitleChange] = useInputState(""); const [time, handleTimeChange] = useInputState(""); const [price, handlePriceChange] = useInputState(""); + const [link, handleLinkChange] = useInputState(""); async function fetchRecipes() { + let params = { + headers: { + Authorization: "Token 771588d4be688173e35ffe08caec07ac8a95009e" //FIXME it should work with a real login + } + }; + if (selectedIngredients.length > 0) + params = {...params, ingredients: selectedIngredients.join(",")}; + if (selectedTags.length > 0) + params = {...params, tags: selectedTags.join(",")}; + const response = await axios.request({ url: RECIPE_API_BASE_URL + RECIPES_RELATIVE_URL, method: "get", - params: { - headers: { - Authorization: "Token 771588d4be688173e35ffe08caec07ac8a95009e" //FIXME it should work with a real login - } - } + params: {...params} }); const recipes = response.data; setRecipes(recipes); } useEffect(() => { - if (isCreatingNewRecipe) { - fetchIngredients(); - fetchTags(); - } else + fetchIngredients(); + fetchTags(); + if (!isCreatingNewRecipe) fetchRecipes(); - }, [isCreatingNewRecipe]); + }, [isCreatingNewRecipe, selectedIngredients, selectedTags]); async function fetchIngredients() { const response = await axios.request({ @@ -108,8 +130,9 @@ function Recipes() { "title": title, "ingredients": selectedIngredients, "tags": selectedTags, - "time_minutes": 60, - "price": 5.00 + "time_minutes": time, + "price": price, + "link": link }, params: { headers: { @@ -145,7 +168,7 @@ function Recipes() { } return ( - + <div>Your favorite recipes</div> @@ -188,24 +211,54 @@ function Recipes() { + + + + : <> - + + + + + { + ingredientsList.map((item, i) => { + return ( + + ) + }, this)} + + + + + + + + { + tagsList.map((item, i) => { + return ( + + ) + }, this)} + + + {recipesList.map(recipe => { return ( - + {recipe.title} ) })} + } From ce9f348eb03bbe2ef90e5f1064c97e527bc1dee2 Mon Sep 17 00:00:00 2001 From: Francesco Venneri Date: Mon, 6 Jul 2020 15:55:20 +0200 Subject: [PATCH 21/31] [RECIPE-PROJECT] Some changes --- recipe-hooks-project/src/AppPage.js | 1 - recipe-hooks-project/src/RecipeApp.js | 11 ++++++++--- recipe-hooks-project/src/Routes.js | 1 + recipe-hooks-project/src/components/Profile.js | 1 + 4 files changed, 10 insertions(+), 4 deletions(-) diff --git a/recipe-hooks-project/src/AppPage.js b/recipe-hooks-project/src/AppPage.js index 12868a73..645870c0 100644 --- a/recipe-hooks-project/src/AppPage.js +++ b/recipe-hooks-project/src/AppPage.js @@ -16,7 +16,6 @@ function AppPage() { } - {/**/} ); } diff --git a/recipe-hooks-project/src/RecipeApp.js b/recipe-hooks-project/src/RecipeApp.js index f482a0bf..10c98997 100644 --- a/recipe-hooks-project/src/RecipeApp.js +++ b/recipe-hooks-project/src/RecipeApp.js @@ -1,10 +1,15 @@ import React, {memo} from "react"; +import {Title, Wrapper} from "./components/General"; +import {Link} from "react-router-dom"; function RecipeApp(props) { return ( -
-

{props.title}

-
+ + {props.title} + Recipes + Ingredients + Tags + ); } diff --git a/recipe-hooks-project/src/Routes.js b/recipe-hooks-project/src/Routes.js index aec5728a..18fd76b7 100644 --- a/recipe-hooks-project/src/Routes.js +++ b/recipe-hooks-project/src/Routes.js @@ -16,6 +16,7 @@ export function Routes() { + diff --git a/recipe-hooks-project/src/components/Profile.js b/recipe-hooks-project/src/components/Profile.js index 411ea6cd..0cfee304 100644 --- a/recipe-hooks-project/src/components/Profile.js +++ b/recipe-hooks-project/src/components/Profile.js @@ -10,6 +10,7 @@ const ProfileCard = styled.form` border: 2px solid lightgray; box-shadow: 0 19px 38px rgba(0, 0, 0, 0.3), 0 15px 12px rgba(0, 0, 0, 0.1); margin: auto; + margin-top: 50px; `; const Label = styled.label` font-size: 1em; From 0f5dca1e7d7a517ec44a14a5bee490cd5d873aa1 Mon Sep 17 00:00:00 2001 From: Francesco Venneri Date: Mon, 6 Jul 2020 16:08:55 +0200 Subject: [PATCH 22/31] [RECIPE-PROJECT] Removed hardcoded token from code --- recipe-hooks-project/src/Ingredients.js | 11 +++++++---- recipe-hooks-project/src/Profile.js | 7 +++++-- recipe-hooks-project/src/RecipeDetails.js | 9 ++++++--- recipe-hooks-project/src/Recipes.js | 13 ++++++++----- recipe-hooks-project/src/Tags.js | 11 ++++++----- recipe-hooks-project/src/logo.svg | 7 ------- 6 files changed, 32 insertions(+), 26 deletions(-) delete mode 100644 recipe-hooks-project/src/logo.svg diff --git a/recipe-hooks-project/src/Ingredients.js b/recipe-hooks-project/src/Ingredients.js index 9d7e56ae..4c894134 100644 --- a/recipe-hooks-project/src/Ingredients.js +++ b/recipe-hooks-project/src/Ingredients.js @@ -1,4 +1,4 @@ -import React, {memo, useEffect, useState} from "react"; +import React, {memo, useContext, useEffect, useState} from "react"; import axios from "axios"; import {RECIPE_API_BASE_URL} from "./App"; import { @@ -16,10 +16,13 @@ import {Input} from "./components/Form"; import useInputState from "./hooks/useInputState"; import useToggle from "./hooks/useToggleState"; import useTimedToggle from "./hooks/useTimedToggle"; +import {AuthContext} from "./contexts/AuthenticationProvider"; const INGREDIENTS_RELATIVE_URL = "/recipe/ingredients/"; function Ingredients() { + const {token} = useContext(AuthContext) + const [ingredientsList, setIngredients] = useState([]); const [newIngredient, handleNewIngredientChange, resetNewIngredient] = useInputState(""); const [addingIngredient, toggleAddIngredient] = useToggle(false); @@ -28,8 +31,8 @@ function Ingredients() { async function fetchIngredients() { const headers = { - Authorization: "Token 771588d4be688173e35ffe08caec07ac8a95009e" - }; //FIXME it should work with a real login + Authorization: "Token " + token + }; const response = await axios.request({ url: RECIPE_API_BASE_URL + INGREDIENTS_RELATIVE_URL, method: "get", @@ -50,7 +53,7 @@ function Ingredients() { e.preventDefault(); const response = await axios.post(RECIPE_API_BASE_URL + INGREDIENTS_RELATIVE_URL, {name: newIngredient}, - {headers: {Authorization: "Token 771588d4be688173e35ffe08caec07ac8a95009e"}}); //FIXME it should work with a real login) + {headers: {Authorization: "Token " + token}}); if (response.status === 201) { toggleAddIngredient(); resetNewIngredient(); diff --git a/recipe-hooks-project/src/Profile.js b/recipe-hooks-project/src/Profile.js index 932b7e03..fae6a722 100644 --- a/recipe-hooks-project/src/Profile.js +++ b/recipe-hooks-project/src/Profile.js @@ -1,4 +1,4 @@ -import React, {memo, useEffect} from "react"; +import React, {memo, useContext, useEffect} from "react"; import axios from "axios"; import "@fortawesome/fontawesome-free/css/all.css" import {Wrapper, Title, Section, Overlay} from "./components/General"; @@ -7,10 +7,13 @@ import {RECIPE_API_BASE_URL} from "./App"; import useInputState from "./hooks/useInputState"; import useToggle from "./hooks/useToggleState"; import useTimedToggle from "./hooks/useTimedToggle"; +import {AuthContext} from "./contexts/AuthenticationProvider"; const USER_PROFILE_API_RELATIVE_URL = "/user/me/"; function Profile() { + const {token} = useContext(AuthContext) + const [isEditing, toggleIsEditing] = useToggle(false); const [email, , setEmail] = useInputState(""); const [password, handlePasswordChange] = useInputState(""); @@ -20,7 +23,7 @@ function Profile() { useEffect(() => { async function fetchProfile() { const profile = await axios.get(RECIPE_API_BASE_URL + USER_PROFILE_API_RELATIVE_URL, - {headers: {Authorization: "Token 771588d4be688173e35ffe08caec07ac8a95009e"}}); //FIXME it should work with a real login + {headers: {Authorization: "Token " + token}}); setEmail(profile.data.email); setName(profile.data.name); } diff --git a/recipe-hooks-project/src/RecipeDetails.js b/recipe-hooks-project/src/RecipeDetails.js index 87634436..9ae518c3 100644 --- a/recipe-hooks-project/src/RecipeDetails.js +++ b/recipe-hooks-project/src/RecipeDetails.js @@ -1,10 +1,11 @@ -import React, {useEffect, useState} from "react"; +import React, {useContext, useEffect, useState} from "react"; import styled from "styled-components"; import {Button, Wrapper} from "./components/General"; import axios from "axios"; import {RECIPE_API_BASE_URL} from "./App"; import {RECIPES_RELATIVE_URL} from "./Recipes"; import {Form, Input} from "./components/Form"; +import {AuthContext} from "./contexts/AuthenticationProvider"; const Recipe = styled.div.attrs(props => ({ ...props @@ -60,6 +61,8 @@ const ImageInput = styled(Input).attrs(props => ({ `; export default function RecipeDetails(props) { + const {token} = useContext(AuthContext) + const [recipe, setRecipe] = useState({}); const [image, setImage] = useState(null); @@ -69,7 +72,7 @@ export default function RecipeDetails(props) { method: "get", params: { headers: { - Authorization: "Token 771588d4be688173e35ffe08caec07ac8a95009e" //FIXME it should work with a real login + Authorization: "Token " + token } } }); @@ -97,7 +100,7 @@ export default function RecipeDetails(props) { data: formData, params: { headers: { - Authorization: "Token 771588d4be688173e35ffe08caec07ac8a95009e" //FIXME it should work with a real login + Authorization: "Token " + token } } }); diff --git a/recipe-hooks-project/src/Recipes.js b/recipe-hooks-project/src/Recipes.js index 95f1745e..ab2ef5b4 100644 --- a/recipe-hooks-project/src/Recipes.js +++ b/recipe-hooks-project/src/Recipes.js @@ -1,4 +1,4 @@ -import React, {memo, useEffect, useState} from "react"; +import React, {memo, useContext, useEffect, useState} from "react"; import axios from "axios"; import styled from "styled-components"; import {RECIPE_API_BASE_URL} from "./App"; @@ -17,6 +17,7 @@ import {Label} from "./components/Profile"; import useInputState from "./hooks/useInputState"; import {INGREDIENTS_RELATIVE_URL} from "./Ingredients"; import {TAGS_RELATIVE_URL} from "./Tags"; +import {AuthContext} from "./contexts/AuthenticationProvider"; const RECIPES_RELATIVE_URL = "/recipe/recipes/"; @@ -55,6 +56,8 @@ const Filter = styled.div.attrs(props => ({ `; function Recipes() { + const {token} = useContext(AuthContext) + const [recipesList, setRecipes] = useState([]); const [ingredientsList, setIngredients] = useState([]); const [tagsList, setTags] = useState([]); @@ -69,7 +72,7 @@ function Recipes() { async function fetchRecipes() { let params = { headers: { - Authorization: "Token 771588d4be688173e35ffe08caec07ac8a95009e" //FIXME it should work with a real login + Authorization: "Token " + token } }; if (selectedIngredients.length > 0) @@ -99,7 +102,7 @@ function Recipes() { method: "get", params: { headers: { - Authorization: "Token 771588d4be688173e35ffe08caec07ac8a95009e" //FIXME it should work with a real login + Authorization: "Token " + token } } }); @@ -113,7 +116,7 @@ function Recipes() { method: "get", params: { headers: { - Authorization: "Token 771588d4be688173e35ffe08caec07ac8a95009e" //FIXME it should work with a real login + Authorization: "Token " + token } } }); @@ -136,7 +139,7 @@ function Recipes() { }, params: { headers: { - Authorization: "Token 771588d4be688173e35ffe08caec07ac8a95009e" //FIXME it should work with a real login + Authorization: "Token " + token } } }); diff --git a/recipe-hooks-project/src/Tags.js b/recipe-hooks-project/src/Tags.js index fea927b5..1ebaaae5 100644 --- a/recipe-hooks-project/src/Tags.js +++ b/recipe-hooks-project/src/Tags.js @@ -1,4 +1,4 @@ -import React, {memo, useEffect, useState} from "react"; +import React, {memo, useContext, useEffect, useState} from "react"; import { Button, List, @@ -16,10 +16,13 @@ import {Input} from "./components/Form"; import useInputState from "./hooks/useInputState"; import useToggle from "./hooks/useToggleState"; import useTimedToggle from "./hooks/useTimedToggle"; +import {AuthContext} from "./contexts/AuthenticationProvider"; const TAGS_RELATIVE_URL = "/recipe/tags/"; function Tags() { + const {token} = useContext(AuthContext) + const [tagsList, setTags] = useState([]); const [newTag, handleNewTagChange, resetNewTag] = useInputState(""); const [addingTag, toggleAddTag] = useToggle(false); @@ -27,9 +30,7 @@ function Tags() { const [filterByAssignedToRecipe, toggleFilterByAssignedToRecipe] = useToggle(false); async function fetchTags() { - const headers = { - Authorization: "Token 771588d4be688173e35ffe08caec07ac8a95009e" - }; //FIXME it should work with a real login + const headers = {Authorization: "Token " + token}; const response = await axios.request({ url: RECIPE_API_BASE_URL + TAGS_RELATIVE_URL, method: "get", @@ -50,7 +51,7 @@ function Tags() { e.preventDefault(); const response = await axios.post(RECIPE_API_BASE_URL + TAGS_RELATIVE_URL, {name: newTag}, - {headers: {Authorization: "Token 771588d4be688173e35ffe08caec07ac8a95009e"}}); //FIXME it should work with a real login) + {headers: {Authorization: "Token " + token}}); if (response.status === 201) { toggleAddTag(); resetNewTag(); diff --git a/recipe-hooks-project/src/logo.svg b/recipe-hooks-project/src/logo.svg deleted file mode 100644 index 6b60c104..00000000 --- a/recipe-hooks-project/src/logo.svg +++ /dev/null @@ -1,7 +0,0 @@ - - - - - - - From a99a2b1ed1b1fe0d78c22012d7857663e6485e81 Mon Sep 17 00:00:00 2001 From: Francesco Venneri Date: Mon, 6 Jul 2020 16:38:38 +0200 Subject: [PATCH 23/31] [RECIPE-PROJECT] Test --- recipe-hooks-project/src/Login.js | 6 ++++-- recipe-hooks-project/src/RecipeApp.js | 6 +++--- recipe-hooks-project/src/Recipes.js | 3 +++ .../src/contexts/AuthenticationProvider.js | 10 ++++++++-- 4 files changed, 18 insertions(+), 7 deletions(-) diff --git a/recipe-hooks-project/src/Login.js b/recipe-hooks-project/src/Login.js index 10ba35f1..dbf7e3bb 100644 --- a/recipe-hooks-project/src/Login.js +++ b/recipe-hooks-project/src/Login.js @@ -16,8 +16,10 @@ function Login() { const response = await axios.post("http://localhost:8000/api/user/token/", {email: email, password: password} ); - if (response.status === 200) - login(response.token); + if (response.status === 200) { + console.log(response.data); + login(response.data.token); + } } catch (e) { console.log("Login failed"); //FIXME message to user? } diff --git a/recipe-hooks-project/src/RecipeApp.js b/recipe-hooks-project/src/RecipeApp.js index 10c98997..223a0ff5 100644 --- a/recipe-hooks-project/src/RecipeApp.js +++ b/recipe-hooks-project/src/RecipeApp.js @@ -6,9 +6,9 @@ function RecipeApp(props) { return ( {props.title} - Recipes - Ingredients - Tags + Recipes + Ingredients + Tags ); } diff --git a/recipe-hooks-project/src/Recipes.js b/recipe-hooks-project/src/Recipes.js index ab2ef5b4..f4e4f21d 100644 --- a/recipe-hooks-project/src/Recipes.js +++ b/recipe-hooks-project/src/Recipes.js @@ -70,6 +70,7 @@ function Recipes() { const [link, handleLinkChange] = useInputState(""); async function fetchRecipes() { + console.log("Fetching recipes for: [" + token + "]"); let params = { headers: { Authorization: "Token " + token @@ -97,6 +98,7 @@ function Recipes() { }, [isCreatingNewRecipe, selectedIngredients, selectedTags]); async function fetchIngredients() { + console.log("Fetching ingredients for: [" + token + "]"); const response = await axios.request({ url: RECIPE_API_BASE_URL + INGREDIENTS_RELATIVE_URL, method: "get", @@ -111,6 +113,7 @@ function Recipes() { } async function fetchTags() { + console.log("Fetching tags for: [" + token + "]"); const response = await axios.request({ url: RECIPE_API_BASE_URL + TAGS_RELATIVE_URL, method: "get", diff --git a/recipe-hooks-project/src/contexts/AuthenticationProvider.js b/recipe-hooks-project/src/contexts/AuthenticationProvider.js index 2a21efac..2ca69476 100644 --- a/recipe-hooks-project/src/contexts/AuthenticationProvider.js +++ b/recipe-hooks-project/src/contexts/AuthenticationProvider.js @@ -4,8 +4,14 @@ export const AuthContext = createContext(); export function AuthenticationProvider(props) { const [token, setToken] = useState(null); - const login = tokenValue => setToken(tokenValue); - const logout = () => setToken(null); + const login = tokenValue => { + console.log("Logging in with token: " + tokenValue); + setToken(tokenValue) + }; + const logout = () => { + console.log("Logging out token " + token) + setToken(null); + } return ( {props.children} From f029f972088d1f943912f2dfb0c0e1b4458cf4e0 Mon Sep 17 00:00:00 2001 From: Francesco Venneri Date: Mon, 6 Jul 2020 16:40:36 +0200 Subject: [PATCH 24/31] [RECIPE-PROJECT] Fixed semicolon --- recipe-hooks-project/src/contexts/AuthenticationProvider.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/recipe-hooks-project/src/contexts/AuthenticationProvider.js b/recipe-hooks-project/src/contexts/AuthenticationProvider.js index 2ca69476..4d308e4a 100644 --- a/recipe-hooks-project/src/contexts/AuthenticationProvider.js +++ b/recipe-hooks-project/src/contexts/AuthenticationProvider.js @@ -6,7 +6,7 @@ export function AuthenticationProvider(props) { const [token, setToken] = useState(null); const login = tokenValue => { console.log("Logging in with token: " + tokenValue); - setToken(tokenValue) + setToken(tokenValue); }; const logout = () => { console.log("Logging out token " + token) From 0489cd5d46c35ef9c65c94ec85684786795fd916 Mon Sep 17 00:00:00 2001 From: Francesco Venneri Date: Mon, 6 Jul 2020 16:52:03 +0200 Subject: [PATCH 25/31] [RECIPE-PROJECT] Fixed login issue --- recipe-hooks-project/src/Ingredients.js | 7 ++----- recipe-hooks-project/src/Recipes.js | 25 ++++++------------------- recipe-hooks-project/src/Tags.js | 5 ++--- 3 files changed, 10 insertions(+), 27 deletions(-) diff --git a/recipe-hooks-project/src/Ingredients.js b/recipe-hooks-project/src/Ingredients.js index 4c894134..510c9f2f 100644 --- a/recipe-hooks-project/src/Ingredients.js +++ b/recipe-hooks-project/src/Ingredients.js @@ -30,15 +30,12 @@ function Ingredients() { const [filterByAssignedToRecipe, toggleFilterByAssignedToRecipe] = useToggle(false); async function fetchIngredients() { - const headers = { - Authorization: "Token " + token - }; const response = await axios.request({ url: RECIPE_API_BASE_URL + INGREDIENTS_RELATIVE_URL, method: "get", + headers: {Authorization: "Token " + token}, params: { - assigned_only: filterByAssignedToRecipe ? 1 : 0, - headers: headers + assigned_only: filterByAssignedToRecipe ? 1 : 0 } }); const ingredients = response.data; diff --git a/recipe-hooks-project/src/Recipes.js b/recipe-hooks-project/src/Recipes.js index f4e4f21d..fa07ec3c 100644 --- a/recipe-hooks-project/src/Recipes.js +++ b/recipe-hooks-project/src/Recipes.js @@ -71,11 +71,7 @@ function Recipes() { async function fetchRecipes() { console.log("Fetching recipes for: [" + token + "]"); - let params = { - headers: { - Authorization: "Token " + token - } - }; + let params = {}; if (selectedIngredients.length > 0) params = {...params, ingredients: selectedIngredients.join(",")}; if (selectedTags.length > 0) @@ -84,6 +80,7 @@ function Recipes() { const response = await axios.request({ url: RECIPE_API_BASE_URL + RECIPES_RELATIVE_URL, method: "get", + headers: {Authorization: "Token " + token}, params: {...params} }); const recipes = response.data; @@ -102,10 +99,8 @@ function Recipes() { const response = await axios.request({ url: RECIPE_API_BASE_URL + INGREDIENTS_RELATIVE_URL, method: "get", - params: { - headers: { - Authorization: "Token " + token - } + headers: { + Authorization: "Token " + token } }); const ingredients = response.data; @@ -117,11 +112,7 @@ function Recipes() { const response = await axios.request({ url: RECIPE_API_BASE_URL + TAGS_RELATIVE_URL, method: "get", - params: { - headers: { - Authorization: "Token " + token - } - } + headers: {Authorization: "Token " + token} }); const tags = response.data; setTags(tags); @@ -140,11 +131,7 @@ function Recipes() { "price": price, "link": link }, - params: { - headers: { - Authorization: "Token " + token - } - } + headers: {Authorization: "Token " + token} }); if (response.status === 201) { toggleCreatingNewRecipe(); diff --git a/recipe-hooks-project/src/Tags.js b/recipe-hooks-project/src/Tags.js index 1ebaaae5..1215dd8d 100644 --- a/recipe-hooks-project/src/Tags.js +++ b/recipe-hooks-project/src/Tags.js @@ -30,13 +30,12 @@ function Tags() { const [filterByAssignedToRecipe, toggleFilterByAssignedToRecipe] = useToggle(false); async function fetchTags() { - const headers = {Authorization: "Token " + token}; const response = await axios.request({ url: RECIPE_API_BASE_URL + TAGS_RELATIVE_URL, method: "get", + headers: {Authorization: "Token " + token}, params: { - assigned_only: filterByAssignedToRecipe ? 1 : 0, - headers: headers + assigned_only: filterByAssignedToRecipe ? 1 : 0 } }); const tags = response.data; From eb9d8e3922bb46c61b53689b782e194203b9f134 Mon Sep 17 00:00:00 2001 From: Francesco Venneri Date: Mon, 6 Jul 2020 17:28:32 +0200 Subject: [PATCH 26/31] [RECIPE-PROJECT] Added some logged in checks --- recipe-hooks-project/src/App.js | 4 +- recipe-hooks-project/src/Home.js | 10 ++++- recipe-hooks-project/src/Navbar.js | 34 ++++++++------- recipe-hooks-project/src/PrivateRoutes.js | 41 +++++++++++++++++++ recipe-hooks-project/src/RecipeDetails.js | 14 +++---- recipe-hooks-project/src/Routes.js | 26 ------------ recipe-hooks-project/src/components/Form.js | 2 +- .../src/contexts/AuthenticationProvider.js | 3 +- 8 files changed, 75 insertions(+), 59 deletions(-) create mode 100644 recipe-hooks-project/src/PrivateRoutes.js delete mode 100644 recipe-hooks-project/src/Routes.js diff --git a/recipe-hooks-project/src/App.js b/recipe-hooks-project/src/App.js index 5a64c736..915ceecd 100644 --- a/recipe-hooks-project/src/App.js +++ b/recipe-hooks-project/src/App.js @@ -2,7 +2,7 @@ import React from "react"; import {AuthenticationProvider} from "./contexts/AuthenticationProvider"; import {BrowserRouter, Switch} from "react-router-dom"; import {ThemeProvider} from "styled-components"; -import {Routes} from "./Routes"; +import {PrivateRoutes} from "./PrivateRoutes"; import Navbar from "./Navbar"; import "./App.css"; @@ -16,7 +16,7 @@ function App() {
- +
diff --git a/recipe-hooks-project/src/Home.js b/recipe-hooks-project/src/Home.js index 0b609499..4c8c2dbc 100644 --- a/recipe-hooks-project/src/Home.js +++ b/recipe-hooks-project/src/Home.js @@ -8,7 +8,13 @@ const SplashScreen = styled.div` justify-content: center; align-items: center; flex-direction: column; - height: 100vh; + margin-top: 50px; +`; + +const Image = styled.img.attrs(props => ({ + ...props +}))` + max-width: 70%; `; const AppDescription = styled.div` @@ -22,7 +28,7 @@ const AppDescription = styled.div` export default function Home() { return ( - Patatas bravas + Patatas bravas Use this amazing app to build your own cookbook! diff --git a/recipe-hooks-project/src/Navbar.js b/recipe-hooks-project/src/Navbar.js index 474d11aa..7f84ac3f 100644 --- a/recipe-hooks-project/src/Navbar.js +++ b/recipe-hooks-project/src/Navbar.js @@ -18,24 +18,22 @@ const AppName = styled.div` font-weight: 500; `; -const StyledLink = styled( - styled(Link)` - color: white; - display: block; - margin: 0.5em 0; - font-size: 1em; - - &:hover { - text-decoration: underline; - cursor: pointer; - } - `, - "active" -)` +const StyledLink = styled(Link).attrs(props => ({ + ...props +}))` + color: white; + display: block; + margin: 0.5em 0; + font-size: 1em; + + &:hover { + text-decoration: underline; + cursor: pointer; + } `; export default function Navbar() { - const {logout} = useContext(AuthContext); + const {token, logout} = useContext(AuthContext); function handleLogout(e) { logout(); @@ -43,9 +41,9 @@ export default function Navbar() { return ( - Recipe App - Profile - Logout + Recipe App + {token !== null && Profile} + Logout ); }; \ No newline at end of file diff --git a/recipe-hooks-project/src/PrivateRoutes.js b/recipe-hooks-project/src/PrivateRoutes.js new file mode 100644 index 00000000..7b300723 --- /dev/null +++ b/recipe-hooks-project/src/PrivateRoutes.js @@ -0,0 +1,41 @@ +import React, {useContext} from "react"; +import {Redirect, Route} from "react-router-dom"; +import AppPage from "./AppPage"; +import Home from "./Home"; +import Register from "./Register"; +import Profile from "./Profile"; +import Ingredients from "./Ingredients"; +import Tags from "./Tags"; +import Recipes from "./Recipes"; +import RecipeDetails from "./RecipeDetails"; +import {AuthContext} from "./contexts/AuthenticationProvider"; + +export function PrivateRoutes() { + const {token} = useContext(AuthContext); + + return ( + + token !== null + ? (<> + }/> + + + + + + + + + ) + : (<> + + + + + + ) + } + /> + ); +} \ No newline at end of file diff --git a/recipe-hooks-project/src/RecipeDetails.js b/recipe-hooks-project/src/RecipeDetails.js index 9ae518c3..5b5ca30f 100644 --- a/recipe-hooks-project/src/RecipeDetails.js +++ b/recipe-hooks-project/src/RecipeDetails.js @@ -70,10 +70,8 @@ export default function RecipeDetails(props) { const response = await axios.request({ url: RECIPE_API_BASE_URL + RECIPES_RELATIVE_URL + props.match.params.id, method: "get", - params: { - headers: { - Authorization: "Token " + token - } + headers: { + Authorization: "Token " + token } }); const recipe = response.data; @@ -83,7 +81,7 @@ export default function RecipeDetails(props) { useEffect(() => { fetchRecipe(); - }); + }, []); function handleChangeImage(e) { e.preventDefault(); @@ -98,10 +96,8 @@ export default function RecipeDetails(props) { url: RECIPE_API_BASE_URL + RECIPES_RELATIVE_URL + props.match.params.id + "/upload-image/", method: "post", data: formData, - params: { - headers: { - Authorization: "Token " + token - } + headers: { + Authorization: "Token " + token } }); if (response.status === 200) { diff --git a/recipe-hooks-project/src/Routes.js b/recipe-hooks-project/src/Routes.js deleted file mode 100644 index 18fd76b7..00000000 --- a/recipe-hooks-project/src/Routes.js +++ /dev/null @@ -1,26 +0,0 @@ -import React from "react"; -import {Route} from "react-router-dom"; -import AppPage from "./AppPage"; -import Home from "./Home"; -import Register from "./Register"; -import Profile from "./Profile"; -import Ingredients from "./Ingredients"; -import Tags from "./Tags"; -import Recipes from "./Recipes"; -import RecipeDetails from "./RecipeDetails"; - -export function Routes() { - return ( - <> - }/> - - - - - - - - - - ); -} \ No newline at end of file diff --git a/recipe-hooks-project/src/components/Form.js b/recipe-hooks-project/src/components/Form.js index fab6cf93..5f80cc9e 100644 --- a/recipe-hooks-project/src/components/Form.js +++ b/recipe-hooks-project/src/components/Form.js @@ -1,8 +1,8 @@ import styled from "styled-components"; const Container = styled.div` - height: 100vh; display: flex; + margin-top: 50px; `; const FormTitle = styled.h3` diff --git a/recipe-hooks-project/src/contexts/AuthenticationProvider.js b/recipe-hooks-project/src/contexts/AuthenticationProvider.js index 4d308e4a..5ab0c9bb 100644 --- a/recipe-hooks-project/src/contexts/AuthenticationProvider.js +++ b/recipe-hooks-project/src/contexts/AuthenticationProvider.js @@ -11,7 +11,8 @@ export function AuthenticationProvider(props) { const logout = () => { console.log("Logging out token " + token) setToken(null); - } + }; + return ( {props.children} From 1b4f8cd0057b5365fd93298cb009eb919f9f6665 Mon Sep 17 00:00:00 2001 From: Francesco Venneri Date: Tue, 7 Jul 2020 09:08:16 +0200 Subject: [PATCH 27/31] [RECIPE-PROJECT] Some cleaning --- recipe-hooks-project/src/AppPage.test.js | 32 +++++++++++------------ recipe-hooks-project/src/Register.test.js | 3 --- 2 files changed, 16 insertions(+), 19 deletions(-) diff --git a/recipe-hooks-project/src/AppPage.test.js b/recipe-hooks-project/src/AppPage.test.js index 23ea5cfa..8f264059 100644 --- a/recipe-hooks-project/src/AppPage.test.js +++ b/recipe-hooks-project/src/AppPage.test.js @@ -15,12 +15,12 @@ test("when not authenticated, renders login", () => { expect(container.querySelector("h3")).toHaveTextContent("Login"); }); -test("when authenticated, do not render login and render the app instead", () => { - const {container} = renderAppPageWithToken("myToken"); - - expect(container.querySelector("input[name=email]")).toBeNull(); - assertAppIsRenderedProperly(container); -}); +// test("when authenticated, do not render login and render the app instead", () => { +// const {container} = renderAppPageWithToken("myToken"); +// +// expect(container.querySelector("input[name=email]")).toBeNull(); +// assertAppIsRenderedProperly(container); +// }); test("when not authenticated, an user can login", () => { const {container, getByText} = renderAppPageWithToken(null); @@ -46,16 +46,16 @@ test("login fails", () => { expect(container.querySelector("input[name=email]")).toBeInTheDocument(); }); -test("an user can logout", () => { - const {container} = renderAppPageWithToken("myToken"); - - fireEvent.click(container.querySelector("div[name=Navbar] a[name=Logout]")); - - setTimeout(async () => { - expect(await waitForElement(() => container.querySelector("form h3"), {timeout: 1000})) - .toHaveTextContent("Login"); - }, 1000); -}); +// test("an user can logout", () => { +// const {container} = renderAppPageWithToken("myToken"); +// +// fireEvent.click(container.querySelector("div[name=Navbar] a[name=Logout]")); +// +// setTimeout(async () => { +// expect(await waitForElement(() => container.querySelector("form h3"), {timeout: 1000})) +// .toHaveTextContent("Login"); +// }, 1000); +// }); test("creates an user and redirects to login", async () => { const {container, getByText} = renderAppPageWithToken(null); diff --git a/recipe-hooks-project/src/Register.test.js b/recipe-hooks-project/src/Register.test.js index a8c6157a..ef07da5b 100644 --- a/recipe-hooks-project/src/Register.test.js +++ b/recipe-hooks-project/src/Register.test.js @@ -2,11 +2,8 @@ import React from "react"; import {render} from "@testing-library/react"; import {AuthenticationProvider} from "./contexts/AuthenticationProvider"; import {BrowserRouter} from "react-router-dom"; -import axios from "axios"; import Register from "./Register"; -jest.mock("axios"); - test("renders the page", () => { const {container} = renderRegisterComponent(); From 0909e951756cf34aaf669832a957cba1220205be Mon Sep 17 00:00:00 2001 From: Francesco Venneri Date: Tue, 7 Jul 2020 12:20:55 +0200 Subject: [PATCH 28/31] [RECIPE-PROJECT] Added react-scripts, useful for testing purposes --- recipe-hooks-project/package-lock.json | 2247 ++++++++++++++++++------ recipe-hooks-project/package.json | 2 +- 2 files changed, 1712 insertions(+), 537 deletions(-) diff --git a/recipe-hooks-project/package-lock.json b/recipe-hooks-project/package-lock.json index ad723b5a..aabbd17c 100644 --- a/recipe-hooks-project/package-lock.json +++ b/recipe-hooks-project/package-lock.json @@ -13,9 +13,9 @@ } }, "@babel/compat-data": { - "version": "7.10.3", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.10.3.tgz", - "integrity": "sha512-BDIfJ9uNZuI0LajPfoYV28lX8kyCPMHY6uY4WH1lJdcicmAfxCK5ASzaeV0D/wsUaRH/cLk+amuxtC37sZ8TUg==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.10.4.tgz", + "integrity": "sha512-t+rjExOrSVvjQQXNp5zAIYDp00KjdvGl/TpDX5REPr0S9IAIPQMTilcfG6q8c0QFmj9lSTVySV2VTsyggvtNIw==", "requires": { "browserslist": "^4.12.0", "invariant": "^2.2.4", @@ -79,39 +79,114 @@ } }, "@babel/helper-builder-binary-assignment-operator-visitor": { - "version": "7.10.3", - "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.10.3.tgz", - "integrity": "sha512-lo4XXRnBlU6eRM92FkiZxpo1xFLmv3VsPFk61zJKMm7XYJfwqXHsYJTY6agoc4a3L8QPw1HqWehO18coZgbT6A==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.10.4.tgz", + "integrity": "sha512-L0zGlFrGWZK4PbT8AszSfLTM5sDU1+Az/En9VrdT8/LmEiJt4zXt+Jve9DCAnQcbqDhCI+29y/L93mrDzddCcg==", "requires": { - "@babel/helper-explode-assignable-expression": "^7.10.3", - "@babel/types": "^7.10.3" + "@babel/helper-explode-assignable-expression": "^7.10.4", + "@babel/types": "^7.10.4" + }, + "dependencies": { + "@babel/helper-validator-identifier": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.4.tgz", + "integrity": "sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw==" + }, + "@babel/types": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.10.4.tgz", + "integrity": "sha512-UTCFOxC3FsFHb7lkRMVvgLzaRVamXuAs2Tz4wajva4WxtVY82eZeaUBtC2Zt95FU9TiznuC0Zk35tsim8jeVpg==", + "requires": { + "@babel/helper-validator-identifier": "^7.10.4", + "lodash": "^4.17.13", + "to-fast-properties": "^2.0.0" + } + } } }, "@babel/helper-builder-react-jsx": { - "version": "7.10.3", - "resolved": "https://registry.npmjs.org/@babel/helper-builder-react-jsx/-/helper-builder-react-jsx-7.10.3.tgz", - "integrity": "sha512-vkxmuFvmovtqTZknyMGj9+uQAZzz5Z9mrbnkJnPkaYGfKTaSsYcjQdXP0lgrWLVh8wU6bCjOmXOpx+kqUi+S5Q==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-builder-react-jsx/-/helper-builder-react-jsx-7.10.4.tgz", + "integrity": "sha512-5nPcIZ7+KKDxT1427oBivl9V9YTal7qk0diccnh7RrcgrT/pGFOjgGw1dgryyx1GvHEpXVfoDF6Ak3rTiWh8Rg==", "requires": { - "@babel/helper-annotate-as-pure": "^7.10.1", - "@babel/types": "^7.10.3" + "@babel/helper-annotate-as-pure": "^7.10.4", + "@babel/types": "^7.10.4" + }, + "dependencies": { + "@babel/helper-annotate-as-pure": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.10.4.tgz", + "integrity": "sha512-XQlqKQP4vXFB7BN8fEEerrmYvHp3fK/rBkRFz9jaJbzK0B1DSfej9Kc7ZzE8Z/OnId1jpJdNAZ3BFQjWG68rcA==", + "requires": { + "@babel/types": "^7.10.4" + } + }, + "@babel/helper-validator-identifier": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.4.tgz", + "integrity": "sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw==" + }, + "@babel/types": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.10.4.tgz", + "integrity": "sha512-UTCFOxC3FsFHb7lkRMVvgLzaRVamXuAs2Tz4wajva4WxtVY82eZeaUBtC2Zt95FU9TiznuC0Zk35tsim8jeVpg==", + "requires": { + "@babel/helper-validator-identifier": "^7.10.4", + "lodash": "^4.17.13", + "to-fast-properties": "^2.0.0" + } + } } }, "@babel/helper-builder-react-jsx-experimental": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/helper-builder-react-jsx-experimental/-/helper-builder-react-jsx-experimental-7.10.1.tgz", - "integrity": "sha512-irQJ8kpQUV3JasXPSFQ+LCCtJSc5ceZrPFVj6TElR6XCHssi3jV8ch3odIrNtjJFRZZVbrOEfJMI79TPU/h1pQ==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-builder-react-jsx-experimental/-/helper-builder-react-jsx-experimental-7.10.4.tgz", + "integrity": "sha512-LyacH/kgQPgLAuaWrvvq1+E7f5bLyT8jXCh7nM67sRsy2cpIGfgWJ+FCnAKQXfY+F0tXUaN6FqLkp4JiCzdK8Q==", "requires": { - "@babel/helper-annotate-as-pure": "^7.10.1", - "@babel/helper-module-imports": "^7.10.1", - "@babel/types": "^7.10.1" + "@babel/helper-annotate-as-pure": "^7.10.4", + "@babel/helper-module-imports": "^7.10.4", + "@babel/types": "^7.10.4" + }, + "dependencies": { + "@babel/helper-annotate-as-pure": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.10.4.tgz", + "integrity": "sha512-XQlqKQP4vXFB7BN8fEEerrmYvHp3fK/rBkRFz9jaJbzK0B1DSfej9Kc7ZzE8Z/OnId1jpJdNAZ3BFQjWG68rcA==", + "requires": { + "@babel/types": "^7.10.4" + } + }, + "@babel/helper-module-imports": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.10.4.tgz", + "integrity": "sha512-nEQJHqYavI217oD9+s5MUBzk6x1IlvoS9WTPfgG43CbMEeStE0v+r+TucWdx8KFGowPGvyOkDT9+7DHedIDnVw==", + "requires": { + "@babel/types": "^7.10.4" + } + }, + "@babel/helper-validator-identifier": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.4.tgz", + "integrity": "sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw==" + }, + "@babel/types": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.10.4.tgz", + "integrity": "sha512-UTCFOxC3FsFHb7lkRMVvgLzaRVamXuAs2Tz4wajva4WxtVY82eZeaUBtC2Zt95FU9TiznuC0Zk35tsim8jeVpg==", + "requires": { + "@babel/helper-validator-identifier": "^7.10.4", + "lodash": "^4.17.13", + "to-fast-properties": "^2.0.0" + } + } } }, "@babel/helper-compilation-targets": { - "version": "7.10.2", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.10.2.tgz", - "integrity": "sha512-hYgOhF4To2UTB4LTaZepN/4Pl9LD4gfbJx8A34mqoluT8TLbof1mhUlYuNWTEebONa8+UlCC4X0TEXu7AOUyGA==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.10.4.tgz", + "integrity": "sha512-a3rYhlsGV0UHNDvrtOXBg8/OpfV0OKTkxKPzIplS1zpx7CygDcWWxckxZeDd3gzPzC4kUT0A4nVFDK0wGMh4MQ==", "requires": { - "@babel/compat-data": "^7.10.1", + "@babel/compat-data": "^7.10.4", "browserslist": "^4.12.0", "invariant": "^2.2.4", "levenary": "^1.1.1", @@ -126,45 +201,317 @@ } }, "@babel/helper-create-class-features-plugin": { - "version": "7.10.3", - "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.10.3.tgz", - "integrity": "sha512-iRT9VwqtdFmv7UheJWthGc/h2s7MqoweBF9RUj77NFZsg9VfISvBTum3k6coAhJ8RWv2tj3yUjA03HxPd0vfpQ==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.10.4.tgz", + "integrity": "sha512-9raUiOsXPxzzLjCXeosApJItoMnX3uyT4QdM2UldffuGApNrF8e938MwNpDCK9CPoyxrEoCgT+hObJc3mZa6lQ==", "requires": { - "@babel/helper-function-name": "^7.10.3", - "@babel/helper-member-expression-to-functions": "^7.10.3", - "@babel/helper-optimise-call-expression": "^7.10.3", - "@babel/helper-plugin-utils": "^7.10.3", - "@babel/helper-replace-supers": "^7.10.1", - "@babel/helper-split-export-declaration": "^7.10.1" + "@babel/helper-function-name": "^7.10.4", + "@babel/helper-member-expression-to-functions": "^7.10.4", + "@babel/helper-optimise-call-expression": "^7.10.4", + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/helper-replace-supers": "^7.10.4", + "@babel/helper-split-export-declaration": "^7.10.4" + }, + "dependencies": { + "@babel/code-frame": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.10.4.tgz", + "integrity": "sha512-vG6SvB6oYEhvgisZNFRmRCUkLz11c7rp+tbNTynGqc6mS1d5ATd/sGyV6W0KZZnXRKMTzZDRgQT3Ou9jhpAfUg==", + "requires": { + "@babel/highlight": "^7.10.4" + } + }, + "@babel/helper-function-name": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.10.4.tgz", + "integrity": "sha512-YdaSyz1n8gY44EmN7x44zBn9zQ1Ry2Y+3GTA+3vH6Mizke1Vw0aWDM66FOYEPw8//qKkmqOckrGgTYa+6sceqQ==", + "requires": { + "@babel/helper-get-function-arity": "^7.10.4", + "@babel/template": "^7.10.4", + "@babel/types": "^7.10.4" + } + }, + "@babel/helper-get-function-arity": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.10.4.tgz", + "integrity": "sha512-EkN3YDB+SRDgiIUnNgcmiD361ti+AVbL3f3Henf6dqqUyr5dMsorno0lJWJuLhDhkI5sYEpgj6y9kB8AOU1I2A==", + "requires": { + "@babel/types": "^7.10.4" + } + }, + "@babel/helper-split-export-declaration": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.10.4.tgz", + "integrity": "sha512-pySBTeoUff56fL5CBU2hWm9TesA4r/rOkI9DyJLvvgz09MB9YtfIYe3iBriVaYNaPe+Alua0vBIOVOLs2buWhg==", + "requires": { + "@babel/types": "^7.10.4" + } + }, + "@babel/helper-validator-identifier": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.4.tgz", + "integrity": "sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw==" + }, + "@babel/highlight": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.10.4.tgz", + "integrity": "sha512-i6rgnR/YgPEQzZZnbTHHuZdlE8qyoBNalD6F+q4vAFlcMEcqmkoG+mPqJYJCo63qPf74+Y1UZsl3l6f7/RIkmA==", + "requires": { + "@babel/helper-validator-identifier": "^7.10.4", + "chalk": "^2.0.0", + "js-tokens": "^4.0.0" + } + }, + "@babel/parser": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.10.4.tgz", + "integrity": "sha512-8jHII4hf+YVDsskTF6WuMB3X4Eh+PsUkC2ljq22so5rHvH+T8BzyL94VOdyFLNR8tBSVXOTbNHOKpR4TfRxVtA==" + }, + "@babel/template": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.10.4.tgz", + "integrity": "sha512-ZCjD27cGJFUB6nmCB1Enki3r+L5kJveX9pq1SvAUKoICy6CZ9yD8xO086YXdYhvNjBdnekm4ZnaP5yC8Cs/1tA==", + "requires": { + "@babel/code-frame": "^7.10.4", + "@babel/parser": "^7.10.4", + "@babel/types": "^7.10.4" + } + }, + "@babel/types": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.10.4.tgz", + "integrity": "sha512-UTCFOxC3FsFHb7lkRMVvgLzaRVamXuAs2Tz4wajva4WxtVY82eZeaUBtC2Zt95FU9TiznuC0Zk35tsim8jeVpg==", + "requires": { + "@babel/helper-validator-identifier": "^7.10.4", + "lodash": "^4.17.13", + "to-fast-properties": "^2.0.0" + } + } } }, "@babel/helper-create-regexp-features-plugin": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.10.1.tgz", - "integrity": "sha512-Rx4rHS0pVuJn5pJOqaqcZR4XSgeF9G/pO/79t+4r7380tXFJdzImFnxMU19f83wjSrmKHq6myrM10pFHTGzkUA==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.10.4.tgz", + "integrity": "sha512-2/hu58IEPKeoLF45DBwx3XFqsbCXmkdAay4spVr2x0jYgRxrSNp+ePwvSsy9g6YSaNDcKIQVPXk1Ov8S2edk2g==", "requires": { - "@babel/helper-annotate-as-pure": "^7.10.1", - "@babel/helper-regex": "^7.10.1", + "@babel/helper-annotate-as-pure": "^7.10.4", + "@babel/helper-regex": "^7.10.4", "regexpu-core": "^4.7.0" + }, + "dependencies": { + "@babel/helper-annotate-as-pure": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.10.4.tgz", + "integrity": "sha512-XQlqKQP4vXFB7BN8fEEerrmYvHp3fK/rBkRFz9jaJbzK0B1DSfej9Kc7ZzE8Z/OnId1jpJdNAZ3BFQjWG68rcA==", + "requires": { + "@babel/types": "^7.10.4" + } + }, + "@babel/helper-validator-identifier": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.4.tgz", + "integrity": "sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw==" + }, + "@babel/types": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.10.4.tgz", + "integrity": "sha512-UTCFOxC3FsFHb7lkRMVvgLzaRVamXuAs2Tz4wajva4WxtVY82eZeaUBtC2Zt95FU9TiznuC0Zk35tsim8jeVpg==", + "requires": { + "@babel/helper-validator-identifier": "^7.10.4", + "lodash": "^4.17.13", + "to-fast-properties": "^2.0.0" + } + } } }, "@babel/helper-define-map": { - "version": "7.10.3", - "resolved": "https://registry.npmjs.org/@babel/helper-define-map/-/helper-define-map-7.10.3.tgz", - "integrity": "sha512-bxRzDi4Sin/k0drWCczppOhov1sBSdBvXJObM1NLHQzjhXhwRtn7aRWGvLJWCYbuu2qUk3EKs6Ci9C9ps8XokQ==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-define-map/-/helper-define-map-7.10.4.tgz", + "integrity": "sha512-nIij0oKErfCnLUCWaCaHW0Bmtl2RO9cN7+u2QT8yqTywgALKlyUVOvHDElh+b5DwVC6YB1FOYFOTWcN/+41EDA==", "requires": { - "@babel/helper-function-name": "^7.10.3", - "@babel/types": "^7.10.3", + "@babel/helper-function-name": "^7.10.4", + "@babel/types": "^7.10.4", "lodash": "^4.17.13" + }, + "dependencies": { + "@babel/code-frame": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.10.4.tgz", + "integrity": "sha512-vG6SvB6oYEhvgisZNFRmRCUkLz11c7rp+tbNTynGqc6mS1d5ATd/sGyV6W0KZZnXRKMTzZDRgQT3Ou9jhpAfUg==", + "requires": { + "@babel/highlight": "^7.10.4" + } + }, + "@babel/helper-function-name": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.10.4.tgz", + "integrity": "sha512-YdaSyz1n8gY44EmN7x44zBn9zQ1Ry2Y+3GTA+3vH6Mizke1Vw0aWDM66FOYEPw8//qKkmqOckrGgTYa+6sceqQ==", + "requires": { + "@babel/helper-get-function-arity": "^7.10.4", + "@babel/template": "^7.10.4", + "@babel/types": "^7.10.4" + } + }, + "@babel/helper-get-function-arity": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.10.4.tgz", + "integrity": "sha512-EkN3YDB+SRDgiIUnNgcmiD361ti+AVbL3f3Henf6dqqUyr5dMsorno0lJWJuLhDhkI5sYEpgj6y9kB8AOU1I2A==", + "requires": { + "@babel/types": "^7.10.4" + } + }, + "@babel/helper-validator-identifier": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.4.tgz", + "integrity": "sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw==" + }, + "@babel/highlight": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.10.4.tgz", + "integrity": "sha512-i6rgnR/YgPEQzZZnbTHHuZdlE8qyoBNalD6F+q4vAFlcMEcqmkoG+mPqJYJCo63qPf74+Y1UZsl3l6f7/RIkmA==", + "requires": { + "@babel/helper-validator-identifier": "^7.10.4", + "chalk": "^2.0.0", + "js-tokens": "^4.0.0" + } + }, + "@babel/parser": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.10.4.tgz", + "integrity": "sha512-8jHII4hf+YVDsskTF6WuMB3X4Eh+PsUkC2ljq22so5rHvH+T8BzyL94VOdyFLNR8tBSVXOTbNHOKpR4TfRxVtA==" + }, + "@babel/template": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.10.4.tgz", + "integrity": "sha512-ZCjD27cGJFUB6nmCB1Enki3r+L5kJveX9pq1SvAUKoICy6CZ9yD8xO086YXdYhvNjBdnekm4ZnaP5yC8Cs/1tA==", + "requires": { + "@babel/code-frame": "^7.10.4", + "@babel/parser": "^7.10.4", + "@babel/types": "^7.10.4" + } + }, + "@babel/types": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.10.4.tgz", + "integrity": "sha512-UTCFOxC3FsFHb7lkRMVvgLzaRVamXuAs2Tz4wajva4WxtVY82eZeaUBtC2Zt95FU9TiznuC0Zk35tsim8jeVpg==", + "requires": { + "@babel/helper-validator-identifier": "^7.10.4", + "lodash": "^4.17.13", + "to-fast-properties": "^2.0.0" + } + } } }, "@babel/helper-explode-assignable-expression": { - "version": "7.10.3", - "resolved": "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.10.3.tgz", - "integrity": "sha512-0nKcR64XrOC3lsl+uhD15cwxPvaB6QKUDlD84OT9C3myRbhJqTMYir69/RWItUvHpharv0eJ/wk7fl34ONSwZw==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.10.4.tgz", + "integrity": "sha512-4K71RyRQNPRrR85sr5QY4X3VwG4wtVoXZB9+L3r1Gp38DhELyHCtovqydRi7c1Ovb17eRGiQ/FD5s8JdU0Uy5A==", "requires": { - "@babel/traverse": "^7.10.3", - "@babel/types": "^7.10.3" + "@babel/traverse": "^7.10.4", + "@babel/types": "^7.10.4" + }, + "dependencies": { + "@babel/code-frame": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.10.4.tgz", + "integrity": "sha512-vG6SvB6oYEhvgisZNFRmRCUkLz11c7rp+tbNTynGqc6mS1d5ATd/sGyV6W0KZZnXRKMTzZDRgQT3Ou9jhpAfUg==", + "requires": { + "@babel/highlight": "^7.10.4" + } + }, + "@babel/generator": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.10.4.tgz", + "integrity": "sha512-toLIHUIAgcQygFZRAQcsLQV3CBuX6yOIru1kJk/qqqvcRmZrYe6WavZTSG+bB8MxhnL9YPf+pKQfuiP161q7ng==", + "requires": { + "@babel/types": "^7.10.4", + "jsesc": "^2.5.1", + "lodash": "^4.17.13", + "source-map": "^0.5.0" + } + }, + "@babel/helper-function-name": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.10.4.tgz", + "integrity": "sha512-YdaSyz1n8gY44EmN7x44zBn9zQ1Ry2Y+3GTA+3vH6Mizke1Vw0aWDM66FOYEPw8//qKkmqOckrGgTYa+6sceqQ==", + "requires": { + "@babel/helper-get-function-arity": "^7.10.4", + "@babel/template": "^7.10.4", + "@babel/types": "^7.10.4" + } + }, + "@babel/helper-get-function-arity": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.10.4.tgz", + "integrity": "sha512-EkN3YDB+SRDgiIUnNgcmiD361ti+AVbL3f3Henf6dqqUyr5dMsorno0lJWJuLhDhkI5sYEpgj6y9kB8AOU1I2A==", + "requires": { + "@babel/types": "^7.10.4" + } + }, + "@babel/helper-split-export-declaration": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.10.4.tgz", + "integrity": "sha512-pySBTeoUff56fL5CBU2hWm9TesA4r/rOkI9DyJLvvgz09MB9YtfIYe3iBriVaYNaPe+Alua0vBIOVOLs2buWhg==", + "requires": { + "@babel/types": "^7.10.4" + } + }, + "@babel/helper-validator-identifier": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.4.tgz", + "integrity": "sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw==" + }, + "@babel/highlight": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.10.4.tgz", + "integrity": "sha512-i6rgnR/YgPEQzZZnbTHHuZdlE8qyoBNalD6F+q4vAFlcMEcqmkoG+mPqJYJCo63qPf74+Y1UZsl3l6f7/RIkmA==", + "requires": { + "@babel/helper-validator-identifier": "^7.10.4", + "chalk": "^2.0.0", + "js-tokens": "^4.0.0" + } + }, + "@babel/parser": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.10.4.tgz", + "integrity": "sha512-8jHII4hf+YVDsskTF6WuMB3X4Eh+PsUkC2ljq22so5rHvH+T8BzyL94VOdyFLNR8tBSVXOTbNHOKpR4TfRxVtA==" + }, + "@babel/template": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.10.4.tgz", + "integrity": "sha512-ZCjD27cGJFUB6nmCB1Enki3r+L5kJveX9pq1SvAUKoICy6CZ9yD8xO086YXdYhvNjBdnekm4ZnaP5yC8Cs/1tA==", + "requires": { + "@babel/code-frame": "^7.10.4", + "@babel/parser": "^7.10.4", + "@babel/types": "^7.10.4" + } + }, + "@babel/traverse": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.10.4.tgz", + "integrity": "sha512-aSy7p5THgSYm4YyxNGz6jZpXf+Ok40QF3aA2LyIONkDHpAcJzDUqlCKXv6peqYUs2gmic849C/t2HKw2a2K20Q==", + "requires": { + "@babel/code-frame": "^7.10.4", + "@babel/generator": "^7.10.4", + "@babel/helper-function-name": "^7.10.4", + "@babel/helper-split-export-declaration": "^7.10.4", + "@babel/parser": "^7.10.4", + "@babel/types": "^7.10.4", + "debug": "^4.1.0", + "globals": "^11.1.0", + "lodash": "^4.17.13" + } + }, + "@babel/types": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.10.4.tgz", + "integrity": "sha512-UTCFOxC3FsFHb7lkRMVvgLzaRVamXuAs2Tz4wajva4WxtVY82eZeaUBtC2Zt95FU9TiznuC0Zk35tsim8jeVpg==", + "requires": { + "@babel/helper-validator-identifier": "^7.10.4", + "lodash": "^4.17.13", + "to-fast-properties": "^2.0.0" + } + } } }, "@babel/helper-function-name": { @@ -186,19 +533,53 @@ } }, "@babel/helper-hoist-variables": { - "version": "7.10.3", - "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.10.3.tgz", - "integrity": "sha512-9JyafKoBt5h20Yv1+BXQMdcXXavozI1vt401KBiRc2qzUepbVnd7ogVNymY1xkQN9fekGwfxtotH2Yf5xsGzgg==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.10.4.tgz", + "integrity": "sha512-wljroF5PgCk2juF69kanHVs6vrLwIPNp6DLD+Lrl3hoQ3PpPPikaDRNFA+0t81NOoMt2DL6WW/mdU8k4k6ZzuA==", "requires": { - "@babel/types": "^7.10.3" + "@babel/types": "^7.10.4" + }, + "dependencies": { + "@babel/helper-validator-identifier": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.4.tgz", + "integrity": "sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw==" + }, + "@babel/types": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.10.4.tgz", + "integrity": "sha512-UTCFOxC3FsFHb7lkRMVvgLzaRVamXuAs2Tz4wajva4WxtVY82eZeaUBtC2Zt95FU9TiznuC0Zk35tsim8jeVpg==", + "requires": { + "@babel/helper-validator-identifier": "^7.10.4", + "lodash": "^4.17.13", + "to-fast-properties": "^2.0.0" + } + } } }, "@babel/helper-member-expression-to-functions": { - "version": "7.10.3", - "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.10.3.tgz", - "integrity": "sha512-q7+37c4EPLSjNb2NmWOjNwj0+BOyYlssuQ58kHEWk1Z78K5i8vTUsteq78HMieRPQSl/NtpQyJfdjt3qZ5V2vw==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.10.4.tgz", + "integrity": "sha512-m5j85pK/KZhuSdM/8cHUABQTAslV47OjfIB9Cc7P+PvlAoBzdb79BGNfw8RhT5Mq3p+xGd0ZfAKixbrUZx0C7A==", "requires": { - "@babel/types": "^7.10.3" + "@babel/types": "^7.10.4" + }, + "dependencies": { + "@babel/helper-validator-identifier": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.4.tgz", + "integrity": "sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw==" + }, + "@babel/types": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.10.4.tgz", + "integrity": "sha512-UTCFOxC3FsFHb7lkRMVvgLzaRVamXuAs2Tz4wajva4WxtVY82eZeaUBtC2Zt95FU9TiznuC0Zk35tsim8jeVpg==", + "requires": { + "@babel/helper-validator-identifier": "^7.10.4", + "lodash": "^4.17.13", + "to-fast-properties": "^2.0.0" + } + } } }, "@babel/helper-module-imports": { @@ -210,70 +591,417 @@ } }, "@babel/helper-module-transforms": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.10.1.tgz", - "integrity": "sha512-RLHRCAzyJe7Q7sF4oy2cB+kRnU4wDZY/H2xJFGof+M+SJEGhZsb+GFj5j1AD8NiSaVBJ+Pf0/WObiXu/zxWpFg==", - "requires": { - "@babel/helper-module-imports": "^7.10.1", - "@babel/helper-replace-supers": "^7.10.1", - "@babel/helper-simple-access": "^7.10.1", - "@babel/helper-split-export-declaration": "^7.10.1", - "@babel/template": "^7.10.1", - "@babel/types": "^7.10.1", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.10.4.tgz", + "integrity": "sha512-Er2FQX0oa3nV7eM1o0tNCTx7izmQtwAQsIiaLRWtavAAEcskb0XJ5OjJbVrYXWOTr8om921Scabn4/tzlx7j1Q==", + "requires": { + "@babel/helper-module-imports": "^7.10.4", + "@babel/helper-replace-supers": "^7.10.4", + "@babel/helper-simple-access": "^7.10.4", + "@babel/helper-split-export-declaration": "^7.10.4", + "@babel/template": "^7.10.4", + "@babel/types": "^7.10.4", "lodash": "^4.17.13" + }, + "dependencies": { + "@babel/code-frame": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.10.4.tgz", + "integrity": "sha512-vG6SvB6oYEhvgisZNFRmRCUkLz11c7rp+tbNTynGqc6mS1d5ATd/sGyV6W0KZZnXRKMTzZDRgQT3Ou9jhpAfUg==", + "requires": { + "@babel/highlight": "^7.10.4" + } + }, + "@babel/helper-module-imports": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.10.4.tgz", + "integrity": "sha512-nEQJHqYavI217oD9+s5MUBzk6x1IlvoS9WTPfgG43CbMEeStE0v+r+TucWdx8KFGowPGvyOkDT9+7DHedIDnVw==", + "requires": { + "@babel/types": "^7.10.4" + } + }, + "@babel/helper-split-export-declaration": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.10.4.tgz", + "integrity": "sha512-pySBTeoUff56fL5CBU2hWm9TesA4r/rOkI9DyJLvvgz09MB9YtfIYe3iBriVaYNaPe+Alua0vBIOVOLs2buWhg==", + "requires": { + "@babel/types": "^7.10.4" + } + }, + "@babel/helper-validator-identifier": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.4.tgz", + "integrity": "sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw==" + }, + "@babel/highlight": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.10.4.tgz", + "integrity": "sha512-i6rgnR/YgPEQzZZnbTHHuZdlE8qyoBNalD6F+q4vAFlcMEcqmkoG+mPqJYJCo63qPf74+Y1UZsl3l6f7/RIkmA==", + "requires": { + "@babel/helper-validator-identifier": "^7.10.4", + "chalk": "^2.0.0", + "js-tokens": "^4.0.0" + } + }, + "@babel/parser": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.10.4.tgz", + "integrity": "sha512-8jHII4hf+YVDsskTF6WuMB3X4Eh+PsUkC2ljq22so5rHvH+T8BzyL94VOdyFLNR8tBSVXOTbNHOKpR4TfRxVtA==" + }, + "@babel/template": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.10.4.tgz", + "integrity": "sha512-ZCjD27cGJFUB6nmCB1Enki3r+L5kJveX9pq1SvAUKoICy6CZ9yD8xO086YXdYhvNjBdnekm4ZnaP5yC8Cs/1tA==", + "requires": { + "@babel/code-frame": "^7.10.4", + "@babel/parser": "^7.10.4", + "@babel/types": "^7.10.4" + } + }, + "@babel/types": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.10.4.tgz", + "integrity": "sha512-UTCFOxC3FsFHb7lkRMVvgLzaRVamXuAs2Tz4wajva4WxtVY82eZeaUBtC2Zt95FU9TiznuC0Zk35tsim8jeVpg==", + "requires": { + "@babel/helper-validator-identifier": "^7.10.4", + "lodash": "^4.17.13", + "to-fast-properties": "^2.0.0" + } + } } }, "@babel/helper-optimise-call-expression": { - "version": "7.10.3", - "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.10.3.tgz", - "integrity": "sha512-kT2R3VBH/cnSz+yChKpaKRJQJWxdGoc6SjioRId2wkeV3bK0wLLioFpJROrX0U4xr/NmxSSAWT/9Ih5snwIIzg==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.10.4.tgz", + "integrity": "sha512-n3UGKY4VXwXThEiKrgRAoVPBMqeoPgHVqiHZOanAJCG9nQUL2pLRQirUzl0ioKclHGpGqRgIOkgcIJaIWLpygg==", "requires": { - "@babel/types": "^7.10.3" + "@babel/types": "^7.10.4" + }, + "dependencies": { + "@babel/helper-validator-identifier": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.4.tgz", + "integrity": "sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw==" + }, + "@babel/types": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.10.4.tgz", + "integrity": "sha512-UTCFOxC3FsFHb7lkRMVvgLzaRVamXuAs2Tz4wajva4WxtVY82eZeaUBtC2Zt95FU9TiznuC0Zk35tsim8jeVpg==", + "requires": { + "@babel/helper-validator-identifier": "^7.10.4", + "lodash": "^4.17.13", + "to-fast-properties": "^2.0.0" + } + } } }, "@babel/helper-plugin-utils": { - "version": "7.10.3", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.10.3.tgz", - "integrity": "sha512-j/+j8NAWUTxOtx4LKHybpSClxHoq6I91DQ/mKgAXn5oNUPIUiGppjPIX3TDtJWPrdfP9Kfl7e4fgVMiQR9VE/g==" + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.10.4.tgz", + "integrity": "sha512-O4KCvQA6lLiMU9l2eawBPMf1xPP8xPfB3iEQw150hOVTqj/rfXz0ThTb4HEzqQfs2Bmo5Ay8BzxfzVtBrr9dVg==" }, "@babel/helper-regex": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/helper-regex/-/helper-regex-7.10.1.tgz", - "integrity": "sha512-7isHr19RsIJWWLLFn21ubFt223PjQyg1HY7CZEMRr820HttHPpVvrsIN3bUOo44DEfFV4kBXO7Abbn9KTUZV7g==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-regex/-/helper-regex-7.10.4.tgz", + "integrity": "sha512-inWpnHGgtg5NOF0eyHlC0/74/VkdRITY9dtTpB2PrxKKn+AkVMRiZz/Adrx+Ssg+MLDesi2zohBW6MVq6b4pOQ==", "requires": { "lodash": "^4.17.13" } }, "@babel/helper-remap-async-to-generator": { - "version": "7.10.3", - "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.10.3.tgz", - "integrity": "sha512-sLB7666ARbJUGDO60ZormmhQOyqMX/shKBXZ7fy937s+3ID8gSrneMvKSSb+8xIM5V7Vn6uNVtOY1vIm26XLtA==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.10.4.tgz", + "integrity": "sha512-86Lsr6NNw3qTNl+TBcF1oRZMaVzJtbWTyTko+CQL/tvNvcGYEFKbLXDPxtW0HKk3McNOk4KzY55itGWCAGK5tg==", "requires": { - "@babel/helper-annotate-as-pure": "^7.10.1", - "@babel/helper-wrap-function": "^7.10.1", - "@babel/template": "^7.10.3", - "@babel/traverse": "^7.10.3", - "@babel/types": "^7.10.3" + "@babel/helper-annotate-as-pure": "^7.10.4", + "@babel/helper-wrap-function": "^7.10.4", + "@babel/template": "^7.10.4", + "@babel/traverse": "^7.10.4", + "@babel/types": "^7.10.4" + }, + "dependencies": { + "@babel/code-frame": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.10.4.tgz", + "integrity": "sha512-vG6SvB6oYEhvgisZNFRmRCUkLz11c7rp+tbNTynGqc6mS1d5ATd/sGyV6W0KZZnXRKMTzZDRgQT3Ou9jhpAfUg==", + "requires": { + "@babel/highlight": "^7.10.4" + } + }, + "@babel/generator": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.10.4.tgz", + "integrity": "sha512-toLIHUIAgcQygFZRAQcsLQV3CBuX6yOIru1kJk/qqqvcRmZrYe6WavZTSG+bB8MxhnL9YPf+pKQfuiP161q7ng==", + "requires": { + "@babel/types": "^7.10.4", + "jsesc": "^2.5.1", + "lodash": "^4.17.13", + "source-map": "^0.5.0" + } + }, + "@babel/helper-annotate-as-pure": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.10.4.tgz", + "integrity": "sha512-XQlqKQP4vXFB7BN8fEEerrmYvHp3fK/rBkRFz9jaJbzK0B1DSfej9Kc7ZzE8Z/OnId1jpJdNAZ3BFQjWG68rcA==", + "requires": { + "@babel/types": "^7.10.4" + } + }, + "@babel/helper-function-name": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.10.4.tgz", + "integrity": "sha512-YdaSyz1n8gY44EmN7x44zBn9zQ1Ry2Y+3GTA+3vH6Mizke1Vw0aWDM66FOYEPw8//qKkmqOckrGgTYa+6sceqQ==", + "requires": { + "@babel/helper-get-function-arity": "^7.10.4", + "@babel/template": "^7.10.4", + "@babel/types": "^7.10.4" + } + }, + "@babel/helper-get-function-arity": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.10.4.tgz", + "integrity": "sha512-EkN3YDB+SRDgiIUnNgcmiD361ti+AVbL3f3Henf6dqqUyr5dMsorno0lJWJuLhDhkI5sYEpgj6y9kB8AOU1I2A==", + "requires": { + "@babel/types": "^7.10.4" + } + }, + "@babel/helper-split-export-declaration": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.10.4.tgz", + "integrity": "sha512-pySBTeoUff56fL5CBU2hWm9TesA4r/rOkI9DyJLvvgz09MB9YtfIYe3iBriVaYNaPe+Alua0vBIOVOLs2buWhg==", + "requires": { + "@babel/types": "^7.10.4" + } + }, + "@babel/helper-validator-identifier": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.4.tgz", + "integrity": "sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw==" + }, + "@babel/highlight": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.10.4.tgz", + "integrity": "sha512-i6rgnR/YgPEQzZZnbTHHuZdlE8qyoBNalD6F+q4vAFlcMEcqmkoG+mPqJYJCo63qPf74+Y1UZsl3l6f7/RIkmA==", + "requires": { + "@babel/helper-validator-identifier": "^7.10.4", + "chalk": "^2.0.0", + "js-tokens": "^4.0.0" + } + }, + "@babel/parser": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.10.4.tgz", + "integrity": "sha512-8jHII4hf+YVDsskTF6WuMB3X4Eh+PsUkC2ljq22so5rHvH+T8BzyL94VOdyFLNR8tBSVXOTbNHOKpR4TfRxVtA==" + }, + "@babel/template": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.10.4.tgz", + "integrity": "sha512-ZCjD27cGJFUB6nmCB1Enki3r+L5kJveX9pq1SvAUKoICy6CZ9yD8xO086YXdYhvNjBdnekm4ZnaP5yC8Cs/1tA==", + "requires": { + "@babel/code-frame": "^7.10.4", + "@babel/parser": "^7.10.4", + "@babel/types": "^7.10.4" + } + }, + "@babel/traverse": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.10.4.tgz", + "integrity": "sha512-aSy7p5THgSYm4YyxNGz6jZpXf+Ok40QF3aA2LyIONkDHpAcJzDUqlCKXv6peqYUs2gmic849C/t2HKw2a2K20Q==", + "requires": { + "@babel/code-frame": "^7.10.4", + "@babel/generator": "^7.10.4", + "@babel/helper-function-name": "^7.10.4", + "@babel/helper-split-export-declaration": "^7.10.4", + "@babel/parser": "^7.10.4", + "@babel/types": "^7.10.4", + "debug": "^4.1.0", + "globals": "^11.1.0", + "lodash": "^4.17.13" + } + }, + "@babel/types": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.10.4.tgz", + "integrity": "sha512-UTCFOxC3FsFHb7lkRMVvgLzaRVamXuAs2Tz4wajva4WxtVY82eZeaUBtC2Zt95FU9TiznuC0Zk35tsim8jeVpg==", + "requires": { + "@babel/helper-validator-identifier": "^7.10.4", + "lodash": "^4.17.13", + "to-fast-properties": "^2.0.0" + } + } } }, "@babel/helper-replace-supers": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.10.1.tgz", - "integrity": "sha512-SOwJzEfpuQwInzzQJGjGaiG578UYmyi2Xw668klPWV5n07B73S0a9btjLk/52Mlcxa+5AdIYqws1KyXRfMoB7A==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.10.4.tgz", + "integrity": "sha512-sPxZfFXocEymYTdVK1UNmFPBN+Hv5mJkLPsYWwGBxZAxaWfFu+xqp7b6qWD0yjNuNL2VKc6L5M18tOXUP7NU0A==", "requires": { - "@babel/helper-member-expression-to-functions": "^7.10.1", - "@babel/helper-optimise-call-expression": "^7.10.1", - "@babel/traverse": "^7.10.1", - "@babel/types": "^7.10.1" + "@babel/helper-member-expression-to-functions": "^7.10.4", + "@babel/helper-optimise-call-expression": "^7.10.4", + "@babel/traverse": "^7.10.4", + "@babel/types": "^7.10.4" + }, + "dependencies": { + "@babel/code-frame": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.10.4.tgz", + "integrity": "sha512-vG6SvB6oYEhvgisZNFRmRCUkLz11c7rp+tbNTynGqc6mS1d5ATd/sGyV6W0KZZnXRKMTzZDRgQT3Ou9jhpAfUg==", + "requires": { + "@babel/highlight": "^7.10.4" + } + }, + "@babel/generator": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.10.4.tgz", + "integrity": "sha512-toLIHUIAgcQygFZRAQcsLQV3CBuX6yOIru1kJk/qqqvcRmZrYe6WavZTSG+bB8MxhnL9YPf+pKQfuiP161q7ng==", + "requires": { + "@babel/types": "^7.10.4", + "jsesc": "^2.5.1", + "lodash": "^4.17.13", + "source-map": "^0.5.0" + } + }, + "@babel/helper-function-name": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.10.4.tgz", + "integrity": "sha512-YdaSyz1n8gY44EmN7x44zBn9zQ1Ry2Y+3GTA+3vH6Mizke1Vw0aWDM66FOYEPw8//qKkmqOckrGgTYa+6sceqQ==", + "requires": { + "@babel/helper-get-function-arity": "^7.10.4", + "@babel/template": "^7.10.4", + "@babel/types": "^7.10.4" + } + }, + "@babel/helper-get-function-arity": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.10.4.tgz", + "integrity": "sha512-EkN3YDB+SRDgiIUnNgcmiD361ti+AVbL3f3Henf6dqqUyr5dMsorno0lJWJuLhDhkI5sYEpgj6y9kB8AOU1I2A==", + "requires": { + "@babel/types": "^7.10.4" + } + }, + "@babel/helper-split-export-declaration": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.10.4.tgz", + "integrity": "sha512-pySBTeoUff56fL5CBU2hWm9TesA4r/rOkI9DyJLvvgz09MB9YtfIYe3iBriVaYNaPe+Alua0vBIOVOLs2buWhg==", + "requires": { + "@babel/types": "^7.10.4" + } + }, + "@babel/helper-validator-identifier": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.4.tgz", + "integrity": "sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw==" + }, + "@babel/highlight": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.10.4.tgz", + "integrity": "sha512-i6rgnR/YgPEQzZZnbTHHuZdlE8qyoBNalD6F+q4vAFlcMEcqmkoG+mPqJYJCo63qPf74+Y1UZsl3l6f7/RIkmA==", + "requires": { + "@babel/helper-validator-identifier": "^7.10.4", + "chalk": "^2.0.0", + "js-tokens": "^4.0.0" + } + }, + "@babel/parser": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.10.4.tgz", + "integrity": "sha512-8jHII4hf+YVDsskTF6WuMB3X4Eh+PsUkC2ljq22so5rHvH+T8BzyL94VOdyFLNR8tBSVXOTbNHOKpR4TfRxVtA==" + }, + "@babel/template": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.10.4.tgz", + "integrity": "sha512-ZCjD27cGJFUB6nmCB1Enki3r+L5kJveX9pq1SvAUKoICy6CZ9yD8xO086YXdYhvNjBdnekm4ZnaP5yC8Cs/1tA==", + "requires": { + "@babel/code-frame": "^7.10.4", + "@babel/parser": "^7.10.4", + "@babel/types": "^7.10.4" + } + }, + "@babel/traverse": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.10.4.tgz", + "integrity": "sha512-aSy7p5THgSYm4YyxNGz6jZpXf+Ok40QF3aA2LyIONkDHpAcJzDUqlCKXv6peqYUs2gmic849C/t2HKw2a2K20Q==", + "requires": { + "@babel/code-frame": "^7.10.4", + "@babel/generator": "^7.10.4", + "@babel/helper-function-name": "^7.10.4", + "@babel/helper-split-export-declaration": "^7.10.4", + "@babel/parser": "^7.10.4", + "@babel/types": "^7.10.4", + "debug": "^4.1.0", + "globals": "^11.1.0", + "lodash": "^4.17.13" + } + }, + "@babel/types": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.10.4.tgz", + "integrity": "sha512-UTCFOxC3FsFHb7lkRMVvgLzaRVamXuAs2Tz4wajva4WxtVY82eZeaUBtC2Zt95FU9TiznuC0Zk35tsim8jeVpg==", + "requires": { + "@babel/helper-validator-identifier": "^7.10.4", + "lodash": "^4.17.13", + "to-fast-properties": "^2.0.0" + } + } } }, "@babel/helper-simple-access": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.10.1.tgz", - "integrity": "sha512-VSWpWzRzn9VtgMJBIWTZ+GP107kZdQ4YplJlCmIrjoLVSi/0upixezHCDG8kpPVTBJpKfxTH01wDhh+jS2zKbw==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.10.4.tgz", + "integrity": "sha512-0fMy72ej/VEvF8ULmX6yb5MtHG4uH4Dbd6I/aHDb/JVg0bbivwt9Wg+h3uMvX+QSFtwr5MeItvazbrc4jtRAXw==", "requires": { - "@babel/template": "^7.10.1", - "@babel/types": "^7.10.1" + "@babel/template": "^7.10.4", + "@babel/types": "^7.10.4" + }, + "dependencies": { + "@babel/code-frame": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.10.4.tgz", + "integrity": "sha512-vG6SvB6oYEhvgisZNFRmRCUkLz11c7rp+tbNTynGqc6mS1d5ATd/sGyV6W0KZZnXRKMTzZDRgQT3Ou9jhpAfUg==", + "requires": { + "@babel/highlight": "^7.10.4" + } + }, + "@babel/helper-validator-identifier": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.4.tgz", + "integrity": "sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw==" + }, + "@babel/highlight": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.10.4.tgz", + "integrity": "sha512-i6rgnR/YgPEQzZZnbTHHuZdlE8qyoBNalD6F+q4vAFlcMEcqmkoG+mPqJYJCo63qPf74+Y1UZsl3l6f7/RIkmA==", + "requires": { + "@babel/helper-validator-identifier": "^7.10.4", + "chalk": "^2.0.0", + "js-tokens": "^4.0.0" + } + }, + "@babel/parser": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.10.4.tgz", + "integrity": "sha512-8jHII4hf+YVDsskTF6WuMB3X4Eh+PsUkC2ljq22so5rHvH+T8BzyL94VOdyFLNR8tBSVXOTbNHOKpR4TfRxVtA==" + }, + "@babel/template": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.10.4.tgz", + "integrity": "sha512-ZCjD27cGJFUB6nmCB1Enki3r+L5kJveX9pq1SvAUKoICy6CZ9yD8xO086YXdYhvNjBdnekm4ZnaP5yC8Cs/1tA==", + "requires": { + "@babel/code-frame": "^7.10.4", + "@babel/parser": "^7.10.4", + "@babel/types": "^7.10.4" + } + }, + "@babel/types": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.10.4.tgz", + "integrity": "sha512-UTCFOxC3FsFHb7lkRMVvgLzaRVamXuAs2Tz4wajva4WxtVY82eZeaUBtC2Zt95FU9TiznuC0Zk35tsim8jeVpg==", + "requires": { + "@babel/helper-validator-identifier": "^7.10.4", + "lodash": "^4.17.13", + "to-fast-properties": "^2.0.0" + } + } } }, "@babel/helper-split-export-declaration": { @@ -290,24 +1018,230 @@ "integrity": "sha512-bU8JvtlYpJSBPuj1VUmKpFGaDZuLxASky3LhaKj3bmpSTY6VWooSM8msk+Z0CZoErFye2tlABF6yDkT3FOPAXw==" }, "@babel/helper-wrap-function": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.10.1.tgz", - "integrity": "sha512-C0MzRGteVDn+H32/ZgbAv5r56f2o1fZSA/rj/TYo8JEJNHg+9BdSmKBUND0shxWRztWhjlT2cvHYuynpPsVJwQ==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.10.4.tgz", + "integrity": "sha512-6py45WvEF0MhiLrdxtRjKjufwLL1/ob2qDJgg5JgNdojBAZSAKnAjkyOCNug6n+OBl4VW76XjvgSFTdaMcW0Ug==", "requires": { - "@babel/helper-function-name": "^7.10.1", - "@babel/template": "^7.10.1", - "@babel/traverse": "^7.10.1", - "@babel/types": "^7.10.1" + "@babel/helper-function-name": "^7.10.4", + "@babel/template": "^7.10.4", + "@babel/traverse": "^7.10.4", + "@babel/types": "^7.10.4" + }, + "dependencies": { + "@babel/code-frame": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.10.4.tgz", + "integrity": "sha512-vG6SvB6oYEhvgisZNFRmRCUkLz11c7rp+tbNTynGqc6mS1d5ATd/sGyV6W0KZZnXRKMTzZDRgQT3Ou9jhpAfUg==", + "requires": { + "@babel/highlight": "^7.10.4" + } + }, + "@babel/generator": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.10.4.tgz", + "integrity": "sha512-toLIHUIAgcQygFZRAQcsLQV3CBuX6yOIru1kJk/qqqvcRmZrYe6WavZTSG+bB8MxhnL9YPf+pKQfuiP161q7ng==", + "requires": { + "@babel/types": "^7.10.4", + "jsesc": "^2.5.1", + "lodash": "^4.17.13", + "source-map": "^0.5.0" + } + }, + "@babel/helper-function-name": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.10.4.tgz", + "integrity": "sha512-YdaSyz1n8gY44EmN7x44zBn9zQ1Ry2Y+3GTA+3vH6Mizke1Vw0aWDM66FOYEPw8//qKkmqOckrGgTYa+6sceqQ==", + "requires": { + "@babel/helper-get-function-arity": "^7.10.4", + "@babel/template": "^7.10.4", + "@babel/types": "^7.10.4" + } + }, + "@babel/helper-get-function-arity": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.10.4.tgz", + "integrity": "sha512-EkN3YDB+SRDgiIUnNgcmiD361ti+AVbL3f3Henf6dqqUyr5dMsorno0lJWJuLhDhkI5sYEpgj6y9kB8AOU1I2A==", + "requires": { + "@babel/types": "^7.10.4" + } + }, + "@babel/helper-split-export-declaration": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.10.4.tgz", + "integrity": "sha512-pySBTeoUff56fL5CBU2hWm9TesA4r/rOkI9DyJLvvgz09MB9YtfIYe3iBriVaYNaPe+Alua0vBIOVOLs2buWhg==", + "requires": { + "@babel/types": "^7.10.4" + } + }, + "@babel/helper-validator-identifier": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.4.tgz", + "integrity": "sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw==" + }, + "@babel/highlight": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.10.4.tgz", + "integrity": "sha512-i6rgnR/YgPEQzZZnbTHHuZdlE8qyoBNalD6F+q4vAFlcMEcqmkoG+mPqJYJCo63qPf74+Y1UZsl3l6f7/RIkmA==", + "requires": { + "@babel/helper-validator-identifier": "^7.10.4", + "chalk": "^2.0.0", + "js-tokens": "^4.0.0" + } + }, + "@babel/parser": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.10.4.tgz", + "integrity": "sha512-8jHII4hf+YVDsskTF6WuMB3X4Eh+PsUkC2ljq22so5rHvH+T8BzyL94VOdyFLNR8tBSVXOTbNHOKpR4TfRxVtA==" + }, + "@babel/template": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.10.4.tgz", + "integrity": "sha512-ZCjD27cGJFUB6nmCB1Enki3r+L5kJveX9pq1SvAUKoICy6CZ9yD8xO086YXdYhvNjBdnekm4ZnaP5yC8Cs/1tA==", + "requires": { + "@babel/code-frame": "^7.10.4", + "@babel/parser": "^7.10.4", + "@babel/types": "^7.10.4" + } + }, + "@babel/traverse": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.10.4.tgz", + "integrity": "sha512-aSy7p5THgSYm4YyxNGz6jZpXf+Ok40QF3aA2LyIONkDHpAcJzDUqlCKXv6peqYUs2gmic849C/t2HKw2a2K20Q==", + "requires": { + "@babel/code-frame": "^7.10.4", + "@babel/generator": "^7.10.4", + "@babel/helper-function-name": "^7.10.4", + "@babel/helper-split-export-declaration": "^7.10.4", + "@babel/parser": "^7.10.4", + "@babel/types": "^7.10.4", + "debug": "^4.1.0", + "globals": "^11.1.0", + "lodash": "^4.17.13" + } + }, + "@babel/types": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.10.4.tgz", + "integrity": "sha512-UTCFOxC3FsFHb7lkRMVvgLzaRVamXuAs2Tz4wajva4WxtVY82eZeaUBtC2Zt95FU9TiznuC0Zk35tsim8jeVpg==", + "requires": { + "@babel/helper-validator-identifier": "^7.10.4", + "lodash": "^4.17.13", + "to-fast-properties": "^2.0.0" + } + } } }, "@babel/helpers": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.10.1.tgz", - "integrity": "sha512-muQNHF+IdU6wGgkaJyhhEmI54MOZBKsFfsXFhboz1ybwJ1Kl7IHlbm2a++4jwrmY5UYsgitt5lfqo1wMFcHmyw==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.10.4.tgz", + "integrity": "sha512-L2gX/XeUONeEbI78dXSrJzGdz4GQ+ZTA/aazfUsFaWjSe95kiCuOZ5HsXvkiw3iwF+mFHSRUfJU8t6YavocdXA==", "requires": { - "@babel/template": "^7.10.1", - "@babel/traverse": "^7.10.1", - "@babel/types": "^7.10.1" + "@babel/template": "^7.10.4", + "@babel/traverse": "^7.10.4", + "@babel/types": "^7.10.4" + }, + "dependencies": { + "@babel/code-frame": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.10.4.tgz", + "integrity": "sha512-vG6SvB6oYEhvgisZNFRmRCUkLz11c7rp+tbNTynGqc6mS1d5ATd/sGyV6W0KZZnXRKMTzZDRgQT3Ou9jhpAfUg==", + "requires": { + "@babel/highlight": "^7.10.4" + } + }, + "@babel/generator": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.10.4.tgz", + "integrity": "sha512-toLIHUIAgcQygFZRAQcsLQV3CBuX6yOIru1kJk/qqqvcRmZrYe6WavZTSG+bB8MxhnL9YPf+pKQfuiP161q7ng==", + "requires": { + "@babel/types": "^7.10.4", + "jsesc": "^2.5.1", + "lodash": "^4.17.13", + "source-map": "^0.5.0" + } + }, + "@babel/helper-function-name": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.10.4.tgz", + "integrity": "sha512-YdaSyz1n8gY44EmN7x44zBn9zQ1Ry2Y+3GTA+3vH6Mizke1Vw0aWDM66FOYEPw8//qKkmqOckrGgTYa+6sceqQ==", + "requires": { + "@babel/helper-get-function-arity": "^7.10.4", + "@babel/template": "^7.10.4", + "@babel/types": "^7.10.4" + } + }, + "@babel/helper-get-function-arity": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.10.4.tgz", + "integrity": "sha512-EkN3YDB+SRDgiIUnNgcmiD361ti+AVbL3f3Henf6dqqUyr5dMsorno0lJWJuLhDhkI5sYEpgj6y9kB8AOU1I2A==", + "requires": { + "@babel/types": "^7.10.4" + } + }, + "@babel/helper-split-export-declaration": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.10.4.tgz", + "integrity": "sha512-pySBTeoUff56fL5CBU2hWm9TesA4r/rOkI9DyJLvvgz09MB9YtfIYe3iBriVaYNaPe+Alua0vBIOVOLs2buWhg==", + "requires": { + "@babel/types": "^7.10.4" + } + }, + "@babel/helper-validator-identifier": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.4.tgz", + "integrity": "sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw==" + }, + "@babel/highlight": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.10.4.tgz", + "integrity": "sha512-i6rgnR/YgPEQzZZnbTHHuZdlE8qyoBNalD6F+q4vAFlcMEcqmkoG+mPqJYJCo63qPf74+Y1UZsl3l6f7/RIkmA==", + "requires": { + "@babel/helper-validator-identifier": "^7.10.4", + "chalk": "^2.0.0", + "js-tokens": "^4.0.0" + } + }, + "@babel/parser": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.10.4.tgz", + "integrity": "sha512-8jHII4hf+YVDsskTF6WuMB3X4Eh+PsUkC2ljq22so5rHvH+T8BzyL94VOdyFLNR8tBSVXOTbNHOKpR4TfRxVtA==" + }, + "@babel/template": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.10.4.tgz", + "integrity": "sha512-ZCjD27cGJFUB6nmCB1Enki3r+L5kJveX9pq1SvAUKoICy6CZ9yD8xO086YXdYhvNjBdnekm4ZnaP5yC8Cs/1tA==", + "requires": { + "@babel/code-frame": "^7.10.4", + "@babel/parser": "^7.10.4", + "@babel/types": "^7.10.4" + } + }, + "@babel/traverse": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.10.4.tgz", + "integrity": "sha512-aSy7p5THgSYm4YyxNGz6jZpXf+Ok40QF3aA2LyIONkDHpAcJzDUqlCKXv6peqYUs2gmic849C/t2HKw2a2K20Q==", + "requires": { + "@babel/code-frame": "^7.10.4", + "@babel/generator": "^7.10.4", + "@babel/helper-function-name": "^7.10.4", + "@babel/helper-split-export-declaration": "^7.10.4", + "@babel/parser": "^7.10.4", + "@babel/types": "^7.10.4", + "debug": "^4.1.0", + "globals": "^11.1.0", + "lodash": "^4.17.13" + } + }, + "@babel/types": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.10.4.tgz", + "integrity": "sha512-UTCFOxC3FsFHb7lkRMVvgLzaRVamXuAs2Tz4wajva4WxtVY82eZeaUBtC2Zt95FU9TiznuC0Zk35tsim8jeVpg==", + "requires": { + "@babel/helper-validator-identifier": "^7.10.4", + "lodash": "^4.17.13", + "to-fast-properties": "^2.0.0" + } + } } }, "@babel/highlight": { @@ -326,22 +1260,22 @@ "integrity": "sha512-oJtNJCMFdIMwXGmx+KxuaD7i3b8uS7TTFYW/FNG2BT8m+fmGHoiPYoH0Pe3gya07WuFmM5FCDIr1x0irkD/hyA==" }, "@babel/plugin-proposal-async-generator-functions": { - "version": "7.10.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.10.3.tgz", - "integrity": "sha512-WUUWM7YTOudF4jZBAJIW9D7aViYC/Fn0Pln4RIHlQALyno3sXSjqmTA4Zy1TKC2D49RCR8Y/Pn4OIUtEypK3CA==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.10.4.tgz", + "integrity": "sha512-MJbxGSmejEFVOANAezdO39SObkURO5o/8b6fSH6D1pi9RZQt+ldppKPXfqgUWpSQ9asM6xaSaSJIaeWMDRP0Zg==", "requires": { - "@babel/helper-plugin-utils": "^7.10.3", - "@babel/helper-remap-async-to-generator": "^7.10.3", + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/helper-remap-async-to-generator": "^7.10.4", "@babel/plugin-syntax-async-generators": "^7.8.0" } }, "@babel/plugin-proposal-class-properties": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.10.1.tgz", - "integrity": "sha512-sqdGWgoXlnOdgMXU+9MbhzwFRgxVLeiGBqTrnuS7LC2IBU31wSsESbTUreT2O418obpfPdGUR2GbEufZF1bpqw==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.10.4.tgz", + "integrity": "sha512-vhwkEROxzcHGNu2mzUC0OFFNXdZ4M23ib8aRRcJSsW8BZK9pQMD7QB7csl97NBbgGZO7ZyHUyKDnxzOaP4IrCg==", "requires": { - "@babel/helper-create-class-features-plugin": "^7.10.1", - "@babel/helper-plugin-utils": "^7.10.1" + "@babel/helper-create-class-features-plugin": "^7.10.4", + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-proposal-decorators": { @@ -355,85 +1289,85 @@ } }, "@babel/plugin-proposal-dynamic-import": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.10.1.tgz", - "integrity": "sha512-Cpc2yUVHTEGPlmiQzXj026kqwjEQAD9I4ZC16uzdbgWgitg/UHKHLffKNCQZ5+y8jpIZPJcKcwsr2HwPh+w3XA==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.10.4.tgz", + "integrity": "sha512-up6oID1LeidOOASNXgv/CFbgBqTuKJ0cJjz6An5tWD+NVBNlp3VNSBxv2ZdU7SYl3NxJC7agAQDApZusV6uFwQ==", "requires": { - "@babel/helper-plugin-utils": "^7.10.1", + "@babel/helper-plugin-utils": "^7.10.4", "@babel/plugin-syntax-dynamic-import": "^7.8.0" } }, "@babel/plugin-proposal-json-strings": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.10.1.tgz", - "integrity": "sha512-m8r5BmV+ZLpWPtMY2mOKN7wre6HIO4gfIiV+eOmsnZABNenrt/kzYBwrh+KOfgumSWpnlGs5F70J8afYMSJMBg==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.10.4.tgz", + "integrity": "sha512-fCL7QF0Jo83uy1K0P2YXrfX11tj3lkpN7l4dMv9Y9VkowkhkQDwFHFd8IiwyK5MZjE8UpbgokkgtcReH88Abaw==", "requires": { - "@babel/helper-plugin-utils": "^7.10.1", + "@babel/helper-plugin-utils": "^7.10.4", "@babel/plugin-syntax-json-strings": "^7.8.0" } }, "@babel/plugin-proposal-nullish-coalescing-operator": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.10.1.tgz", - "integrity": "sha512-56cI/uHYgL2C8HVuHOuvVowihhX0sxb3nnfVRzUeVHTWmRHTZrKuAh/OBIMggGU/S1g/1D2CRCXqP+3u7vX7iA==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.10.4.tgz", + "integrity": "sha512-wq5n1M3ZUlHl9sqT2ok1T2/MTt6AXE0e1Lz4WzWBr95LsAZ5qDXe4KnFuauYyEyLiohvXFMdbsOTMyLZs91Zlw==", "requires": { - "@babel/helper-plugin-utils": "^7.10.1", + "@babel/helper-plugin-utils": "^7.10.4", "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.0" } }, "@babel/plugin-proposal-numeric-separator": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.10.1.tgz", - "integrity": "sha512-jjfym4N9HtCiNfyyLAVD8WqPYeHUrw4ihxuAynWj6zzp2gf9Ey2f7ImhFm6ikB3CLf5Z/zmcJDri6B4+9j9RsA==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.10.4.tgz", + "integrity": "sha512-73/G7QoRoeNkLZFxsoCCvlg4ezE4eM+57PnOqgaPOozd5myfj7p0muD1mRVJvbUWbOzD+q3No2bWbaKy+DJ8DA==", "requires": { - "@babel/helper-plugin-utils": "^7.10.1", - "@babel/plugin-syntax-numeric-separator": "^7.10.1" + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/plugin-syntax-numeric-separator": "^7.10.4" } }, "@babel/plugin-proposal-object-rest-spread": { - "version": "7.10.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.10.3.tgz", - "integrity": "sha512-ZZh5leCIlH9lni5bU/wB/UcjtcVLgR8gc+FAgW2OOY+m9h1II3ItTO1/cewNUcsIDZSYcSaz/rYVls+Fb0ExVQ==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.10.4.tgz", + "integrity": "sha512-6vh4SqRuLLarjgeOf4EaROJAHjvu9Gl+/346PbDH9yWbJyfnJ/ah3jmYKYtswEyCoWZiidvVHjHshd4WgjB9BA==", "requires": { - "@babel/helper-plugin-utils": "^7.10.3", + "@babel/helper-plugin-utils": "^7.10.4", "@babel/plugin-syntax-object-rest-spread": "^7.8.0", - "@babel/plugin-transform-parameters": "^7.10.1" + "@babel/plugin-transform-parameters": "^7.10.4" } }, "@babel/plugin-proposal-optional-catch-binding": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.10.1.tgz", - "integrity": "sha512-VqExgeE62YBqI3ogkGoOJp1R6u12DFZjqwJhqtKc2o5m1YTUuUWnos7bZQFBhwkxIFpWYJ7uB75U7VAPPiKETA==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.10.4.tgz", + "integrity": "sha512-LflT6nPh+GK2MnFiKDyLiqSqVHkQnVf7hdoAvyTnnKj9xB3docGRsdPuxp6qqqW19ifK3xgc9U5/FwrSaCNX5g==", "requires": { - "@babel/helper-plugin-utils": "^7.10.1", + "@babel/helper-plugin-utils": "^7.10.4", "@babel/plugin-syntax-optional-catch-binding": "^7.8.0" } }, "@babel/plugin-proposal-optional-chaining": { - "version": "7.10.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.10.3.tgz", - "integrity": "sha512-yyG3n9dJ1vZ6v5sfmIlMMZ8azQoqx/5/nZTSWX1td6L1H1bsjzA8TInDChpafCZiJkeOFzp/PtrfigAQXxI1Ng==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.10.4.tgz", + "integrity": "sha512-ZIhQIEeavTgouyMSdZRap4VPPHqJJ3NEs2cuHs5p0erH+iz6khB0qfgU8g7UuJkG88+fBMy23ZiU+nuHvekJeQ==", "requires": { - "@babel/helper-plugin-utils": "^7.10.3", + "@babel/helper-plugin-utils": "^7.10.4", "@babel/plugin-syntax-optional-chaining": "^7.8.0" } }, "@babel/plugin-proposal-private-methods": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.10.1.tgz", - "integrity": "sha512-RZecFFJjDiQ2z6maFprLgrdnm0OzoC23Mx89xf1CcEsxmHuzuXOdniEuI+S3v7vjQG4F5sa6YtUp+19sZuSxHg==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.10.4.tgz", + "integrity": "sha512-wh5GJleuI8k3emgTg5KkJK6kHNsGEr0uBTDBuQUBJwckk9xs1ez79ioheEVVxMLyPscB0LfkbVHslQqIzWV6Bw==", "requires": { - "@babel/helper-create-class-features-plugin": "^7.10.1", - "@babel/helper-plugin-utils": "^7.10.1" + "@babel/helper-create-class-features-plugin": "^7.10.4", + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-proposal-unicode-property-regex": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.10.1.tgz", - "integrity": "sha512-JjfngYRvwmPwmnbRZyNiPFI8zxCZb8euzbCG/LxyKdeTb59tVciKo9GK9bi6JYKInk1H11Dq9j/zRqIH4KigfQ==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.10.4.tgz", + "integrity": "sha512-H+3fOgPnEXFL9zGYtKQe4IDOPKYlZdF1kqFDQRRb8PK4B8af1vAGK04tF5iQAAsui+mHNBQSAtd2/ndEDe9wuA==", "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.10.1", - "@babel/helper-plugin-utils": "^7.10.1" + "@babel/helper-create-regexp-features-plugin": "^7.10.4", + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-syntax-async-generators": { @@ -445,19 +1379,19 @@ } }, "@babel/plugin-syntax-class-properties": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.10.1.tgz", - "integrity": "sha512-Gf2Yx/iRs1JREDtVZ56OrjjgFHCaldpTnuy9BHla10qyVT3YkIIGEtoDWhyop0ksu1GvNjHIoYRBqm3zoR1jyQ==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.10.4.tgz", + "integrity": "sha512-GCSBF7iUle6rNugfURwNmCGG3Z/2+opxAMLs1nND4bhEG5PuxTIggDBoeYYSujAlLtsupzOHYJQgPS3pivwXIA==", "requires": { - "@babel/helper-plugin-utils": "^7.10.1" + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-syntax-decorators": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-decorators/-/plugin-syntax-decorators-7.10.1.tgz", - "integrity": "sha512-a9OAbQhKOwSle1Vr0NJu/ISg1sPfdEkfRKWpgPuzhnWWzForou2gIeUIIwjAMHRekhhpJ7eulZlYs0H14Cbi+g==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-decorators/-/plugin-syntax-decorators-7.10.4.tgz", + "integrity": "sha512-2NaoC6fAk2VMdhY1eerkfHV+lVYC1u8b+jmRJISqANCJlTxYy19HGdIkkQtix2UtkcPuPu+IlDgrVseZnU03bw==", "requires": { - "@babel/helper-plugin-utils": "^7.10.1" + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-syntax-dynamic-import": { @@ -469,11 +1403,11 @@ } }, "@babel/plugin-syntax-flow": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-flow/-/plugin-syntax-flow-7.10.1.tgz", - "integrity": "sha512-b3pWVncLBYoPP60UOTc7NMlbtsHQ6ITim78KQejNHK6WJ2mzV5kCcg4mIWpasAfJEgwVTibwo2e+FU7UEIKQUg==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-flow/-/plugin-syntax-flow-7.10.4.tgz", + "integrity": "sha512-yxQsX1dJixF4qEEdzVbst3SZQ58Nrooz8NV9Z9GL4byTE25BvJgl5lf0RECUf0fh28rZBb/RYTWn/eeKwCMrZQ==", "requires": { - "@babel/helper-plugin-utils": "^7.10.1" + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-syntax-json-strings": { @@ -485,11 +1419,11 @@ } }, "@babel/plugin-syntax-jsx": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.10.1.tgz", - "integrity": "sha512-+OxyOArpVFXQeXKLO9o+r2I4dIoVoy6+Uu0vKELrlweDM3QJADZj+Z+5ERansZqIZBcLj42vHnDI8Rz9BnRIuQ==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.10.4.tgz", + "integrity": "sha512-KCg9mio9jwiARCB7WAcQ7Y1q+qicILjoK8LP/VkPkEKaf5dkaZZK1EcTe91a3JJlZ3qy6L5s9X52boEYi8DM9g==", "requires": { - "@babel/helper-plugin-utils": "^7.10.1" + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-syntax-nullish-coalescing-operator": { @@ -501,11 +1435,11 @@ } }, "@babel/plugin-syntax-numeric-separator": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.1.tgz", - "integrity": "sha512-uTd0OsHrpe3tH5gRPTxG8Voh99/WCU78vIm5NMRYPAqC8lR4vajt6KkCAknCHrx24vkPdd/05yfdGSB4EIY2mg==", + "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==", "requires": { - "@babel/helper-plugin-utils": "^7.10.1" + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-syntax-object-rest-spread": { @@ -533,111 +1467,220 @@ } }, "@babel/plugin-syntax-top-level-await": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.10.1.tgz", - "integrity": "sha512-hgA5RYkmZm8FTFT3yu2N9Bx7yVVOKYT6yEdXXo6j2JTm0wNxgqaGeQVaSHRjhfnQbX91DtjFB6McRFSlcJH3xQ==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.10.4.tgz", + "integrity": "sha512-ni1brg4lXEmWyafKr0ccFWkJG0CeMt4WV1oyeBW6EFObF4oOHclbkj5cARxAPQyAQ2UTuplJyK4nfkXIMMFvsQ==", "requires": { - "@babel/helper-plugin-utils": "^7.10.1" + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-syntax-typescript": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.10.1.tgz", - "integrity": "sha512-X/d8glkrAtra7CaQGMiGs/OGa6XgUzqPcBXCIGFCpCqnfGlT0Wfbzo/B89xHhnInTaItPK8LALblVXcUOEh95Q==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.10.4.tgz", + "integrity": "sha512-oSAEz1YkBCAKr5Yiq8/BNtvSAPwkp/IyUnwZogd8p+F0RuYQQrLeRUzIQhueQTTBy/F+a40uS7OFKxnkRvmvFQ==", "requires": { - "@babel/helper-plugin-utils": "^7.10.1" + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-transform-arrow-functions": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.10.1.tgz", - "integrity": "sha512-6AZHgFJKP3DJX0eCNJj01RpytUa3SOGawIxweHkNX2L6PYikOZmoh5B0d7hIHaIgveMjX990IAa/xK7jRTN8OA==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.10.4.tgz", + "integrity": "sha512-9J/oD1jV0ZCBcgnoFWFq1vJd4msoKb/TCpGNFyyLt0zABdcvgK3aYikZ8HjzB14c26bc7E3Q1yugpwGy2aTPNA==", "requires": { - "@babel/helper-plugin-utils": "^7.10.1" + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-transform-async-to-generator": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.10.1.tgz", - "integrity": "sha512-XCgYjJ8TY2slj6SReBUyamJn3k2JLUIiiR5b6t1mNCMSvv7yx+jJpaewakikp0uWFQSF7ChPPoe3dHmXLpISkg==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.10.4.tgz", + "integrity": "sha512-F6nREOan7J5UXTLsDsZG3DXmZSVofr2tGNwfdrVwkDWHfQckbQXnXSPfD7iO+c/2HGqycwyLST3DnZ16n+cBJQ==", "requires": { - "@babel/helper-module-imports": "^7.10.1", - "@babel/helper-plugin-utils": "^7.10.1", - "@babel/helper-remap-async-to-generator": "^7.10.1" + "@babel/helper-module-imports": "^7.10.4", + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/helper-remap-async-to-generator": "^7.10.4" + }, + "dependencies": { + "@babel/helper-module-imports": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.10.4.tgz", + "integrity": "sha512-nEQJHqYavI217oD9+s5MUBzk6x1IlvoS9WTPfgG43CbMEeStE0v+r+TucWdx8KFGowPGvyOkDT9+7DHedIDnVw==", + "requires": { + "@babel/types": "^7.10.4" + } + }, + "@babel/helper-validator-identifier": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.4.tgz", + "integrity": "sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw==" + }, + "@babel/types": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.10.4.tgz", + "integrity": "sha512-UTCFOxC3FsFHb7lkRMVvgLzaRVamXuAs2Tz4wajva4WxtVY82eZeaUBtC2Zt95FU9TiznuC0Zk35tsim8jeVpg==", + "requires": { + "@babel/helper-validator-identifier": "^7.10.4", + "lodash": "^4.17.13", + "to-fast-properties": "^2.0.0" + } + } } }, "@babel/plugin-transform-block-scoped-functions": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.10.1.tgz", - "integrity": "sha512-B7K15Xp8lv0sOJrdVAoukKlxP9N59HS48V1J3U/JGj+Ad+MHq+am6xJVs85AgXrQn4LV8vaYFOB+pr/yIuzW8Q==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.10.4.tgz", + "integrity": "sha512-WzXDarQXYYfjaV1szJvN3AD7rZgZzC1JtjJZ8dMHUyiK8mxPRahynp14zzNjU3VkPqPsO38CzxiWO1c9ARZ8JA==", "requires": { - "@babel/helper-plugin-utils": "^7.10.1" + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-transform-block-scoping": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.10.1.tgz", - "integrity": "sha512-8bpWG6TtF5akdhIm/uWTyjHqENpy13Fx8chg7pFH875aNLwX8JxIxqm08gmAT+Whe6AOmaTeLPe7dpLbXt+xUw==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.10.4.tgz", + "integrity": "sha512-J3b5CluMg3hPUii2onJDRiaVbPtKFPLEaV5dOPY5OeAbDi1iU/UbbFFTgwb7WnanaDy7bjU35kc26W3eM5Qa0A==", "requires": { - "@babel/helper-plugin-utils": "^7.10.1", + "@babel/helper-plugin-utils": "^7.10.4", "lodash": "^4.17.13" } }, "@babel/plugin-transform-classes": { - "version": "7.10.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.10.3.tgz", - "integrity": "sha512-irEX0ChJLaZVC7FvvRoSIxJlmk0IczFLcwaRXUArBKYHCHbOhe57aG8q3uw/fJsoSXvZhjRX960hyeAGlVBXZw==", - "requires": { - "@babel/helper-annotate-as-pure": "^7.10.1", - "@babel/helper-define-map": "^7.10.3", - "@babel/helper-function-name": "^7.10.3", - "@babel/helper-optimise-call-expression": "^7.10.3", - "@babel/helper-plugin-utils": "^7.10.3", - "@babel/helper-replace-supers": "^7.10.1", - "@babel/helper-split-export-declaration": "^7.10.1", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.10.4.tgz", + "integrity": "sha512-2oZ9qLjt161dn1ZE0Ms66xBncQH4In8Sqw1YWgBUZuGVJJS5c0OFZXL6dP2MRHrkU/eKhWg8CzFJhRQl50rQxA==", + "requires": { + "@babel/helper-annotate-as-pure": "^7.10.4", + "@babel/helper-define-map": "^7.10.4", + "@babel/helper-function-name": "^7.10.4", + "@babel/helper-optimise-call-expression": "^7.10.4", + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/helper-replace-supers": "^7.10.4", + "@babel/helper-split-export-declaration": "^7.10.4", "globals": "^11.1.0" + }, + "dependencies": { + "@babel/code-frame": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.10.4.tgz", + "integrity": "sha512-vG6SvB6oYEhvgisZNFRmRCUkLz11c7rp+tbNTynGqc6mS1d5ATd/sGyV6W0KZZnXRKMTzZDRgQT3Ou9jhpAfUg==", + "requires": { + "@babel/highlight": "^7.10.4" + } + }, + "@babel/helper-annotate-as-pure": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.10.4.tgz", + "integrity": "sha512-XQlqKQP4vXFB7BN8fEEerrmYvHp3fK/rBkRFz9jaJbzK0B1DSfej9Kc7ZzE8Z/OnId1jpJdNAZ3BFQjWG68rcA==", + "requires": { + "@babel/types": "^7.10.4" + } + }, + "@babel/helper-function-name": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.10.4.tgz", + "integrity": "sha512-YdaSyz1n8gY44EmN7x44zBn9zQ1Ry2Y+3GTA+3vH6Mizke1Vw0aWDM66FOYEPw8//qKkmqOckrGgTYa+6sceqQ==", + "requires": { + "@babel/helper-get-function-arity": "^7.10.4", + "@babel/template": "^7.10.4", + "@babel/types": "^7.10.4" + } + }, + "@babel/helper-get-function-arity": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.10.4.tgz", + "integrity": "sha512-EkN3YDB+SRDgiIUnNgcmiD361ti+AVbL3f3Henf6dqqUyr5dMsorno0lJWJuLhDhkI5sYEpgj6y9kB8AOU1I2A==", + "requires": { + "@babel/types": "^7.10.4" + } + }, + "@babel/helper-split-export-declaration": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.10.4.tgz", + "integrity": "sha512-pySBTeoUff56fL5CBU2hWm9TesA4r/rOkI9DyJLvvgz09MB9YtfIYe3iBriVaYNaPe+Alua0vBIOVOLs2buWhg==", + "requires": { + "@babel/types": "^7.10.4" + } + }, + "@babel/helper-validator-identifier": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.4.tgz", + "integrity": "sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw==" + }, + "@babel/highlight": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.10.4.tgz", + "integrity": "sha512-i6rgnR/YgPEQzZZnbTHHuZdlE8qyoBNalD6F+q4vAFlcMEcqmkoG+mPqJYJCo63qPf74+Y1UZsl3l6f7/RIkmA==", + "requires": { + "@babel/helper-validator-identifier": "^7.10.4", + "chalk": "^2.0.0", + "js-tokens": "^4.0.0" + } + }, + "@babel/parser": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.10.4.tgz", + "integrity": "sha512-8jHII4hf+YVDsskTF6WuMB3X4Eh+PsUkC2ljq22so5rHvH+T8BzyL94VOdyFLNR8tBSVXOTbNHOKpR4TfRxVtA==" + }, + "@babel/template": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.10.4.tgz", + "integrity": "sha512-ZCjD27cGJFUB6nmCB1Enki3r+L5kJveX9pq1SvAUKoICy6CZ9yD8xO086YXdYhvNjBdnekm4ZnaP5yC8Cs/1tA==", + "requires": { + "@babel/code-frame": "^7.10.4", + "@babel/parser": "^7.10.4", + "@babel/types": "^7.10.4" + } + }, + "@babel/types": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.10.4.tgz", + "integrity": "sha512-UTCFOxC3FsFHb7lkRMVvgLzaRVamXuAs2Tz4wajva4WxtVY82eZeaUBtC2Zt95FU9TiznuC0Zk35tsim8jeVpg==", + "requires": { + "@babel/helper-validator-identifier": "^7.10.4", + "lodash": "^4.17.13", + "to-fast-properties": "^2.0.0" + } + } } }, "@babel/plugin-transform-computed-properties": { - "version": "7.10.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.10.3.tgz", - "integrity": "sha512-GWzhaBOsdbjVFav96drOz7FzrcEW6AP5nax0gLIpstiFaI3LOb2tAg06TimaWU6YKOfUACK3FVrxPJ4GSc5TgA==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.10.4.tgz", + "integrity": "sha512-JFwVDXcP/hM/TbyzGq3l/XWGut7p46Z3QvqFMXTfk6/09m7xZHJUN9xHfsv7vqqD4YnfI5ueYdSJtXqqBLyjBw==", "requires": { - "@babel/helper-plugin-utils": "^7.10.3" + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-transform-destructuring": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.10.1.tgz", - "integrity": "sha512-V/nUc4yGWG71OhaTH705pU8ZSdM6c1KmmLP8ys59oOYbT7RpMYAR3MsVOt6OHL0WzG7BlTU076va9fjJyYzJMA==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.10.4.tgz", + "integrity": "sha512-+WmfvyfsyF603iPa6825mq6Qrb7uLjTOsa3XOFzlYcYDHSS4QmpOWOL0NNBY5qMbvrcf3tq0Cw+v4lxswOBpgA==", "requires": { - "@babel/helper-plugin-utils": "^7.10.1" + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-transform-dotall-regex": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.10.1.tgz", - "integrity": "sha512-19VIMsD1dp02RvduFUmfzj8uknaO3uiHHF0s3E1OHnVsNj8oge8EQ5RzHRbJjGSetRnkEuBYO7TG1M5kKjGLOA==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.10.4.tgz", + "integrity": "sha512-ZEAVvUTCMlMFAbASYSVQoxIbHm2OkG2MseW6bV2JjIygOjdVv8tuxrCTzj1+Rynh7ODb8GivUy7dzEXzEhuPaA==", "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.10.1", - "@babel/helper-plugin-utils": "^7.10.1" + "@babel/helper-create-regexp-features-plugin": "^7.10.4", + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-transform-duplicate-keys": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.10.1.tgz", - "integrity": "sha512-wIEpkX4QvX8Mo9W6XF3EdGttrIPZWozHfEaDTU0WJD/TDnXMvdDh30mzUl/9qWhnf7naicYartcEfUghTCSNpA==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.10.4.tgz", + "integrity": "sha512-GL0/fJnmgMclHiBTTWXNlYjYsA7rDrtsazHG6mglaGSTh0KsrW04qml+Bbz9FL0LcJIRwBWL5ZqlNHKTkU3xAA==", "requires": { - "@babel/helper-plugin-utils": "^7.10.1" + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-transform-exponentiation-operator": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.10.1.tgz", - "integrity": "sha512-lr/przdAbpEA2BUzRvjXdEDLrArGRRPwbaF9rvayuHRvdQ7lUTTkZnhZrJ4LE2jvgMRFF4f0YuPQ20vhiPYxtA==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.10.4.tgz", + "integrity": "sha512-S5HgLVgkBcRdyQAHbKj+7KyuWx8C6t5oETmUuwz1pt3WTWJhsUV0WIIXuVvfXMxl/QQyHKlSCNNtaIamG8fysw==", "requires": { - "@babel/helper-builder-binary-assignment-operator-visitor": "^7.10.1", - "@babel/helper-plugin-utils": "^7.10.1" + "@babel/helper-builder-binary-assignment-operator-visitor": "^7.10.4", + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-transform-flow-strip-types": { @@ -650,199 +1693,317 @@ } }, "@babel/plugin-transform-for-of": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.10.1.tgz", - "integrity": "sha512-US8KCuxfQcn0LwSCMWMma8M2R5mAjJGsmoCBVwlMygvmDUMkTCykc84IqN1M7t+agSfOmLYTInLCHJM+RUoz+w==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.10.4.tgz", + "integrity": "sha512-ItdQfAzu9AlEqmusA/65TqJ79eRcgGmpPPFvBnGILXZH975G0LNjP1yjHvGgfuCxqrPPueXOPe+FsvxmxKiHHQ==", "requires": { - "@babel/helper-plugin-utils": "^7.10.1" + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-transform-function-name": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.10.1.tgz", - "integrity": "sha512-//bsKsKFBJfGd65qSNNh1exBy5Y9gD9ZN+DvrJ8f7HXr4avE5POW6zB7Rj6VnqHV33+0vXWUwJT0wSHubiAQkw==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.10.4.tgz", + "integrity": "sha512-OcDCq2y5+E0dVD5MagT5X+yTRbcvFjDI2ZVAottGH6tzqjx/LKpgkUepu3hp/u4tZBzxxpNGwLsAvGBvQ2mJzg==", "requires": { - "@babel/helper-function-name": "^7.10.1", - "@babel/helper-plugin-utils": "^7.10.1" + "@babel/helper-function-name": "^7.10.4", + "@babel/helper-plugin-utils": "^7.10.4" + }, + "dependencies": { + "@babel/code-frame": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.10.4.tgz", + "integrity": "sha512-vG6SvB6oYEhvgisZNFRmRCUkLz11c7rp+tbNTynGqc6mS1d5ATd/sGyV6W0KZZnXRKMTzZDRgQT3Ou9jhpAfUg==", + "requires": { + "@babel/highlight": "^7.10.4" + } + }, + "@babel/helper-function-name": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.10.4.tgz", + "integrity": "sha512-YdaSyz1n8gY44EmN7x44zBn9zQ1Ry2Y+3GTA+3vH6Mizke1Vw0aWDM66FOYEPw8//qKkmqOckrGgTYa+6sceqQ==", + "requires": { + "@babel/helper-get-function-arity": "^7.10.4", + "@babel/template": "^7.10.4", + "@babel/types": "^7.10.4" + } + }, + "@babel/helper-get-function-arity": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.10.4.tgz", + "integrity": "sha512-EkN3YDB+SRDgiIUnNgcmiD361ti+AVbL3f3Henf6dqqUyr5dMsorno0lJWJuLhDhkI5sYEpgj6y9kB8AOU1I2A==", + "requires": { + "@babel/types": "^7.10.4" + } + }, + "@babel/helper-validator-identifier": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.4.tgz", + "integrity": "sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw==" + }, + "@babel/highlight": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.10.4.tgz", + "integrity": "sha512-i6rgnR/YgPEQzZZnbTHHuZdlE8qyoBNalD6F+q4vAFlcMEcqmkoG+mPqJYJCo63qPf74+Y1UZsl3l6f7/RIkmA==", + "requires": { + "@babel/helper-validator-identifier": "^7.10.4", + "chalk": "^2.0.0", + "js-tokens": "^4.0.0" + } + }, + "@babel/parser": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.10.4.tgz", + "integrity": "sha512-8jHII4hf+YVDsskTF6WuMB3X4Eh+PsUkC2ljq22so5rHvH+T8BzyL94VOdyFLNR8tBSVXOTbNHOKpR4TfRxVtA==" + }, + "@babel/template": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.10.4.tgz", + "integrity": "sha512-ZCjD27cGJFUB6nmCB1Enki3r+L5kJveX9pq1SvAUKoICy6CZ9yD8xO086YXdYhvNjBdnekm4ZnaP5yC8Cs/1tA==", + "requires": { + "@babel/code-frame": "^7.10.4", + "@babel/parser": "^7.10.4", + "@babel/types": "^7.10.4" + } + }, + "@babel/types": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.10.4.tgz", + "integrity": "sha512-UTCFOxC3FsFHb7lkRMVvgLzaRVamXuAs2Tz4wajva4WxtVY82eZeaUBtC2Zt95FU9TiznuC0Zk35tsim8jeVpg==", + "requires": { + "@babel/helper-validator-identifier": "^7.10.4", + "lodash": "^4.17.13", + "to-fast-properties": "^2.0.0" + } + } } }, "@babel/plugin-transform-literals": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.10.1.tgz", - "integrity": "sha512-qi0+5qgevz1NHLZroObRm5A+8JJtibb7vdcPQF1KQE12+Y/xxl8coJ+TpPW9iRq+Mhw/NKLjm+5SHtAHCC7lAw==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.10.4.tgz", + "integrity": "sha512-Xd/dFSTEVuUWnyZiMu76/InZxLTYilOSr1UlHV+p115Z/Le2Fi1KXkJUYz0b42DfndostYlPub3m8ZTQlMaiqQ==", "requires": { - "@babel/helper-plugin-utils": "^7.10.1" + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-transform-member-expression-literals": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.10.1.tgz", - "integrity": "sha512-UmaWhDokOFT2GcgU6MkHC11i0NQcL63iqeufXWfRy6pUOGYeCGEKhvfFO6Vz70UfYJYHwveg62GS83Rvpxn+NA==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.10.4.tgz", + "integrity": "sha512-0bFOvPyAoTBhtcJLr9VcwZqKmSjFml1iVxvPL0ReomGU53CX53HsM4h2SzckNdkQcHox1bpAqzxBI1Y09LlBSw==", "requires": { - "@babel/helper-plugin-utils": "^7.10.1" + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-transform-modules-amd": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.10.1.tgz", - "integrity": "sha512-31+hnWSFRI4/ACFr1qkboBbrTxoBIzj7qA69qlq8HY8p7+YCzkCT6/TvQ1a4B0z27VeWtAeJd6pr5G04dc1iHw==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.10.4.tgz", + "integrity": "sha512-3Fw+H3WLUrTlzi3zMiZWp3AR4xadAEMv6XRCYnd5jAlLM61Rn+CRJaZMaNvIpcJpQ3vs1kyifYvEVPFfoSkKOA==", "requires": { - "@babel/helper-module-transforms": "^7.10.1", - "@babel/helper-plugin-utils": "^7.10.1", + "@babel/helper-module-transforms": "^7.10.4", + "@babel/helper-plugin-utils": "^7.10.4", "babel-plugin-dynamic-import-node": "^2.3.3" } }, "@babel/plugin-transform-modules-commonjs": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.10.1.tgz", - "integrity": "sha512-AQG4fc3KOah0vdITwt7Gi6hD9BtQP/8bhem7OjbaMoRNCH5Djx42O2vYMfau7QnAzQCa+RJnhJBmFFMGpQEzrg==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.10.4.tgz", + "integrity": "sha512-Xj7Uq5o80HDLlW64rVfDBhao6OX89HKUmb+9vWYaLXBZOma4gA6tw4Ni1O5qVDoZWUV0fxMYA0aYzOawz0l+1w==", "requires": { - "@babel/helper-module-transforms": "^7.10.1", - "@babel/helper-plugin-utils": "^7.10.1", - "@babel/helper-simple-access": "^7.10.1", + "@babel/helper-module-transforms": "^7.10.4", + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/helper-simple-access": "^7.10.4", "babel-plugin-dynamic-import-node": "^2.3.3" } }, "@babel/plugin-transform-modules-systemjs": { - "version": "7.10.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.10.3.tgz", - "integrity": "sha512-GWXWQMmE1GH4ALc7YXW56BTh/AlzvDWhUNn9ArFF0+Cz5G8esYlVbXfdyHa1xaD1j+GnBoCeoQNlwtZTVdiG/A==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.10.4.tgz", + "integrity": "sha512-Tb28LlfxrTiOTGtZFsvkjpyjCl9IoaRI52AEU/VIwOwvDQWtbNJsAqTXzh+5R7i74e/OZHH2c2w2fsOqAfnQYQ==", "requires": { - "@babel/helper-hoist-variables": "^7.10.3", - "@babel/helper-module-transforms": "^7.10.1", - "@babel/helper-plugin-utils": "^7.10.3", + "@babel/helper-hoist-variables": "^7.10.4", + "@babel/helper-module-transforms": "^7.10.4", + "@babel/helper-plugin-utils": "^7.10.4", "babel-plugin-dynamic-import-node": "^2.3.3" } }, "@babel/plugin-transform-modules-umd": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.10.1.tgz", - "integrity": "sha512-EIuiRNMd6GB6ulcYlETnYYfgv4AxqrswghmBRQbWLHZxN4s7mupxzglnHqk9ZiUpDI4eRWewedJJNj67PWOXKA==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.10.4.tgz", + "integrity": "sha512-mohW5q3uAEt8T45YT7Qc5ws6mWgJAaL/8BfWD9Dodo1A3RKWli8wTS+WiQ/knF+tXlPirW/1/MqzzGfCExKECA==", "requires": { - "@babel/helper-module-transforms": "^7.10.1", - "@babel/helper-plugin-utils": "^7.10.1" + "@babel/helper-module-transforms": "^7.10.4", + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-transform-named-capturing-groups-regex": { - "version": "7.10.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.10.3.tgz", - "integrity": "sha512-I3EH+RMFyVi8Iy/LekQm948Z4Lz4yKT7rK+vuCAeRm0kTa6Z5W7xuhRxDNJv0FPya/her6AUgrDITb70YHtTvA==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.10.4.tgz", + "integrity": "sha512-V6LuOnD31kTkxQPhKiVYzYC/Jgdq53irJC/xBSmqcNcqFGV+PER4l6rU5SH2Vl7bH9mLDHcc0+l9HUOe4RNGKA==", "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.8.3" + "@babel/helper-create-regexp-features-plugin": "^7.10.4" } }, "@babel/plugin-transform-new-target": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.10.1.tgz", - "integrity": "sha512-MBlzPc1nJvbmO9rPr1fQwXOM2iGut+JC92ku6PbiJMMK7SnQc1rytgpopveE3Evn47gzvGYeCdgfCDbZo0ecUw==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.10.4.tgz", + "integrity": "sha512-YXwWUDAH/J6dlfwqlWsztI2Puz1NtUAubXhOPLQ5gjR/qmQ5U96DY4FQO8At33JN4XPBhrjB8I4eMmLROjjLjw==", "requires": { - "@babel/helper-plugin-utils": "^7.10.1" + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-transform-object-super": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.10.1.tgz", - "integrity": "sha512-WnnStUDN5GL+wGQrJylrnnVlFhFmeArINIR9gjhSeYyvroGhBrSAXYg/RHsnfzmsa+onJrTJrEClPzgNmmQ4Gw==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.10.4.tgz", + "integrity": "sha512-5iTw0JkdRdJvr7sY0vHqTpnruUpTea32JHmq/atIWqsnNussbRzjEDyWep8UNztt1B5IusBYg8Irb0bLbiEBCQ==", "requires": { - "@babel/helper-plugin-utils": "^7.10.1", - "@babel/helper-replace-supers": "^7.10.1" + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/helper-replace-supers": "^7.10.4" } }, "@babel/plugin-transform-parameters": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.10.1.tgz", - "integrity": "sha512-tJ1T0n6g4dXMsL45YsSzzSDZCxiHXAQp/qHrucOq5gEHncTA3xDxnd5+sZcoQp+N1ZbieAaB8r/VUCG0gqseOg==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.10.4.tgz", + "integrity": "sha512-RurVtZ/D5nYfEg0iVERXYKEgDFeesHrHfx8RT05Sq57ucj2eOYAP6eu5fynL4Adju4I/mP/I6SO0DqNWAXjfLQ==", "requires": { - "@babel/helper-get-function-arity": "^7.10.1", - "@babel/helper-plugin-utils": "^7.10.1" + "@babel/helper-get-function-arity": "^7.10.4", + "@babel/helper-plugin-utils": "^7.10.4" + }, + "dependencies": { + "@babel/helper-get-function-arity": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.10.4.tgz", + "integrity": "sha512-EkN3YDB+SRDgiIUnNgcmiD361ti+AVbL3f3Henf6dqqUyr5dMsorno0lJWJuLhDhkI5sYEpgj6y9kB8AOU1I2A==", + "requires": { + "@babel/types": "^7.10.4" + } + }, + "@babel/helper-validator-identifier": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.4.tgz", + "integrity": "sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw==" + }, + "@babel/types": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.10.4.tgz", + "integrity": "sha512-UTCFOxC3FsFHb7lkRMVvgLzaRVamXuAs2Tz4wajva4WxtVY82eZeaUBtC2Zt95FU9TiznuC0Zk35tsim8jeVpg==", + "requires": { + "@babel/helper-validator-identifier": "^7.10.4", + "lodash": "^4.17.13", + "to-fast-properties": "^2.0.0" + } + } } }, "@babel/plugin-transform-property-literals": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.10.1.tgz", - "integrity": "sha512-Kr6+mgag8auNrgEpbfIWzdXYOvqDHZOF0+Bx2xh4H2EDNwcbRb9lY6nkZg8oSjsX+DH9Ebxm9hOqtKW+gRDeNA==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.10.4.tgz", + "integrity": "sha512-ofsAcKiUxQ8TY4sScgsGeR2vJIsfrzqvFb9GvJ5UdXDzl+MyYCaBj/FGzXuv7qE0aJcjWMILny1epqelnFlz8g==", "requires": { - "@babel/helper-plugin-utils": "^7.10.1" + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-transform-react-constant-elements": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-constant-elements/-/plugin-transform-react-constant-elements-7.10.1.tgz", - "integrity": "sha512-V4os6bkWt/jbrzfyVcZn2ZpuHZkvj3vyBU0U/dtS8SZuMS7Rfx5oknTrtfyXJ2/QZk8gX7Yls5Z921ItNpE30Q==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-constant-elements/-/plugin-transform-react-constant-elements-7.10.4.tgz", + "integrity": "sha512-cYmQBW1pXrqBte1raMkAulXmi7rjg3VI6ZLg9QIic8Hq7BtYXaWuZSxsr2siOMI6SWwpxjWfnwhTUrd7JlAV7g==", "requires": { - "@babel/helper-plugin-utils": "^7.10.1" + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-transform-react-display-name": { - "version": "7.10.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.10.3.tgz", - "integrity": "sha512-dOV44bnSW5KZ6kYF6xSHBth7TFiHHZReYXH/JH3XnFNV+soEL1F5d8JT7AJ3ZBncd19Qul7SN4YpBnyWOnQ8KA==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.10.4.tgz", + "integrity": "sha512-Zd4X54Mu9SBfPGnEcaGcOrVAYOtjT2on8QZkLKEq1S/tHexG39d9XXGZv19VfRrDjPJzFmPfTAqOQS1pfFOujw==", "requires": { - "@babel/helper-plugin-utils": "^7.10.3" + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-transform-react-jsx": { - "version": "7.10.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.10.3.tgz", - "integrity": "sha512-Y21E3rZmWICRJnvbGVmDLDZ8HfNDIwjGF3DXYHx1le0v0mIHCs0Gv5SavyW5Z/jgAHLaAoJPiwt+Dr7/zZKcOQ==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.10.4.tgz", + "integrity": "sha512-L+MfRhWjX0eI7Js093MM6MacKU4M6dnCRa/QPDwYMxjljzSCzzlzKzj9Pk4P3OtrPcxr2N3znR419nr3Xw+65A==", "requires": { - "@babel/helper-builder-react-jsx": "^7.10.3", - "@babel/helper-builder-react-jsx-experimental": "^7.10.1", - "@babel/helper-plugin-utils": "^7.10.3", - "@babel/plugin-syntax-jsx": "^7.10.1" + "@babel/helper-builder-react-jsx": "^7.10.4", + "@babel/helper-builder-react-jsx-experimental": "^7.10.4", + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/plugin-syntax-jsx": "^7.10.4" } }, "@babel/plugin-transform-react-jsx-development": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-development/-/plugin-transform-react-jsx-development-7.10.1.tgz", - "integrity": "sha512-XwDy/FFoCfw9wGFtdn5Z+dHh6HXKHkC6DwKNWpN74VWinUagZfDcEJc3Y8Dn5B3WMVnAllX8Kviaw7MtC5Epwg==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-development/-/plugin-transform-react-jsx-development-7.10.4.tgz", + "integrity": "sha512-RM3ZAd1sU1iQ7rI2dhrZRZGv0aqzNQMbkIUCS1txYpi9wHQ2ZHNjo5TwX+UD6pvFW4AbWqLVYvKy5qJSAyRGjQ==", "requires": { - "@babel/helper-builder-react-jsx-experimental": "^7.10.1", - "@babel/helper-plugin-utils": "^7.10.1", - "@babel/plugin-syntax-jsx": "^7.10.1" + "@babel/helper-builder-react-jsx-experimental": "^7.10.4", + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/plugin-syntax-jsx": "^7.10.4" } }, "@babel/plugin-transform-react-jsx-self": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.10.1.tgz", - "integrity": "sha512-4p+RBw9d1qV4S749J42ZooeQaBomFPrSxa9JONLHJ1TxCBo3TzJ79vtmG2S2erUT8PDDrPdw4ZbXGr2/1+dILA==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.10.4.tgz", + "integrity": "sha512-yOvxY2pDiVJi0axdTWHSMi5T0DILN+H+SaeJeACHKjQLezEzhLx9nEF9xgpBLPtkZsks9cnb5P9iBEi21En3gg==", "requires": { - "@babel/helper-plugin-utils": "^7.10.1", - "@babel/plugin-syntax-jsx": "^7.10.1" + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/plugin-syntax-jsx": "^7.10.4" } }, "@babel/plugin-transform-react-jsx-source": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.10.1.tgz", - "integrity": "sha512-neAbaKkoiL+LXYbGDvh6PjPG+YeA67OsZlE78u50xbWh2L1/C81uHiNP5d1fw+uqUIoiNdCC8ZB+G4Zh3hShJA==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.10.4.tgz", + "integrity": "sha512-FTK3eQFrPv2aveerUSazFmGygqIdTtvskG50SnGnbEUnRPcGx2ylBhdFIzoVS1ty44hEgcPoCAyw5r3VDEq+Ug==", "requires": { - "@babel/helper-plugin-utils": "^7.10.1", - "@babel/plugin-syntax-jsx": "^7.10.1" + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/plugin-syntax-jsx": "^7.10.4" } }, "@babel/plugin-transform-react-pure-annotations": { - "version": "7.10.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-pure-annotations/-/plugin-transform-react-pure-annotations-7.10.3.tgz", - "integrity": "sha512-n/fWYGqvTl7OLZs/QcWaKMFdADPvC3V6jYuEOpPyvz97onsW9TXn196fHnHW1ZgkO20/rxLOgKnEtN1q9jkgqA==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-pure-annotations/-/plugin-transform-react-pure-annotations-7.10.4.tgz", + "integrity": "sha512-+njZkqcOuS8RaPakrnR9KvxjoG1ASJWpoIv/doyWngId88JoFlPlISenGXjrVacZUIALGUr6eodRs1vmPnF23A==", "requires": { - "@babel/helper-annotate-as-pure": "^7.10.1", - "@babel/helper-plugin-utils": "^7.10.3" + "@babel/helper-annotate-as-pure": "^7.10.4", + "@babel/helper-plugin-utils": "^7.10.4" + }, + "dependencies": { + "@babel/helper-annotate-as-pure": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.10.4.tgz", + "integrity": "sha512-XQlqKQP4vXFB7BN8fEEerrmYvHp3fK/rBkRFz9jaJbzK0B1DSfej9Kc7ZzE8Z/OnId1jpJdNAZ3BFQjWG68rcA==", + "requires": { + "@babel/types": "^7.10.4" + } + }, + "@babel/helper-validator-identifier": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.4.tgz", + "integrity": "sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw==" + }, + "@babel/types": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.10.4.tgz", + "integrity": "sha512-UTCFOxC3FsFHb7lkRMVvgLzaRVamXuAs2Tz4wajva4WxtVY82eZeaUBtC2Zt95FU9TiznuC0Zk35tsim8jeVpg==", + "requires": { + "@babel/helper-validator-identifier": "^7.10.4", + "lodash": "^4.17.13", + "to-fast-properties": "^2.0.0" + } + } } }, "@babel/plugin-transform-regenerator": { - "version": "7.10.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.10.3.tgz", - "integrity": "sha512-H5kNeW0u8mbk0qa1jVIVTeJJL6/TJ81ltD4oyPx0P499DhMJrTmmIFCmJ3QloGpQG8K9symccB7S7SJpCKLwtw==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.10.4.tgz", + "integrity": "sha512-3thAHwtor39A7C04XucbMg17RcZ3Qppfxr22wYzZNcVIkPHfpM9J0SO8zuCV6SZa265kxBJSrfKTvDCYqBFXGw==", "requires": { "regenerator-transform": "^0.14.2" } }, "@babel/plugin-transform-reserved-words": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.10.1.tgz", - "integrity": "sha512-qN1OMoE2nuqSPmpTqEM7OvJ1FkMEV+BjVeZZm9V9mq/x1JLKQ4pcv8riZJMNN3u2AUGl0ouOMjRr2siecvHqUQ==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.10.4.tgz", + "integrity": "sha512-hGsw1O6Rew1fkFbDImZIEqA8GoidwTAilwCyWqLBM9f+e/u/sQMQu7uX6dyokfOayRuuVfKOW4O7HvaBWM+JlQ==", "requires": { - "@babel/helper-plugin-utils": "^7.10.1" + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-transform-runtime": { @@ -864,138 +2025,163 @@ } }, "@babel/plugin-transform-shorthand-properties": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.10.1.tgz", - "integrity": "sha512-AR0E/lZMfLstScFwztApGeyTHJ5u3JUKMjneqRItWeEqDdHWZwAOKycvQNCasCK/3r5YXsuNG25funcJDu7Y2g==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.10.4.tgz", + "integrity": "sha512-AC2K/t7o07KeTIxMoHneyX90v3zkm5cjHJEokrPEAGEy3UCp8sLKfnfOIGdZ194fyN4wfX/zZUWT9trJZ0qc+Q==", "requires": { - "@babel/helper-plugin-utils": "^7.10.1" + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-transform-spread": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.10.1.tgz", - "integrity": "sha512-8wTPym6edIrClW8FI2IoaePB91ETOtg36dOkj3bYcNe7aDMN2FXEoUa+WrmPc4xa1u2PQK46fUX2aCb+zo9rfw==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.10.4.tgz", + "integrity": "sha512-1e/51G/Ni+7uH5gktbWv+eCED9pP8ZpRhZB3jOaI3mmzfvJTWHkuyYTv0Z5PYtyM+Tr2Ccr9kUdQxn60fI5WuQ==", "requires": { - "@babel/helper-plugin-utils": "^7.10.1" + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-transform-sticky-regex": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.10.1.tgz", - "integrity": "sha512-j17ojftKjrL7ufX8ajKvwRilwqTok4q+BjkknmQw9VNHnItTyMP5anPFzxFJdCQs7clLcWpCV3ma+6qZWLnGMA==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.10.4.tgz", + "integrity": "sha512-Ddy3QZfIbEV0VYcVtFDCjeE4xwVTJWTmUtorAJkn6u/92Z/nWJNV+mILyqHKrUxXYKA2EoCilgoPePymKL4DvQ==", "requires": { - "@babel/helper-plugin-utils": "^7.10.1", - "@babel/helper-regex": "^7.10.1" + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/helper-regex": "^7.10.4" } }, "@babel/plugin-transform-template-literals": { - "version": "7.10.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.10.3.tgz", - "integrity": "sha512-yaBn9OpxQra/bk0/CaA4wr41O0/Whkg6nqjqApcinxM7pro51ojhX6fv1pimAnVjVfDy14K0ULoRL70CA9jWWA==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.10.4.tgz", + "integrity": "sha512-4NErciJkAYe+xI5cqfS8pV/0ntlY5N5Ske/4ImxAVX7mk9Rxt2bwDTGv1Msc2BRJvWQcmYEC+yoMLdX22aE4VQ==", "requires": { - "@babel/helper-annotate-as-pure": "^7.10.1", - "@babel/helper-plugin-utils": "^7.10.3" + "@babel/helper-annotate-as-pure": "^7.10.4", + "@babel/helper-plugin-utils": "^7.10.4" + }, + "dependencies": { + "@babel/helper-annotate-as-pure": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.10.4.tgz", + "integrity": "sha512-XQlqKQP4vXFB7BN8fEEerrmYvHp3fK/rBkRFz9jaJbzK0B1DSfej9Kc7ZzE8Z/OnId1jpJdNAZ3BFQjWG68rcA==", + "requires": { + "@babel/types": "^7.10.4" + } + }, + "@babel/helper-validator-identifier": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.4.tgz", + "integrity": "sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw==" + }, + "@babel/types": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.10.4.tgz", + "integrity": "sha512-UTCFOxC3FsFHb7lkRMVvgLzaRVamXuAs2Tz4wajva4WxtVY82eZeaUBtC2Zt95FU9TiznuC0Zk35tsim8jeVpg==", + "requires": { + "@babel/helper-validator-identifier": "^7.10.4", + "lodash": "^4.17.13", + "to-fast-properties": "^2.0.0" + } + } } }, "@babel/plugin-transform-typeof-symbol": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.10.1.tgz", - "integrity": "sha512-qX8KZcmbvA23zDi+lk9s6hC1FM7jgLHYIjuLgULgc8QtYnmB3tAVIYkNoKRQ75qWBeyzcoMoK8ZQmogGtC/w0g==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.10.4.tgz", + "integrity": "sha512-QqNgYwuuW0y0H+kUE/GWSR45t/ccRhe14Fs/4ZRouNNQsyd4o3PG4OtHiIrepbM2WKUBDAXKCAK/Lk4VhzTaGA==", "requires": { - "@babel/helper-plugin-utils": "^7.10.1" + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-transform-typescript": { - "version": "7.10.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.10.3.tgz", - "integrity": "sha512-qU9Lu7oQyh3PGMQncNjQm8RWkzw6LqsWZQlZPQMgrGt6s3YiBIaQ+3CQV/FA/icGS5XlSWZGwo/l8ErTyelS0Q==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.10.4.tgz", + "integrity": "sha512-3WpXIKDJl/MHoAN0fNkSr7iHdUMHZoppXjf2HJ9/ed5Xht5wNIsXllJXdityKOxeA3Z8heYRb1D3p2H5rfCdPw==", "requires": { - "@babel/helper-create-class-features-plugin": "^7.10.3", - "@babel/helper-plugin-utils": "^7.10.3", - "@babel/plugin-syntax-typescript": "^7.10.1" + "@babel/helper-create-class-features-plugin": "^7.10.4", + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/plugin-syntax-typescript": "^7.10.4" } }, "@babel/plugin-transform-unicode-escapes": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.10.1.tgz", - "integrity": "sha512-zZ0Poh/yy1d4jeDWpx/mNwbKJVwUYJX73q+gyh4bwtG0/iUlzdEu0sLMda8yuDFS6LBQlT/ST1SJAR6zYwXWgw==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.10.4.tgz", + "integrity": "sha512-y5XJ9waMti2J+e7ij20e+aH+fho7Wb7W8rNuu72aKRwCHFqQdhkdU2lo3uZ9tQuboEJcUFayXdARhcxLQ3+6Fg==", "requires": { - "@babel/helper-plugin-utils": "^7.10.1" + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-transform-unicode-regex": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.10.1.tgz", - "integrity": "sha512-Y/2a2W299k0VIUdbqYm9X2qS6fE0CUBhhiPpimK6byy7OJ/kORLlIX+J6UrjgNu5awvs62k+6RSslxhcvVw2Tw==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.10.4.tgz", + "integrity": "sha512-wNfsc4s8N2qnIwpO/WP2ZiSyjfpTamT2C9V9FDH/Ljub9zw6P3SjkXcFmc0RQUt96k2fmIvtla2MMjgTwIAC+A==", "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.10.1", - "@babel/helper-plugin-utils": "^7.10.1" + "@babel/helper-create-regexp-features-plugin": "^7.10.4", + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/preset-env": { - "version": "7.10.3", - "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.10.3.tgz", - "integrity": "sha512-jHaSUgiewTmly88bJtMHbOd1bJf2ocYxb5BWKSDQIP5tmgFuS/n0gl+nhSrYDhT33m0vPxp+rP8oYYgPgMNQlg==", - "requires": { - "@babel/compat-data": "^7.10.3", - "@babel/helper-compilation-targets": "^7.10.2", - "@babel/helper-module-imports": "^7.10.3", - "@babel/helper-plugin-utils": "^7.10.3", - "@babel/plugin-proposal-async-generator-functions": "^7.10.3", - "@babel/plugin-proposal-class-properties": "^7.10.1", - "@babel/plugin-proposal-dynamic-import": "^7.10.1", - "@babel/plugin-proposal-json-strings": "^7.10.1", - "@babel/plugin-proposal-nullish-coalescing-operator": "^7.10.1", - "@babel/plugin-proposal-numeric-separator": "^7.10.1", - "@babel/plugin-proposal-object-rest-spread": "^7.10.3", - "@babel/plugin-proposal-optional-catch-binding": "^7.10.1", - "@babel/plugin-proposal-optional-chaining": "^7.10.3", - "@babel/plugin-proposal-private-methods": "^7.10.1", - "@babel/plugin-proposal-unicode-property-regex": "^7.10.1", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.10.4.tgz", + "integrity": "sha512-tcmuQ6vupfMZPrLrc38d0sF2OjLT3/bZ0dry5HchNCQbrokoQi4reXqclvkkAT5b+gWc23meVWpve5P/7+w/zw==", + "requires": { + "@babel/compat-data": "^7.10.4", + "@babel/helper-compilation-targets": "^7.10.4", + "@babel/helper-module-imports": "^7.10.4", + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/plugin-proposal-async-generator-functions": "^7.10.4", + "@babel/plugin-proposal-class-properties": "^7.10.4", + "@babel/plugin-proposal-dynamic-import": "^7.10.4", + "@babel/plugin-proposal-json-strings": "^7.10.4", + "@babel/plugin-proposal-nullish-coalescing-operator": "^7.10.4", + "@babel/plugin-proposal-numeric-separator": "^7.10.4", + "@babel/plugin-proposal-object-rest-spread": "^7.10.4", + "@babel/plugin-proposal-optional-catch-binding": "^7.10.4", + "@babel/plugin-proposal-optional-chaining": "^7.10.4", + "@babel/plugin-proposal-private-methods": "^7.10.4", + "@babel/plugin-proposal-unicode-property-regex": "^7.10.4", "@babel/plugin-syntax-async-generators": "^7.8.0", - "@babel/plugin-syntax-class-properties": "^7.10.1", + "@babel/plugin-syntax-class-properties": "^7.10.4", "@babel/plugin-syntax-dynamic-import": "^7.8.0", "@babel/plugin-syntax-json-strings": "^7.8.0", "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.0", - "@babel/plugin-syntax-numeric-separator": "^7.10.1", + "@babel/plugin-syntax-numeric-separator": "^7.10.4", "@babel/plugin-syntax-object-rest-spread": "^7.8.0", "@babel/plugin-syntax-optional-catch-binding": "^7.8.0", "@babel/plugin-syntax-optional-chaining": "^7.8.0", - "@babel/plugin-syntax-top-level-await": "^7.10.1", - "@babel/plugin-transform-arrow-functions": "^7.10.1", - "@babel/plugin-transform-async-to-generator": "^7.10.1", - "@babel/plugin-transform-block-scoped-functions": "^7.10.1", - "@babel/plugin-transform-block-scoping": "^7.10.1", - "@babel/plugin-transform-classes": "^7.10.3", - "@babel/plugin-transform-computed-properties": "^7.10.3", - "@babel/plugin-transform-destructuring": "^7.10.1", - "@babel/plugin-transform-dotall-regex": "^7.10.1", - "@babel/plugin-transform-duplicate-keys": "^7.10.1", - "@babel/plugin-transform-exponentiation-operator": "^7.10.1", - "@babel/plugin-transform-for-of": "^7.10.1", - "@babel/plugin-transform-function-name": "^7.10.1", - "@babel/plugin-transform-literals": "^7.10.1", - "@babel/plugin-transform-member-expression-literals": "^7.10.1", - "@babel/plugin-transform-modules-amd": "^7.10.1", - "@babel/plugin-transform-modules-commonjs": "^7.10.1", - "@babel/plugin-transform-modules-systemjs": "^7.10.3", - "@babel/plugin-transform-modules-umd": "^7.10.1", - "@babel/plugin-transform-named-capturing-groups-regex": "^7.10.3", - "@babel/plugin-transform-new-target": "^7.10.1", - "@babel/plugin-transform-object-super": "^7.10.1", - "@babel/plugin-transform-parameters": "^7.10.1", - "@babel/plugin-transform-property-literals": "^7.10.1", - "@babel/plugin-transform-regenerator": "^7.10.3", - "@babel/plugin-transform-reserved-words": "^7.10.1", - "@babel/plugin-transform-shorthand-properties": "^7.10.1", - "@babel/plugin-transform-spread": "^7.10.1", - "@babel/plugin-transform-sticky-regex": "^7.10.1", - "@babel/plugin-transform-template-literals": "^7.10.3", - "@babel/plugin-transform-typeof-symbol": "^7.10.1", - "@babel/plugin-transform-unicode-escapes": "^7.10.1", - "@babel/plugin-transform-unicode-regex": "^7.10.1", + "@babel/plugin-syntax-top-level-await": "^7.10.4", + "@babel/plugin-transform-arrow-functions": "^7.10.4", + "@babel/plugin-transform-async-to-generator": "^7.10.4", + "@babel/plugin-transform-block-scoped-functions": "^7.10.4", + "@babel/plugin-transform-block-scoping": "^7.10.4", + "@babel/plugin-transform-classes": "^7.10.4", + "@babel/plugin-transform-computed-properties": "^7.10.4", + "@babel/plugin-transform-destructuring": "^7.10.4", + "@babel/plugin-transform-dotall-regex": "^7.10.4", + "@babel/plugin-transform-duplicate-keys": "^7.10.4", + "@babel/plugin-transform-exponentiation-operator": "^7.10.4", + "@babel/plugin-transform-for-of": "^7.10.4", + "@babel/plugin-transform-function-name": "^7.10.4", + "@babel/plugin-transform-literals": "^7.10.4", + "@babel/plugin-transform-member-expression-literals": "^7.10.4", + "@babel/plugin-transform-modules-amd": "^7.10.4", + "@babel/plugin-transform-modules-commonjs": "^7.10.4", + "@babel/plugin-transform-modules-systemjs": "^7.10.4", + "@babel/plugin-transform-modules-umd": "^7.10.4", + "@babel/plugin-transform-named-capturing-groups-regex": "^7.10.4", + "@babel/plugin-transform-new-target": "^7.10.4", + "@babel/plugin-transform-object-super": "^7.10.4", + "@babel/plugin-transform-parameters": "^7.10.4", + "@babel/plugin-transform-property-literals": "^7.10.4", + "@babel/plugin-transform-regenerator": "^7.10.4", + "@babel/plugin-transform-reserved-words": "^7.10.4", + "@babel/plugin-transform-shorthand-properties": "^7.10.4", + "@babel/plugin-transform-spread": "^7.10.4", + "@babel/plugin-transform-sticky-regex": "^7.10.4", + "@babel/plugin-transform-template-literals": "^7.10.4", + "@babel/plugin-transform-typeof-symbol": "^7.10.4", + "@babel/plugin-transform-unicode-escapes": "^7.10.4", + "@babel/plugin-transform-unicode-regex": "^7.10.4", "@babel/preset-modules": "^0.1.3", - "@babel/types": "^7.10.3", + "@babel/types": "^7.10.4", "browserslist": "^4.12.0", "core-js-compat": "^3.6.2", "invariant": "^2.2.2", @@ -1003,6 +2189,29 @@ "semver": "^5.5.0" }, "dependencies": { + "@babel/helper-module-imports": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.10.4.tgz", + "integrity": "sha512-nEQJHqYavI217oD9+s5MUBzk6x1IlvoS9WTPfgG43CbMEeStE0v+r+TucWdx8KFGowPGvyOkDT9+7DHedIDnVw==", + "requires": { + "@babel/types": "^7.10.4" + } + }, + "@babel/helper-validator-identifier": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.4.tgz", + "integrity": "sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw==" + }, + "@babel/types": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.10.4.tgz", + "integrity": "sha512-UTCFOxC3FsFHb7lkRMVvgLzaRVamXuAs2Tz4wajva4WxtVY82eZeaUBtC2Zt95FU9TiznuC0Zk35tsim8jeVpg==", + "requires": { + "@babel/helper-validator-identifier": "^7.10.4", + "lodash": "^4.17.13", + "to-fast-properties": "^2.0.0" + } + }, "semver": { "version": "5.7.1", "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", @@ -1023,17 +2232,17 @@ } }, "@babel/preset-react": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/preset-react/-/preset-react-7.10.1.tgz", - "integrity": "sha512-Rw0SxQ7VKhObmFjD/cUcKhPTtzpeviEFX1E6PgP+cYOhQ98icNqtINNFANlsdbQHrmeWnqdxA4Tmnl1jy5tp3Q==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/preset-react/-/preset-react-7.10.4.tgz", + "integrity": "sha512-BrHp4TgOIy4M19JAfO1LhycVXOPWdDbTRep7eVyatf174Hff+6Uk53sDyajqZPu8W1qXRBiYOfIamek6jA7YVw==", "requires": { - "@babel/helper-plugin-utils": "^7.10.1", - "@babel/plugin-transform-react-display-name": "^7.10.1", - "@babel/plugin-transform-react-jsx": "^7.10.1", - "@babel/plugin-transform-react-jsx-development": "^7.10.1", - "@babel/plugin-transform-react-jsx-self": "^7.10.1", - "@babel/plugin-transform-react-jsx-source": "^7.10.1", - "@babel/plugin-transform-react-pure-annotations": "^7.10.1" + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/plugin-transform-react-display-name": "^7.10.4", + "@babel/plugin-transform-react-jsx": "^7.10.4", + "@babel/plugin-transform-react-jsx-development": "^7.10.4", + "@babel/plugin-transform-react-jsx-self": "^7.10.4", + "@babel/plugin-transform-react-jsx-source": "^7.10.4", + "@babel/plugin-transform-react-pure-annotations": "^7.10.4" } }, "@babel/preset-typescript": { @@ -1744,9 +2953,9 @@ } }, "@types/babel__traverse": { - "version": "7.0.12", - "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.0.12.tgz", - "integrity": "sha512-t4CoEokHTfcyfb4hUaF9oOHu9RmmNWnm1CP0YmMqOOfClKascOmvlEM736vlqeScuGvBDsHkf8R2INd4DWreQA==", + "version": "7.0.13", + "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.0.13.tgz", + "integrity": "sha512-i+zS7t6/s9cdQvbqKDARrcbrPvtJGlbYsMkazo03nTAK3RX9FNrLllXys22uiTGJapPOTZTQ35nHh4ISph4SLQ==", "requires": { "@babel/types": "^7.3.0" } @@ -1762,9 +2971,9 @@ "integrity": "sha512-OCutwjDZ4aFS6PB1UZ988C4YgwlBHJd6wCeQqaLdmadZ/7e+w79+hbMUFC1QXDNCmdyoRfAFdm0RypzwR+Qpag==" }, "@types/glob": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/@types/glob/-/glob-7.1.2.tgz", - "integrity": "sha512-VgNIkxK+j7Nz5P7jvUZlRvhuPSmsEfS03b0alKcq5V/STUKAa3Plemsn5mrQUO7am6OErJ4rhGEGJbACclrtRA==", + "version": "7.1.3", + "resolved": "https://registry.npmjs.org/@types/glob/-/glob-7.1.3.tgz", + "integrity": "sha512-SEYeGAIQIQX8NN6LDKprLjbrd5dARM5EXsd8GI/A5l0apYI1fGMWgPHSe4ZKL4eozlAyI+doUE9XbYS4xCkQ1w==", "requires": { "@types/minimatch": "*", "@types/node": "*" @@ -1803,9 +3012,9 @@ "integrity": "sha512-tHq6qdbT9U1IRSGf14CL0pUlULksvY9OZ+5eEgl1N7t+OA3tGvNpxJCzuKQlsNgCVwbAs670L1vcVQi8j9HjnA==" }, "@types/node": { - "version": "14.0.14", - "resolved": "https://registry.npmjs.org/@types/node/-/node-14.0.14.tgz", - "integrity": "sha512-syUgf67ZQpaJj01/tRTknkMNoBBLWJOBODF0Zm4NrXmiSuxjymFrxnTu1QVYRubhVkRcZLYZG8STTwJRdVm/WQ==" + "version": "14.0.18", + "resolved": "https://registry.npmjs.org/@types/node/-/node-14.0.18.tgz", + "integrity": "sha512-0Z3nS5acM0cIV4JPzrj9g/GH0Et5vmADWtip3YOXOp1NpOLU8V3KoZDc8ny9c1pe/YSYYzQkAWob6dyV/EWg4g==" }, "@types/parse-json": { "version": "4.0.0", @@ -2295,9 +3504,9 @@ } }, "ajv": { - "version": "6.12.2", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.2.tgz", - "integrity": "sha512-k+V+hzjm5q/Mr8ef/1Y9goCmlsK4I6Sm74teeyGvFk1XrOsbsKLjEdrvny42CZ+a8sXbk8KWpY/bDwS+FLL2UQ==", + "version": "6.12.3", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.3.tgz", + "integrity": "sha512-4K0cK3L1hsqk9xIb2z9vs/XU+PGJZ9PNpJRDS9YLzmNdX6jmVPfamLvTJr0aDAusnHyCHO6MjzlkAsgtqp9teA==", "requires": { "fast-deep-equal": "^3.1.1", "fast-json-stable-stringify": "^2.0.0", @@ -3118,18 +4327,9 @@ "integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==" }, "binary-extensions": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.0.0.tgz", - "integrity": "sha512-Phlt0plgpIIBOGTT/ehfFnbNlfsDEiqmzE2KRXoX1bLIlir4X/MR+zSyBEkL05ffWgnRSf/DXv+WrUAVr93/ow==" - }, - "bindings": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/bindings/-/bindings-1.5.0.tgz", - "integrity": "sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==", - "optional": true, - "requires": { - "file-uri-to-path": "1.0.0" - } + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.1.0.tgz", + "integrity": "sha512-1Yj8h9Q+QDF5FzhMs/c9+6UntbD5MkRfRwac8DoEm9ZfUBZ7tZ55YcGVAzEe4bXsdQHEk+s9S5wsOKVdZrw0tQ==" }, "bluebird": { "version": "3.7.2", @@ -3344,12 +4544,12 @@ } }, "browserslist": { - "version": "4.12.1", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.12.1.tgz", - "integrity": "sha512-WMjXwFtPskSW1pQUDJRxvRKRkeCr7usN0O/Za76N+F4oadaTdQHotSGcX9jT/Hs7mSKPkyMFNvqawB/1HzYDKQ==", + "version": "4.13.0", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.13.0.tgz", + "integrity": "sha512-MINatJ5ZNrLnQ6blGvePd/QOz9Xtu+Ne+x29iQSCHfkU5BugKVJwZKn/iiL8UbpIpa3JhviKjz+XxMo0m2caFQ==", "requires": { - "caniuse-lite": "^1.0.30001088", - "electron-to-chromium": "^1.3.481", + "caniuse-lite": "^1.0.30001093", + "electron-to-chromium": "^1.3.488", "escalade": "^3.0.1", "node-releases": "^1.1.58" } @@ -3505,9 +4705,9 @@ } }, "caniuse-lite": { - "version": "1.0.30001088", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001088.tgz", - "integrity": "sha512-6eYUrlShRYveyqKG58HcyOfPgh3zb2xqs7NvT2VVtP3hEUeeWvc3lqhpeMTxYWBBeeaT9A4bKsrtjATm66BTHg==" + "version": "1.0.30001094", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001094.tgz", + "integrity": "sha512-ufHZNtMaDEuRBpTbqD93tIQnngmJ+oBknjvr0IbFympSdtFpAUFmNv4mVKbb53qltxFx0nK3iy32S9AqkLzUNA==" }, "capture-exit": { "version": "2.0.0", @@ -3679,9 +4879,9 @@ } }, "cli-width": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-2.2.1.tgz", - "integrity": "sha512-GRMWDxpOB6Dgk2E5Uo+3eEBvtOOlimMmpbFiKuLFnQzYDavtLFY3K5ona41jgN/WdRZtG7utuVSVTL4HbZHGkw==" + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-3.0.0.tgz", + "integrity": "sha512-FxqpkPPwu1HjuN93Omfm4h8uIanXofW0RxVEW3k5RKx+mJJYSthzNhp32Kzxxy3YAEZ/Dc/EWN1vZRY0+kOhbw==" }, "cliui": { "version": "5.0.0", @@ -3793,9 +4993,9 @@ } }, "colorette": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/colorette/-/colorette-1.2.0.tgz", - "integrity": "sha512-soRSroY+OF/8OdA3PTQXwaDJeMc7TfknKKrxeSCencL2a4+Tx5zhxmmv7hdpCjhKBjehzp8+bwe/T68K0hpIjw==" + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/colorette/-/colorette-1.2.1.tgz", + "integrity": "sha512-puCDz0CzydiSYOrnXpz/PKd69zRrribezjtE9yd4zvytoRc8+RY/KJPvtPFKZS3E3wP6neGyMe0vOTlHO5L3Pw==" }, "combined-stream": { "version": "1.0.8", @@ -4862,9 +6062,9 @@ "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=" }, "electron-to-chromium": { - "version": "1.3.483", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.483.tgz", - "integrity": "sha512-+05RF8S9rk8S0G8eBCqBRBaRq7+UN3lDs2DAvnG8SBSgQO3hjy0+qt4CmRk5eiuGbTcaicgXfPmBi31a+BD3lg==" + "version": "1.3.489", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.489.tgz", + "integrity": "sha512-1FfqjT+IXbs/H9bGJwRIyQQqOXIo7mOVUnv8s7nb2ff01fD0Z8dn1YjKovLDCFe4900Dal2uutR0YzXN5ldqEQ==" }, "elliptic": { "version": "6.5.3", @@ -5925,12 +7125,6 @@ "schema-utils": "^2.5.0" } }, - "file-uri-to-path": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz", - "integrity": "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==", - "optional": true - }, "filesize": { "version": "6.0.1", "resolved": "https://registry.npmjs.org/filesize/-/filesize-6.0.1.tgz", @@ -6860,20 +8054,20 @@ "integrity": "sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw==" }, "inquirer": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-7.2.0.tgz", - "integrity": "sha512-E0c4rPwr9ByePfNlTIB8z51kK1s2n6jrHuJeEHENl/sbq2G/S1auvibgEwNR4uSyiU+PiYHqSwsgGiXjG8p5ZQ==", + "version": "7.3.0", + "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-7.3.0.tgz", + "integrity": "sha512-K+LZp6L/6eE5swqIcVXrxl21aGDU4S50gKH0/d96OMQnSBCyGyZl/oZhbkVmdp5sBoINHd4xZvFSARh2dk6DWA==", "requires": { "ansi-escapes": "^4.2.1", - "chalk": "^3.0.0", + "chalk": "^4.1.0", "cli-cursor": "^3.1.0", - "cli-width": "^2.0.0", + "cli-width": "^3.0.0", "external-editor": "^3.0.3", "figures": "^3.0.0", "lodash": "^4.17.15", "mute-stream": "0.0.8", "run-async": "^2.4.0", - "rxjs": "^6.5.3", + "rxjs": "^6.6.0", "string-width": "^4.1.0", "strip-ansi": "^6.0.0", "through": "^2.3.6" @@ -6889,9 +8083,9 @@ } }, "chalk": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", - "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", + "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", "requires": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -7537,11 +8731,7 @@ "version": "1.2.13", "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.13.tgz", "integrity": "sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw==", - "optional": true, - "requires": { - "bindings": "^1.5.0", - "nan": "^2.12.1" - } + "optional": true } } }, @@ -8708,12 +9898,6 @@ "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.8.tgz", "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==" }, - "nan": { - "version": "2.14.1", - "resolved": "https://registry.npmjs.org/nan/-/nan-2.14.1.tgz", - "integrity": "sha512-isWHgVjnFjh2x2yuJ/tj3JbwoHu3UC2dX5G/88Cm24yB6YopVgxvBObDY7n5xW6ExmFhJpSEQqFPvq9zaXc8Jw==", - "optional": true - }, "nanomatch": { "version": "1.2.13", "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.13.tgz", @@ -10495,11 +11679,6 @@ } } }, - "private": { - "version": "0.1.8", - "resolved": "https://registry.npmjs.org/private/-/private-0.1.8.tgz", - "integrity": "sha512-VvivMrbvd2nKkiG38qjULzlc+4Vx4wm/whI9pQD35YrARNnhxeiRktSOhSukRLFNlzg6Br/cJPet5J/u19r/mg==" - }, "process": { "version": "0.11.10", "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", @@ -10781,6 +11960,11 @@ "pkg-up": "^3.1.0" } }, + "cli-width": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-2.2.1.tgz", + "integrity": "sha512-GRMWDxpOB6Dgk2E5Uo+3eEBvtOOlimMmpbFiKuLFnQzYDavtLFY3K5ona41jgN/WdRZtG7utuVSVTL4HbZHGkw==" + }, "cross-spawn": { "version": "7.0.1", "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.1.tgz", @@ -11141,12 +12325,11 @@ "integrity": "sha512-ZS5w8CpKFinUzOwW3c83oPeVXoNsrLsaCoLtJvAClH135j/R77RuymhiSErhm2lKcwSCIpmvIWSbDkIfAqKQlA==" }, "regenerator-transform": { - "version": "0.14.4", - "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.14.4.tgz", - "integrity": "sha512-EaJaKPBI9GvKpvUz2mz4fhx7WPgvwRLY9v3hlNHWmAuJHI13T4nwKnNvm5RWJzEdnI5g5UwtOww+S8IdoUC2bw==", + "version": "0.14.5", + "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.14.5.tgz", + "integrity": "sha512-eOf6vka5IO151Jfsw2NO9WpGX58W6wWmefK3I1zEGr0lOD0u8rwPaNqQL1aRxUaxLeKO3ArNh3VYg1KbaD+FFw==", "requires": { - "@babel/runtime": "^7.8.4", - "private": "^0.1.8" + "@babel/runtime": "^7.8.4" } }, "regex-not": { @@ -11524,9 +12707,9 @@ } }, "rxjs": { - "version": "6.5.5", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.5.5.tgz", - "integrity": "sha512-WfQI+1gohdf0Dai/Bbmk5L5ItH5tYqm3ki2c5GdWhKjalzjg93N3avFjVStyZZz+A2Em+ZxKH5bNghw9UeylGQ==", + "version": "6.6.0", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.0.tgz", + "integrity": "sha512-3HMA8z/Oz61DUHe+SdOiQyzIf4tOx5oQHmMir7IZEu6TMqCLHT4LRcmNaUS0NwOz8VLvmmBduMsoaUvMaIiqzg==", "requires": { "tslib": "^1.9.0" } @@ -13327,11 +14510,7 @@ "version": "1.2.13", "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.13.tgz", "integrity": "sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw==", - "optional": true, - "requires": { - "bindings": "^1.5.0", - "nan": "^2.12.1" - } + "optional": true }, "glob-parent": { "version": "3.1.0", @@ -13644,11 +14823,7 @@ "version": "1.2.13", "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.13.tgz", "integrity": "sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw==", - "optional": true, - "requires": { - "bindings": "^1.5.0", - "nan": "^2.12.1" - } + "optional": true }, "get-caller-file": { "version": "1.0.3", @@ -13923,9 +15098,9 @@ } }, "whatwg-fetch": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/whatwg-fetch/-/whatwg-fetch-3.0.0.tgz", - "integrity": "sha512-9GSJUgz1D4MfyKU7KRqwOjXCXTqWdFNvEr7eUBYchQiVc744mqK/MzXPNR2WsPkmkOa4ywfg8C2n8h+13Bey1Q==" + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/whatwg-fetch/-/whatwg-fetch-3.1.0.tgz", + "integrity": "sha512-pgmbsVWKpH9GxLXZmtdowDIqtb/rvPyjjQv3z9wLcmgWKFHilKnZD3ldgrOlwJoPGOUluQsRPWd52yVkPfmI1A==" }, "whatwg-mimetype": { "version": "2.3.0", diff --git a/recipe-hooks-project/package.json b/recipe-hooks-project/package.json index 3fdc397c..f8b8f5bb 100644 --- a/recipe-hooks-project/package.json +++ b/recipe-hooks-project/package.json @@ -11,7 +11,7 @@ "react": "^16.13.1", "react-dom": "^16.13.1", "react-router-dom": "^5.2.0", - "react-scripts": "3.4.1", + "react-scripts": "^3.4.1", "styled-components": "^5.1.1", "styled-react-modal": "^2.0.1", "typescript": "^3.9.6" From 837e5d57ea4d846bb5e663fe3c9b0a0e2e7d74c6 Mon Sep 17 00:00:00 2001 From: Francesco Venneri Date: Tue, 7 Jul 2020 12:25:48 +0200 Subject: [PATCH 29/31] [RECIPE-PROJECT] Added jest-dom --- recipe-hooks-project/package-lock.json | 39 ++++++++++++++++++++++-- recipe-hooks-project/src/AppPage.test.js | 4 ++- 2 files changed, 39 insertions(+), 4 deletions(-) diff --git a/recipe-hooks-project/package-lock.json b/recipe-hooks-project/package-lock.json index aabbd17c..70ae4e52 100644 --- a/recipe-hooks-project/package-lock.json +++ b/recipe-hooks-project/package-lock.json @@ -4331,6 +4331,15 @@ "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.1.0.tgz", "integrity": "sha512-1Yj8h9Q+QDF5FzhMs/c9+6UntbD5MkRfRwac8DoEm9ZfUBZ7tZ55YcGVAzEe4bXsdQHEk+s9S5wsOKVdZrw0tQ==" }, + "bindings": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/bindings/-/bindings-1.5.0.tgz", + "integrity": "sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==", + "optional": true, + "requires": { + "file-uri-to-path": "1.0.0" + } + }, "bluebird": { "version": "3.7.2", "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz", @@ -7125,6 +7134,12 @@ "schema-utils": "^2.5.0" } }, + "file-uri-to-path": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz", + "integrity": "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==", + "optional": true + }, "filesize": { "version": "6.0.1", "resolved": "https://registry.npmjs.org/filesize/-/filesize-6.0.1.tgz", @@ -8731,7 +8746,11 @@ "version": "1.2.13", "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.13.tgz", "integrity": "sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw==", - "optional": true + "optional": true, + "requires": { + "bindings": "^1.5.0", + "nan": "^2.12.1" + } } } }, @@ -9898,6 +9917,12 @@ "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.8.tgz", "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==" }, + "nan": { + "version": "2.14.1", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.14.1.tgz", + "integrity": "sha512-isWHgVjnFjh2x2yuJ/tj3JbwoHu3UC2dX5G/88Cm24yB6YopVgxvBObDY7n5xW6ExmFhJpSEQqFPvq9zaXc8Jw==", + "optional": true + }, "nanomatch": { "version": "1.2.13", "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.13.tgz", @@ -14510,7 +14535,11 @@ "version": "1.2.13", "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.13.tgz", "integrity": "sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw==", - "optional": true + "optional": true, + "requires": { + "bindings": "^1.5.0", + "nan": "^2.12.1" + } }, "glob-parent": { "version": "3.1.0", @@ -14823,7 +14852,11 @@ "version": "1.2.13", "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.13.tgz", "integrity": "sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw==", - "optional": true + "optional": true, + "requires": { + "bindings": "^1.5.0", + "nan": "^2.12.1" + } }, "get-caller-file": { "version": "1.0.3", diff --git a/recipe-hooks-project/src/AppPage.test.js b/recipe-hooks-project/src/AppPage.test.js index 8f264059..17137e59 100644 --- a/recipe-hooks-project/src/AppPage.test.js +++ b/recipe-hooks-project/src/AppPage.test.js @@ -1,5 +1,5 @@ import React from "react"; -import {fireEvent, render} from "@testing-library/react"; +import {cleanup, fireEvent, render} from "@testing-library/react"; import {BrowserRouter} from "react-router-dom"; import axios from "axios"; import {AuthContext} from "./contexts/AuthenticationProvider"; @@ -9,6 +9,8 @@ import {waitForElement} from "@testing-library/dom"; jest.mock("axios"); +afterEach(cleanup()); + test("when not authenticated, renders login", () => { const {container} = renderAppPageWithToken(null); From a5e4e905baf291f67f0f3eabc70f8ecade1b6576 Mon Sep 17 00:00:00 2001 From: Francesco Venneri Date: Tue, 7 Jul 2020 12:27:38 +0200 Subject: [PATCH 30/31] [RECIPE-PROJECT] Fixed afterEach thing --- recipe-hooks-project/src/AppPage.test.js | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/recipe-hooks-project/src/AppPage.test.js b/recipe-hooks-project/src/AppPage.test.js index 17137e59..fb65e65b 100644 --- a/recipe-hooks-project/src/AppPage.test.js +++ b/recipe-hooks-project/src/AppPage.test.js @@ -9,7 +9,9 @@ import {waitForElement} from "@testing-library/dom"; jest.mock("axios"); -afterEach(cleanup()); +afterEach(() => { + cleanup() +}); test("when not authenticated, renders login", () => { const {container} = renderAppPageWithToken(null); From 701113f21ca37ff1ce23270bb5a137f4f85b382b Mon Sep 17 00:00:00 2001 From: Francesco Venneri Date: Thu, 9 Jul 2020 09:50:20 +0200 Subject: [PATCH 31/31] Changes after PR review --- recipe-hooks-project/src/App.css | 39 ------------- recipe-hooks-project/src/App.js | 4 +- recipe-hooks-project/src/AppPage.test.js | 55 +------------------ recipe-hooks-project/src/Ingredients.js | 4 +- recipe-hooks-project/src/Profile.js | 2 +- recipe-hooks-project/src/Recipes.js | 15 ++--- recipe-hooks-project/src/Register.js | 10 +--- .../src/{PrivateRoutes.js => Routes.js} | 4 +- .../src/components/General.js | 4 -- 9 files changed, 16 insertions(+), 121 deletions(-) rename recipe-hooks-project/src/{PrivateRoutes.js => Routes.js} (96%) diff --git a/recipe-hooks-project/src/App.css b/recipe-hooks-project/src/App.css index 9221c613..e6382b9c 100644 --- a/recipe-hooks-project/src/App.css +++ b/recipe-hooks-project/src/App.css @@ -1,42 +1,3 @@ -/*.App {*/ -/* text-align: center;*/ -/*}*/ - -/*.App-logo {*/ -/* height: 40vmin;*/ -/* pointer-events: none;*/ -/*}*/ - -/*@media (prefers-reduced-motion: no-preference) {*/ -/* .App-logo {*/ -/* animation: App-logo-spin infinite 20s linear;*/ -/* }*/ -/*}*/ - -/*.App-header {*/ -/* background-color: #282c34;*/ -/* min-height: 100vh;*/ -/* display: flex;*/ -/* flex-direction: column;*/ -/* align-items: center;*/ -/* justify-content: center;*/ -/* font-size: calc(10px + 2vmin);*/ -/* color: white;*/ -/*}*/ - -/*.App-link {*/ -/* color: #61dafb;*/ -/*}*/ - -/*@keyframes App-logo-spin {*/ -/* from {*/ -/* transform: rotate(0deg);*/ -/* }*/ -/* to {*/ -/* transform: rotate(360deg);*/ -/* }*/ -/*}*/ - body, html { height: 100%; width: 100%; diff --git a/recipe-hooks-project/src/App.js b/recipe-hooks-project/src/App.js index 915ceecd..5a64c736 100644 --- a/recipe-hooks-project/src/App.js +++ b/recipe-hooks-project/src/App.js @@ -2,7 +2,7 @@ import React from "react"; import {AuthenticationProvider} from "./contexts/AuthenticationProvider"; import {BrowserRouter, Switch} from "react-router-dom"; import {ThemeProvider} from "styled-components"; -import {PrivateRoutes} from "./PrivateRoutes"; +import {Routes} from "./Routes"; import Navbar from "./Navbar"; import "./App.css"; @@ -16,7 +16,7 @@ function App() {
- +
diff --git a/recipe-hooks-project/src/AppPage.test.js b/recipe-hooks-project/src/AppPage.test.js index fb65e65b..47b300d8 100644 --- a/recipe-hooks-project/src/AppPage.test.js +++ b/recipe-hooks-project/src/AppPage.test.js @@ -1,31 +1,19 @@ import React from "react"; -import {cleanup, fireEvent, render} from "@testing-library/react"; +import {fireEvent, render} from "@testing-library/react"; import {BrowserRouter} from "react-router-dom"; import axios from "axios"; import {AuthContext} from "./contexts/AuthenticationProvider"; import AppPage from "./AppPage"; import Login from "./Login"; -import {waitForElement} from "@testing-library/dom"; jest.mock("axios"); -afterEach(() => { - cleanup() -}); - test("when not authenticated, renders login", () => { const {container} = renderAppPageWithToken(null); expect(container.querySelector("h3")).toHaveTextContent("Login"); }); -// test("when authenticated, do not render login and render the app instead", () => { -// const {container} = renderAppPageWithToken("myToken"); -// -// expect(container.querySelector("input[name=email]")).toBeNull(); -// assertAppIsRenderedProperly(container); -// }); - test("when not authenticated, an user can login", () => { const {container, getByText} = renderAppPageWithToken(null); @@ -50,17 +38,6 @@ test("login fails", () => { expect(container.querySelector("input[name=email]")).toBeInTheDocument(); }); -// test("an user can logout", () => { -// const {container} = renderAppPageWithToken("myToken"); -// -// fireEvent.click(container.querySelector("div[name=Navbar] a[name=Logout]")); -// -// setTimeout(async () => { -// expect(await waitForElement(() => container.querySelector("form h3"), {timeout: 1000})) -// .toHaveTextContent("Login"); -// }, 1000); -// }); - test("creates an user and redirects to login", async () => { const {container, getByText} = renderAppPageWithToken(null); axios.post.mockImplementation(() => Promise.resolve({status: 201, data: {}})); @@ -75,38 +52,8 @@ test("creates an user and redirects to login", async () => { expect(container.querySelector("h3")).toHaveTextContent("Login"); }); }); - - // await expect(sleep).toBeCalledWith(1000); - - // await new Promise(() => setTimeout(() => { - // console.log("Simulate wait to re-render the page after clicking to create an user"); - // }, 100)); - - // await new Promise(() => setTimeout(async () => { - // expect(await waitForElement(() => container.querySelector("h3"), {timeout: 1000})) - // .toHaveTextContent("Login"); - // }, 2000)); - - // setTimeout(async () => { - // console.log("Handler called"); - // expect(await waitForElement(() => container.querySelector("h3"), {timeout: 1000})) - // .toHaveTextContent("Login"); - // }, 1000); }); -// test("creates an user fails and stays in the page", () => { -// const {container} = renderRegisterComponent(); -// -// axios.post.mockImplementation(() => { -// console.log("Simulate call to API") -// Promise.resolve({status: 400, data: {}}) -// }); -// -// fillAndSubmitRegistrationForm(container); -// -// expect(container.querySelector("h3")).toHaveTextContent("Registration"); -// }); - export const sleep = (millis) => new Promise((resolve) => setTimeout(resolve, millis)); function fillAndSubmitRegistrationForm(container) { diff --git a/recipe-hooks-project/src/Ingredients.js b/recipe-hooks-project/src/Ingredients.js index 510c9f2f..bb1ddf40 100644 --- a/recipe-hooks-project/src/Ingredients.js +++ b/recipe-hooks-project/src/Ingredients.js @@ -82,9 +82,9 @@ function Ingredients() { addingIngredient ?
- +
- : + : } diff --git a/recipe-hooks-project/src/Profile.js b/recipe-hooks-project/src/Profile.js index fae6a722..4d49453e 100644 --- a/recipe-hooks-project/src/Profile.js +++ b/recipe-hooks-project/src/Profile.js @@ -47,7 +47,7 @@ function Profile() { } async function modifyUser(password, name) { - if ((name === "" || name === undefined) && (password === "" || password === undefined)) + if (!name && !password) return false; let modifyUserPayload; diff --git a/recipe-hooks-project/src/Recipes.js b/recipe-hooks-project/src/Recipes.js index fa07ec3c..81e09ba3 100644 --- a/recipe-hooks-project/src/Recipes.js +++ b/recipe-hooks-project/src/Recipes.js @@ -70,7 +70,6 @@ function Recipes() { const [link, handleLinkChange] = useInputState(""); async function fetchRecipes() { - console.log("Fetching recipes for: [" + token + "]"); let params = {}; if (selectedIngredients.length > 0) params = {...params, ingredients: selectedIngredients.join(",")}; @@ -95,7 +94,6 @@ function Recipes() { }, [isCreatingNewRecipe, selectedIngredients, selectedTags]); async function fetchIngredients() { - console.log("Fetching ingredients for: [" + token + "]"); const response = await axios.request({ url: RECIPE_API_BASE_URL + INGREDIENTS_RELATIVE_URL, method: "get", @@ -108,7 +106,6 @@ function Recipes() { } async function fetchTags() { - console.log("Fetching tags for: [" + token + "]"); const response = await axios.request({ url: RECIPE_API_BASE_URL + TAGS_RELATIVE_URL, method: "get", @@ -135,9 +132,7 @@ function Recipes() { }); if (response.status === 201) { toggleCreatingNewRecipe(); - console.log("Success"); - } else - console.log("Error"); + } } function handleSelectIngredients(e) { @@ -182,7 +177,7 @@ function Recipes() { return ( ) - }, this)} + })} @@ -193,7 +188,7 @@ function Recipes() { return ( ) - }, this)} + })} @@ -223,7 +218,7 @@ function Recipes() { return ( ) - }, this)} + })} @@ -236,7 +231,7 @@ function Recipes() { return ( ) - }, this)} + })} diff --git a/recipe-hooks-project/src/Register.js b/recipe-hooks-project/src/Register.js index efce3745..43247949 100644 --- a/recipe-hooks-project/src/Register.js +++ b/recipe-hooks-project/src/Register.js @@ -26,15 +26,11 @@ function Register() { } } - const renderRedirect = () => { - if (redirect) { - return ; - } - } - return ( <> - {renderRedirect()} + { + redirect && + }
Registration diff --git a/recipe-hooks-project/src/PrivateRoutes.js b/recipe-hooks-project/src/Routes.js similarity index 96% rename from recipe-hooks-project/src/PrivateRoutes.js rename to recipe-hooks-project/src/Routes.js index 7b300723..f199720a 100644 --- a/recipe-hooks-project/src/PrivateRoutes.js +++ b/recipe-hooks-project/src/Routes.js @@ -10,13 +10,13 @@ import Recipes from "./Recipes"; import RecipeDetails from "./RecipeDetails"; import {AuthContext} from "./contexts/AuthenticationProvider"; -export function PrivateRoutes() { +export function Routes() { const {token} = useContext(AuthContext); return ( - token !== null + token ? (<> }/> diff --git a/recipe-hooks-project/src/components/General.js b/recipe-hooks-project/src/components/General.js index 3f9ae999..cc75c09f 100644 --- a/recipe-hooks-project/src/components/General.js +++ b/recipe-hooks-project/src/components/General.js @@ -2,7 +2,6 @@ import styled from "styled-components"; import {Link} from "react-router-dom"; const Wrapper = styled.div` - // height: 90vh; padding: auto; display: flex; align-items: center; @@ -54,8 +53,6 @@ const Overlay = styled(OverlayOpaqueBackground).attrs((props) => ({ background: white; font-weight: 400; border: 2px solid red; - -webkit-box-sizing: border-box; - -moz-box-sizing: border-box; box-sizing: border-box; box-shadow: 0 19px 38px rgba(220, 20, 60, 0.3), 0 15px 12px rgba(220, 20, 60, 0.1); z-index: 20; @@ -118,7 +115,6 @@ const List = styled.ul` display: flex; justify-content: center; align-items: center; - // flex-direction: column; flex-wrap: wrap; overflow: auto; margin-block-start: 0;

i&StCVE+SeggK?M~LiGF&qiUK_n5cN;Rt z?5CYIXE+!2UyZl0^&pedX^=NLJeqTf;UO2@Gq08L!>U6c{{Rr@*KMMf26%xPBRtc0 z!PhRa^oD7d$qvl4A^60$y(t!!Vv<;vFoSa7jyrv5tDDw6aw@nnl>4=YDA{YDiqyXq zB>w;@lW|XaqQ3hayDvr5YL8y0HQFJVjoch~trd^2qH=~-&vh+03j$NQ_wiDu#-*`& zR=VL8mZKby%)s-S)Ke(Q6*fiI@W72EsOO)Q)BR%57bod5eU$AZ1w8n{rR|E2!YN18 zi+7`}ntQe5U>&kMn#K7mR3blGi+M*(=$0?|Ac_L<_ph4UY#fb;9C7B-!%cDa>uW zGp4kw1cur*z$XL7D_a=#N6##uXOW1aq#g$p#u|%n(582RH(a<;Zor=1{MOg1oLcM$AK>j;$wpGsdpmEM;>C3@jU(W0vX*iBsz<(8y(2z6 ztXnhI`N~wZHd}lH)NVd`*yGp&DE08Agz=K5-#DB6La*=Dqlc)Y5wifQ{Y_r}VeBrRCUI%?7HV~qQDt1Dv%Tftuo zCD`lFhN`pJL>vV^m?V>58S_a--)GS{Q*xy?uyp31X>A^uyai&t{r>=3$G4JGmf7>$ z{Mk@R&%Fh8JpJPkdCH zVC1%JhS8__K?jWUP)i^i!wM#vOj+BKJ&sKkEduYeRo0aLfnkxyw|efwMrB{GLhu(1 zHi7zLta#Y%ft=@Me=g^kgO(Zl)`mDpUS7>CyH{~I8RCeZbT203whx?wfR28&%nnJn z9D=3^v9fvp07`lZy^6{zD`Z<_j!CwRWFC1HV_L~wHju#fk^cZJ$nES6Jfnmp-d@DL zLOAlvoz3k;gm;tOh`L6K@2;fru^2fFJX7#(3r(Y>^y~8;h>^J@Z5alu`8BDxBb7Wn zU|!U3#J9y2m+TE=ISIDYM#GOB$0$Fg0=A+?AaU4L1(C)}gt6>56zMA%*^UqQs`o8~ zQTqgHI%>linjw&T8fF$@;5=d2L6ZI}Jx#r3-q|27ar)M;jmKBll!PywxbpXsEM04+ z*lGsKeNr`^Lx2kw$IzNuelL+^d&U|;*CL#xtO3_PKB%SN)&wF%_6xSfoO2FYX$7wul1?$opNFy$xg^Hc)kN}k$C z)>!012<~gplZ=x=VUYv*Yi>m~wQ8>SzhkkJWZ4o8n@jIF>`x|wpV~bC z0ATi=ZR05tVEyRoE_-19$QL*4up+x1z6NQCRhAVkf#e~lS)*kH9&zTKiq}>#A6Py7 zQf?*W+C1aMd*gpd>smL-3e5qQ+D*WD&OfzAEydzU8h8enWPTlk0C?h$+AGn?Jrbc@ z$QNNHM|@DE^_+=MY@KZpC5}e#BQ-cRlD@=EWv66fm zhw|Gp_P{Y=$RmM7Qczkw(>g0Ipptnd^$Ukn&NJKes}4I-dl|-s;_CW)DIYNBHDa{z z3UF^onbMt8W7FET%FU;x{F5nEXJhhym15$ZFDQ&-KI;s9S$~>D*NG5F*zViySnE=Z z+hyclBj`rzyJUw>l4#gQ#2z@SUIg5%NtIlX_$_R#sETv8|2Or&f%s zX}q(mbiSmsywMgbnNS^r^BTwBMjmoKO`eh~oql+&bsg5yjezGM()87w#h0q}53){& z)Grc)3&XB&2`$UE&=j9{jJ*eN<@XwlZq0+`g z>VB4vSY)_~LbrVT)#nqRIu};5iaR2t@*r5GmUqn*tAeNYtrTyB_ZB4L%L`7pJ5ZeN zJkyY3Q;6MbIC2g!-t>2$XhKmK?W6@pJNdz>Lpj*9TL{L$uYNrH(aj?6mgg18R?CWQQ&}*QPnRll^rhsQEnxEU z3b|lO+uZ#rIXN#w@W8iuFxba&3=d;cf^I|c^a!+$OYKNP2g{!RDZ3nMhheBjQqnCQ zE2p5ew@F=8x$;G1xg6P9EF(ij3JWjT^Q7qTU;2%>sgJlFjSG)cxs$rjiYHq9Dflz+ zlc;)1Yo4jqM7o2<8U^*tO$z~&jCWvt_%-(r0pYw~#GR4tC;L7%=KR-}jm=RmvHt*1 zVvodaPRjR1yXm+u()Kt52;|5N$`2U>vB0X|F?Styrl*uz__ zA5wHZf$d*6>Y{xUGLjd1o2ow_6iF09BN;z1=QPYs@?$yX0!j}X*#}YheI3rMvq2_MoR9`-s=TX&It1}-DW{aqMk*^=7`48gmK{AOh=x9K_M|SHWj@HWrrlwR z@y$FD>}dHNjVmP?{g#lD5OlzixDGkbn$p{HlDHC#y`XlIj@~ge{8fYEiwc|1;1)SR-{3#4>}=? zYA}KT8-UFpk37v3{J7$_b_c`tkMMD@Ao0#C>AX276nt;V_EKf-XjNhy_^ar=Z5at| zn(r=^V zW2Wr3%x5OXh{m|~9{w48CV+(0FJa#+{{WqPX12aJfh;F4WfwomHTb4=E}hbvZLA2Q z6yRfpt?gV`C9@BACUTZ?ACF124g$h4|t}JCCDP1gk55b|w=;R`=(-o(u#l_a! zE9c3RdIDZp2<};0J*(r2%=0*trcXYH>A6ZE*3;o`OhZ2VYN>IhEw!P)mm0~UT`t*y z%t}7up!m4G@~mHA zJFkZNHOdm!>Fu4gxA0&&A0cdCyb1b;!A%C_Hf<9Jza9PQJ3Mo5Dd4iJ%iRyL7gGKl zbSuPh_+=bpA!tzH+ZlVwXCFUwc2d1n{26ratlNdK2M4lyn!Bd!=)#C+=cja9m!g-} zzkodv;F0WOXeR?9hZ!|)yuTqVNK5&U&T=3{{3-RvOzMu7QVA{BfC`dv_o^;s_3{l* z6U{2)iER$HUkdu>)k56ZUG&wa%X^I-onLVw$f9aV(9z}XyiwIp7{gv`D{8ll6o-!$6 ziAZqMqEQGZzB5OUp$W`nwDj_OS9>H2vF@N%Y}l%RqsBR|sU{vQp*pfXx!~f2o6b%Ty*ubeRLHHjf=xdLD?EmEexQQR0}{!B?LxC3Wb02N7}w>J@#RdO zcsZ(jsg0l9XgKyt2x-!~vQ;Y)&pq;Zto{59rqeE~y*IMM(r?Y>(z@qy_B>T^bfV4#rgBkDU)d3<_rr}BaY$K-M=w;h>g zCsb<&aVu(bA7Pvi*j7dGIM~91HLBZE%aC3lh`PO!m75pQ_zc@fq^03_*1di#n&nDA z#?d_q z-&1)*0zEVeNO9-4nkrk^IjOh!i<*(Qn(9`!QysZ)>8a-enXRUA4gSj z{{SPljjhDCK8TmoIOlay@;KA)pP{JEFG9~&+$6eeg(dYH?^b>~4mK>Jx1GB3R+cfA zyA1Dw4n_@Xt$2=%qE91)dX>r$sVM|wv8rcGAF++EUc!wuw=iZ|KXXZ_s67Q;-?m4B z_B#o)G@CKbXx|gH=?D2brlFpo)^f|_Zs7iu^5FNzR)H={i^;d9dWQPrRvw{X zg@6M%9qB%I4yae4wQ?-6KF4N!Jk^ygU{lW^H$HRCVWkzEvY(e6yqyG#9qp5bO~V`t zA7vJ2OBFXxHG{H0U2Xfyj#+E$O*>?1!Z*bKFKq|^IE#Bi&-n|h~H&$I6JYL zcf4Pr8Lf@hlLiVi+v`PymP97D8;QtV@_bVrvFHeH!pckgw25OZt>?8XFUgZqz~z6? zR)5G|N#Xwh26AgD+2hPKA^dZ+LPHA0x@XnTIT*%Kl?-sOYh}kgPI0)iuzH^nGfW%c{tS zsOkewzGn}B4sn|29=T7^K2}f#H z2I3nS@8Y=Wb0f<06!9aFMcv9<<;c$81pfef8{nxkGhg*>s(;&{b(7j^H{v82n4Dnq zRh)`#p=;6f&k^P*@-fGzJzMBYry|JFZDYtJVzYPKWS%5_Cyxj%pp)JNfGai!YOhsg zmS)QyrISk%`bs5NJmljQWlw7T3tL*V+XdZqP3yFhMSCTw$@yZGsH-^N%KDRE?k)Uo zKim`l0AVWYsqd}z26nxFnEroIl795$DV>Wsc{x9hE7k=`_1tP^MwfdY`89D5A34CR zvy}+F30n79Ne#hB+jDznu6W)uu^V}|$I%->*YEWkkLlUVAyJ=|O94gYaA5_e2A*u1 z#Kw_6u`@9iEQ&bETBmhW4K`Xr`MsoH{{RQR3)uC&h5o75I+WT~fK9eS-;y80I{9B1 z9jimdr-RcMH<^CEjE|D?9O~`G7{d3Tzx|B0PJ_47H4C`xA~%+H>{r)8@*E!Zj^@`G zTPVThe#>q@B3D+WHHN{(tqKckb_K_NYJz^tRTqqeG~Yry!41w8bHOx|lykHS$TqYx z&ueCitfwqSL8aA_&T)Ybtv#BOCAdoMe_ztLmlb=)Q=!j%gzZc7w^yVm!-V4&KWiGTx4j z(^qUOk~tnbSIcJBUJGHC8I?Y!s^=D-QRj>VEcHVL>Nz^xOBF4xuI zW|$`}l-E>h-i?gXZ~VL*p7n|3*^IxlTgHMb-hs0^{{US}Jh@~^FsHp2$8r8!J4j=l zcg0o_+WKX@7CLNkpbLS`ePXKPTu+?YIZcEO=tIXN=|}!l7LX5#wU%s6MS}y+9kWNT zn<&d5=f@cA_2^Z0%)oFw*1wD8>xLAb%DM5T^5SXKHET((R0jm(92y5RnMJncvUO8# zGlM8^>_j6hxilK>qX%3jnWA>IkxPaI&}ACs7S=KqW-n%l?V^%0+rjpwe~k&Py@mNC zy%HnQ%+VPY#?kLhf5TMwkYCAY(I%MarH(0EI1acx1daWk!A}7!La99Xs^?3_Ff^vK z?1;;?%Cgc9wFj{Mnx2beSk8;`kGV#Z1 zLy^Uep0qnpHrRcLTF=6r68g?WHfx6e0HhjLTv#Mo!^qm6a!~sJ0Py`_ZW?Q7f}Tq8 z-|0x%#eYVEuQ6j-lPhgQ;QpbfmN2Ph@3%ZsF20h(Eg|F~KVp=c1>J;ty)`^V3HL1hD?&FB2SJttxfG6Ko-#=$!Z+&reVG9c{BeQim{U<+$S7r% z?ZWCBjqy;dtDoA3J8O>E+#!LNOzCObFz=k>Jb9|?E^_oY5Aqe0rzMGUigVwA%_S=& zz3hETIMC_Sku|0agyeRtzd81Pi>fTj7`4r2Q)B5w0Ajc#3{o6=QRrBC~a({$7}w+|w&;t#en zMUOgGEHL%)tAok1J9$bRDN;OpR3$i$=L=dSeh?M;l;;`x(EdmC0m?FdjY7$Jz##in zzEDp{&J9;r(d5pZe>Jj$lB(Y+{VS8>@wqGhY!f=Kwi<+s7fJZMZR}x(RJ3`fP9(U5 z0lW0^S)NDq;*{K}mKW)ku<}uiaU@z=A6{tM)tfb?+N^`TG8{1d4Q4rBH4=~ILykcvnf9Dyeis}@B(sqB7+nrrBbXu!n;mh-aCVVtn^ z(2tOhJorA;RPeS(FCMs&vHi-2-D z?kRT{H~vMQnd(TlNMKeB*ucrf8o0kiT0*Re3^(qtDzk>e0&2n$cqR4=OOeEU)!lxvPk>l69` zX+13OsSxY9djpymC!V7X1g3{KvcO<@raxr*`+y;n;{Zrb{>;(J&xEy|S*k>F6=n)D$gD^1a2 zX~~H(=K)D4_3>9+Zgk+WAsNMFH>P|#ytthP9FxeakLM-*+bgEEqSVoT6wc8pb!I+E z@lU=|X>}^6EIpPzhr(1FOp$!v_~wqeEv(>DQ^99+_rmLYWfCd^+eQf;sEWx=U<9nd zAL1^UG|rTq1><2H52awd#gnBz%P8G=R;-%A`AhLK_1CHI0ygH{c^&IJ;o|Lbn^-RV z<AKs~Ex8AGla?*-%B?D=LmY1-(twOHOj03YJ;`jB@hElw0B}2IoJI`;Le>`1E?&ZTqGitJjDbyZD3n)bU_6(Q zRVUZlCTdpq4+#X7{d?66Clxd1^YSvbUz-D2blmqhyrFU5=}$|Pv4k0Ns$0m#b<)=s z`f&81k>v8bau4l7jggbn7MCs-ykxH~^d6;)Qr~N%T)G3v5u8?nkB-RUy_}4qo^lql zw(7Z6Vg5;ZBcAw#;C{4wc=+07{XFW_aM`)^&2HCH{{Yw6OKQA+bfQyMcJ^j`uaaqE zy$#5&EYqBgqwP) zo6&COlGwL-t;CAWA93R~X?LNpgYF&0R^sc|FL3JLJ1k6>i5l003(BsOwPYH@&$Ekj83|&)s zu4$b$a{!alX#oofh;HY|uDLiYNt~t-l(JFQZ8eSiOFBs#vCs7Z0-1{JipF(GmQd!8sImqIksX<3? zWgXp=ip#9@qicNATQgytf)Mtlen>k9sCvUWV&crldO#-&-;ND^4mM^xG}7#AC(}Z3 zNU1G=a{mATyNQVfy}SY5n}mLarxxSc3papB#1X+B)oWgg>EW-)1`9`ap?Nv%D#78z zte1`~7ICHxmhqX`hQXso85NuQFOP%T?1ttz-IU?5F`CfvWaAx}PcK?$aadlnXpxe0 z#c3UnrjMA}1f~JiE*zm581qzoyIMoMdedbW)^keM?-GpXjGubP@+RcXO%O>BzX)_g zZD_YFr*nMAj`g_k+*wr>DQ_l!%3P%SqW!$oL@<-P7#!Av$Xe;8wYF!due|WZM(UVj zx+^4#yms%3`IUZFPm}SsYQKROUQ!6JR#>bb^MT_v^g6k)gg+vZ&IQfm0Gpn*v{pN3 zP<#N@8$6v!=O<(1t;hC|m#r<#zw?LKFs0+<>#|yqPvBVYM?HI?^N7Wvj`$m2H((B0FpR#X-7KVFX zubHyA1zH7C4 z8hY*Qu z-Ed}ZqdmNP*IeEXVDs@wx4-wHxjY`hrLKk!C@xti)sZBfOB0+56uQaenphyoIta<` zC=zHqQvlvPaxViEq@}$L!y=XZ5V{ahZRfb4OKSy;TU#nVqUn2i%gG#St&eW?T{t|K zG~X!b=dQBpySqzio(S2LWR56Nf=tqJxlw-3PwEJsEBQS{AonEw>DVpk)K@ITPm$C@ z$2j*jXIgE9lhBu|&Vic@HsiUg>S6j6l+s%hC6{!}ppS5S)x=|klDIDCboBAbXqf~qI~t{bi_Qn4 zgEzWLY6p-odklA?sbysI(>2?4tTybfA^;Ea{{Zhx%`c$wv9Dp+>^4R6$ARnxB`lrp zm{J=k%m>v>6Z_Kg*(lClh5b$sz{b*Tz#Xt^zUpHl{{V|8jIbV^cl^gwRZ+O9;5YhG zR@d=IAF|iJhV5?7Bd03tT;OB@O2ak1752-s*nrl^jN23@PdroV#{G%M5e3{?Zv=y% z(wl|23*JZ`)+-n|A2+^fm1|(z?EMiv9I+sF^NK%Xiy6 z4NW&$XZ*kWkG7B28fvaU)w{BiXlc-JZa*2zU? zi>-!;@V-0MV z`04E=Bsns781X^)pR#a0A6%)Ey0Eu2%K4M5eP6b$XQCb)7`(=_Lh5b^%gZ-#-lE6KO zBZT@n91j&<<+G_Z?AZ;Z!z3o+4{=eIktY=WlP&G8Ww=yT&phCA4FYq5LF0z>Iapc9 zj0C7k`B!5T;n{7w5n+$n#A%sTQosN0*}(H;WVCDlUfhMc?=fB@Gv>67~2KBi#p`q4qf=) z)fU$MH*^uh5D7UrAH87wrN1@Z6Vddq1;(0>W{=4ppuV47_=R>Au&puMj(DzcV^n@;N4@I}~M<&G!S3@j*nYwObqJxx^swa0YzU#~#{L zeb2(~^L{3hyNq15efB(!9YetF2wJke!jXD`RmlIM8}=}s-|@7rI6a~_UFmc$#6 zPXv|V{V`pel$OtwbGcEqH4>Vi;FnNMtvbhPwkBh=?Boi}TSbmviZIT0CRx2F{5oDs zaF2Tq!TwFS{eGss4h{44iF}fN+0q&}@c#g#M+&s|is$~yx~s=cHJvlDoMOi)eg|~Q z!cgha5&r;Ss|CfiEitd;uhF%B33R+ic++B2-{nz7{uHM0+h@O&*3L)%B>FEx(7Iu! zg54pI4&gvK@m}K4`1Um^JPUKI`6*gIIkld)(zHcXoGZvj3NxN+_6g1C%E~R3mHz-- zT55W~$pJ-f#F5Q9px4k^>tVf9r|c7@{{Wc7a;D=SlpN&OIZ=#YZTu~1Seknx=(0Y| zfEHueipO$c+35S<7m};3Yg#o=xfQ#Iw>ESr?xOw-w^sGdUr^XQZTN)vN`(ZpQ3oPc`mrTxL*wvA5P!NrE3#T zVHX9CK4tA&RdTBh71q-`X7m35pv?M})}?tPl=Pz~@{Yo)c{fVOmN`WZ3qMQz47y4r zYJ`O{XCUIUT%4lf4Pyxw1R9h2F{diS+qF{4Qas|bk%#dST-zeEWaG%@m6ZEwoJk`q zOG&M@HJ;v0jK7qX&w5f;IQj=C7oomb^;^}3TbC00f0Va4seIF$%K)5Xqyy?J6RYf5 zkVa5ra`8-mCd}y!L8OEywtXIE^(4su01q4*ZFIeC>zvcj+tSz2>Uz9sbncewa^wzi z^s2jRg;M<9f=W%tD0sM??C-z*GD#BL_9UE|s=id`{#z4kEAmBw)7m|@q_EGcU8>u# z%NAUo+*G*g4Q9_pZL^erv)RV_rJ~1l&ZHdpYTDI2=-OjK-Pl)zfyw(-jd@HPQO3n9 zq?Km!7uv3CacHl#xWDiXk|xG^A5QetWQAN}_Vx#!GabNiFb8^e4>7@4VoF*1El!5i z#8RTE0PY{HWW1#vw#!a5@_kWb?AjFNn5g7(I0tS2g)3rw_#TlO`USZh%7wMaXx#`%z za9AdPdb_Jo!+AbY$Y1kY^m(d6aCpW?da2~WNra|dN{e69UgG2f8)G;b99Bwj&6xCP ztF!URaP(70XP`zK3xop|^zR=v3RGUqr!6_zkat#fO{JZ@pj;>*9E{O9cf+O{55nS3 zbIuM$>R*XhaqBWIsbbr(Fx(3H^}Krf_DN*>4+F>M3$THy{8-jt{IW^Mjr1m_-&~qF z_?jfPf!5y>^{cWl>&yy*`XKNMhPUGn2Rer!`vJZ-lRl>IKWb6i87zz{oPL4xYB92q z7%{FUgQ#E?B$3=H1cF658q}6k3$(<(qSIoyv5^dFK~v+s3fl07tD92E$bEaz9>3xy zw@@T1a02pi?McQ>JTqU!<+PG#CG`!p#+fvcx-cqn+OPQ7o5L@DMAm+aw^F(?$@3F} zd{(NMbrZHqZ`i)l1X52U#wyJw^d{Z`cXt8zVD{~rZn$7db3*LWKOkULoMMXU%O>qP z{VTB}ovgLXR#p%w<0Z48YiI)JZ?VbmRkDLaxnH8+(XXMFJO>Ny=8>DhH5c?f*xN14 zV2*qdOF0pf!X{p6!VNpr0|0mPTuHT%8Osx-)h*$@F*6MNW`#Jvq55GNJ&S!us4MBL zV;lf-bDB-USlOknDlyQb(pNFZtUD41&B;CUOLJrRtd2%Y46?NugsGf^?~_!RUW8=# zkwW1?k$~;*OvgfvtdIgRlN^!#sQJ;}&pIJZ9&!Tn??;Qm$uzRs!GwByunZS>9OO}c zOtZZu`pM(K@qn97e*LJ5O?no@pS=RE^!u45z>SYQ05eT1RCd`8laTMy{{RkdbzLTF z`D|WjV{9Ke{VJ!G5h09*82@%ZqIUmn8y{5qk)`l+gWQl?#;R6zjCgq z=qZ2Eqd|h|DexNnpBR$GbGX%+!Jc5j`*vK z{I!lfyJ#oFR3nyj=S1{eH$6f4$#iy=k_@&O#-#utNaq+QJOkddHuAY#n;ffoUu7R6 zRMfhrlV#zf-}HhDPMy8c<83k*m)27ku3k4n3?T^$R59J0=Omi2;rVF6MybO%{{YYU zD0v(^r8i_{zx#i=MSsG&6_3PiV$K_M)6#FBPmNJ`V|m!Q0Iv#9Cyoa+S$P;rO?qFV z>OU;0jGN0|#~HpK>vz#wh;Fq#3d%@ho_S+fWR7=@n5$q6_AEgd!EAHnZ<#dl9QA+X z;aKT3 zdu#s1bJYDEaR!qHp%ikhu>o9%+INwh54H_i@cBwjtui-7V=dtOPUv(x2A`-;tta7c zB5y>P#{KKv3YOy^+;S@Or^xf`B~_f6Qx=lTU;XwXYF~=dI*RL0y4thC`(I>%m$pF! zeF&*KKA6Q^zR}FJk{jHX#DL{}^OI0j<3}ZPlFzhjpHO3JQ+dc7bK0jGQkG6i_0tRi zCEmu|Sezex)r@P-iigQie#qkOt{jFRD|R$@1qGp5a%E%LxnyNhiQ5?9P~IEM0V}19 zWY+fnsuJgs?_E>s^Z{*UgG>i@)%T{meX>zn3EJB;5X4}825DO+k=DOs1W=~~js;dq zO!hJ#v9pqA0b^zzxT^anfbqf}biE}YaL%}6+i=A%+2>;^<$68Tpb>n^0*~!e?83)> zz_Hs4tBuS^=iY&B@=K^rkQyNVk|HY~U@=rO{GLMn1a_9r?tYZ6a1K(yKIK3M04sab zHLx;yF|yQUwYf$Ol~&058YPt}EU#c?zh(K+-Bb)wi3snOCyZ4^k(TgPT~73L&rNDb z>l23?8wB9?r1IiYSq&FvkE)2`Kp11k){hIim2<7OSsHGx2~cDJW3@jXTvID7l`@7N1_!sAdoDA|_susb&Tt_Y7|7ypkCu07q}-s~-<&Nu%{|;b+7BD#xZRS#8tu4sqtUo<5~0 zWuKe;rz+QDSud68`xT5YqPPQ$EnUi(IGI^lBgpz^PW20VEB^rU^HGN$wEY2ckbc)o zw1IadDi667iZJ_@E4O~ZyL(sdN{{UyL zquDwzIRK7uYRmo|#guYITVne^JpTZVK9p&G7+u`h83xtdHjUe{-m*SQis(}5ppMHY z6`h}k9ZRHMPprt;bN*04syZ!DB9k)d--o*9t9=_qV=Lu{C2>W!n_N~hSyRWdc+u0k z2k`mTx{pmqcQvltGB*Ldf#G_WE%OiU?i; ziW5mK1B}~eC46Df={HM-n7TMQmWy&w;cC^!wpj6=dlUeI-mUd4uO9*JUv6Lze+ef(> zs_98*WFAHCc_r?s|~WDVYNqY)#d0Lv9@v!ry8^;2P6vG zQzn_d`Vp@r!#9i?zpgnJoYX;*G*UzJ47a^C6(sa3@imr#^Q>zL7zCPT4o!+qQLPEu zl)jm6ardjrBa=UUt;n0x8oI@*s_yx>P&xc(D)JkPd|^GKsCsXxJxc{oQ;@hhJ?rN- z@%q0;mNQa8X|+}p5Ey}Lthy=yM4hI1n-?)^v7 zn68HQif(7+Q%C7%!%a+F=`aHRpkyEEPyAD^3FF!FK4R-PlHRz}npko$LFbyUx|<*N zm9ViVu}=R0L*Cz$k@Tt=(&~&&M!h^wb-q68Gv0x7ZS4B5j^NU&O|6xbI+?k+FCqEK$;t0k(%Uul#YadDtT`o^ zr^}8FB;xy)5NiT-TCA2@j^!Ja9>$&c6yu+>l8TbUEuNX`JAFcUZJog<{3pQkN2a)` zZ50<(;<7XAnq97^JTb(hU>($BCZouNUXX-j;*VkIksYcsWRf{521Qj)r2PP$!Kiw5 zA+-Z<>)6uHgjdSUo1@aot^p@KzLn_Gqv%>v{gYy}kx(7yJ-gFA7!0FKl4>yA{FAW* z{2Hno++5ZZ3{_7vwHPTsQ@LN znEM7Im6E+r7||tMFmD}ksUQj*o;zgGyG?r~@IkX^_=9|q7j5Sq@N2H=MIHVna$xcC zUg0Gvwn5H+H#9Hh$e;W=rt^Y)Uld+Jo$?jOnqnM=!OOib z;YK<~lYB>s5t-%$5A!xLMu*~#J`ZJtLQjfzEiS=uFgWD*rlDhRKxN}(mXOP3*A|kf zVRE_l2Q_I-q@Gz_XA;G%1rgUb~)xNWZO9OX*4znY`6 zMU7Et=3c+(cr`0&S|~EZJ3}g?~U)7y2ccbbOqXsGu2WB(xUq<3` zV`4|7@U&J_$YTWwJbU*QqJqxECu2wpG^|g`Fb|y5@Q>_5b`cp%4W#7f-i)3FT$^Sl zHu05gaC1`1Jf(wmz3t2w3KX_;+*Bo8B!*)$_UOB-nWBujZQ18>st#NuQDIb^{T&uypm3_ucrPN!>VhG9-%0FF%~rnu@{d6OzjubUhJE$!%(%hm4Vs6N6dF zbENCSMT=c_%U;JoYYjF=iZyJnASMdc9(LLlovKAS@iJ{1+e(K|e68&A2_6{oTWCL+ z@qj+{dBcpQ9{&JCd}lX2rK8V=T{^n%tu*%mA+k`?B$BXFVhfSHXA7V1c%ok=D>`RK zd6zn1T#(soHo7gv?TamzntCVFS7hU3d4Hmo>wPXawu0yRddi{EZS^Rn^%Ry&vK9v%;G7;sSz9?q ztw&$7+k+{0Y0LeJo2$q_4{ofIHEV}l2?)U)9FK0<6)qL-yOU;-RovvgYgN?$009N0 zw+z-093&)wIPKe$UsK~KS^dUumYq+~lYgs7v4>R(82!?zc@!>?UqGdOlKVZ`z~GWky?Y|fvP^NXY~$rL zDKtq*{e&ZrF@ul*rKI)|ddak)*g_6|qM)Ak5x>zLY~_+-*dso1oKan|ioxXC^c%Og zDu6d9>BU#hYdQ^<{e?L$BOvlPL^S2R-Uv##Sv0 z%ibApbg#v8YVe7rASv!V54BZWz;VlBQ>r#?9SNd*Ub8XBzU(L<9th^Br&QylR?m*h zx28TLSzk*E$2gO5=Won=(z%>|ge;>QI!mSR4bw*Ieo_To@f_Up{Tbd&Vv%scFaCu< z89R9bw^enNFlQx{&SLn{q{(@t+zr1m2XBt`kn=TSJ(9~ez5@QXr2QN@r&+^cugM(9 zrICm^6`SEXFYZ3ej`7L{b%fDMzNA}JC;){66>G@o;g#%vjHH+|;q~NJU40ClgAt#o z%~gJGO9y%I?Z%P%!|>x&hF+Dn+Q1E?8E>V18^y{nuLtIjEeG>9T4MD=@N-%vW{k^+ z?8oupdl69i;+`^l;>te$X^dt}fAv(==|?D!!j!n|YWF?&Qj?@`k=GW*fVS#U1yNWA9cZ`no3C;C*W3|BJ&x+dY2(m^wB$3~b ztt}kCZzkKu(({vxbxV&^Q+Fx=W;}TBR@H52+`+glqb)8FZ@oc`dm0_`eQ|qDW4iyOx*Z6SAEGy{PMlk*85N`dmw3xWa5!+$>v_qw^v_C=yT9|TxwR)%q0<) zUBG(^a=s(C&^tLF8rZqicD{>EV5&@ral7q8vyF*3H1L+h+A;hxDi&Y}`cPDt*eNHIL{X#Nb2U9UPIKAsnXKIBr)7(LxG z4ElU*Nh|u|hT#?(G6Jri8&c&43C9MMm2qqPb9Dn!TTWU zRu3d3CUARKr3|edj*913(I-frL}uPUwN4Rn9fgQphg8f4^(1gdU37KMi>k`8MEg~+ zcP)KOfy;%prrye%lZz_HQ@CYHwmAgWg)+6ho}wsxp5Ab4t&nY!?P3x>2Oys`SS*oj zVz$yFVy*`1Jen+$OGKe9mcLC~7=rwpPaNX1zCq4UNYHU51h&g_NQ!qQSMvLL{VI_* z9>*VlMTtMdJ$F;-<8;w_Xk**~2R`*_Qg2MCk209qgPgjHKsrXXB2G#$atR~IJkyhl zsqEF$G~wA5hfv80mN?*_*KFWpu&G1xmbP`xCfLu@_7|46kxL?!$m8irb9i%<9FQ3E z8+b@~h%Aw1&f8i=D3#}DEfP! z0ukc_OJ5y?7xYJFGn9z8=@62IbZ53G0L0M2$G2apCk){~do6!fKU z{2FBl)m9d;brq(e()Lp6XZc0kI%t=fqD7UiV^!r=HQSS%{{V<%=~;SXRZ>oA?UYwW z*`}h_e_#BDr0acGQt3@Ur{3=4{uZ~F`g&ZqNURi{+d&y9GJF33;;t8zN!PE{63nkmGFxBAGRvPW1?JYHx|-7RY7Y^pD{JQNh z(6#bw%(b6re!AB6?PI7dbz6v~yPj11J=93TH*Kf@V5H$j-#xhTP4X_~bK0Dv{vP&J z!kReA!awS2y1l&ABcDsTf;cVWw=E&Y(l`DRy0U9AB+xvCBt43*N6=T*ykc&=vl-+kCnCSNRed%n*#Q9YS{Tb7jKrJC z9@-J>9x?6(ddWNiY%Zy^jxbO6q?^gqONur*VVVq@35*kBg^9r#&yhfs(dXY%#+mHw)Ru%z{{St3_cW}e(%8&g zeGC>>sT``{6%?a=nBq}e9IcFYar&h^WSrD-_8JjSZ1Qbvlx2;u*x-uvr-VzaQ^*t% zB*o+algXs}FR~J7kR5gv=VHXX2sNdt_9B zH;NiYD~+evQ7h0y(*v_Ag1yM`=AB8hdBC}UA$bbp81KzmQj%E}n{APy+=qIx2ObR; zSbAXaNsCa_h1y4LB&FEk1!F^WQze-q5_nlVkKkT|tUa}~_odmNvojJ~-mu)|AD66F z3XVmIBlMS~ttqopp4u$N=7dFPix>uIS5X{Vl;*ApI2OHku2KD;qQ47% zCs;?*(8BisGN|rA@mAb>ohuCZca-tcc08ixm*S?HstLIXj`(mX`FRLMY|6hIJcA_o zy`wpFOWg^6|~Ensxo79D3k`{{U4=9L~Tc!Tp>6 z0OLy+&-I4VIL$jAOh8M8V)P8V>TNnwM)1J)IjJsPa#&37@hpq<2z_3`kpBQteZVKZ zbz24Y6XKfs1y88jGLozZoNmQ?H@y2{$z zv&yQYx!u~ASJy2^Y-$uqy(61`BYb7B)9t5%8=zdS2o0Wp+M2GLEcT1uHx1`9IKQZR z;^(L}SCUD~FE|v6wlhgxTflm6i+cuYmU39m8HUh1^TlQPJY4M8@i{PhBiic^ z9#u*E=Ba1LcrBdNy#-TUAO#K2kx9yzkS(lxF5iRwd~|NRf;pxO9IifQJ-(F%T>W6r z`3hCFHh#l=F6ygYTST=9C~uGx&VO2Fh<;e~e2bS`u1x6r6-KlVka(@7RmD_f?33+- zhkuJ*dfL;YE^SB!q(Y&4ezk}4c66JQTK@nC(m$qYot%iMpOg=O67>R^7y+LHwPyY` zCD{EH6!C(|()zh9-FSE-$#s_?9DOszQ%?D}qF)mGHe1H#MPtvLQ#4N8 z<*{oc9AIX(g{F+K;3)R3ryaSiloqb6kfFV8pnWO!<>~qr>U}l210}M2jMCDYPX|<4 z3(*oWT!kN67ks@0^o=InBAX2XkERqO>rRXeXx`E^Yq+uDe+HBCKi5 z(OYv+csJZ=(M;GVzg|1jioeh(+Qh!4>8p4&({LjJm$4Lnts>u#V{ZbrwZ*g=dq%11 z5-3hK~MS2w7Y$S}a&P zrps4|ET<9?z$8)BT*`|$l8(_|b+<#=YnpSis<|g54?nMpx8lyuJd=;ml&bF+7LFL} z9)r8l^+#}~RpfvMJp0$txPDF?h1KblH*sfH@uIe9nOuedFg?81hB8dAX`r2qU)2Rj z9QFd8idY3A!qRM{o>VG0&nFeefcL?4^#1@)daEdweoSZWKwPTvm!mr9wa@X{`Ni=! zOSrx3`^Qw<6EQf?y;pKPjBJWg_I)?T(=|%&Q}vYEsbGIn+j?{Xi9=VZk2=y#}j_H{0uGZ#NJ%=P?zjIm6cP;+_`qL$Blva+O z>Gc|90pl6K;C8A?xh@Z8YWm%eEGIR+_PsL~+#^$fK_m(VyslNReu!61RlNO@Yti;V{II69PB)rN>)oc8H4NWCDc0Ro6#K=71W|x zwGEiHMLBP)F!rZ-Tq^k!%UH+R6$#xueH_cH>K#MXy7AZbV{v__K`O1OmK;L@u|1A4 zlaCdz?H)aU91D8tqNj+YnD^6K6@>bXf6P*AJ2sPZ%8J0EZR`d-pYc^xt+r1L7b4df zelI1GnhoDf^*Rkk+F7*u;B#YZc1&!sy8M!0cJ2=x8b<#7YjMbnd0Jk*`eh=zJeXz; zWqZf|fe~R0*eP=iYZ?;rN}v@S4hR{?{{Wh%<48p>l`aeb28)6e~cRX0L%oSwfzFHq^xN7T1=*7x#E#3+hL z?lLxGh2xG#)~gzyW|?PPzZBXYtR&GbbW10*)FnFPNE$?yTL^KE9Dp&A=g%C9v365a zhsP$R{zNRQ+j6A8AMjFt6uuyJ6u%U%^?OZXYxr&vW4KaOY;R>4#{gB^wescO$N7HC zeg}`Ho-%`u3R?dFQfro3ByZ}uF8ly__s8i`j9YIdz7#Zt9a`bS5ddalymtnzxba!o zt&QUd=gy?l;vTKl+c&5j;XmpfaM03Ci zApHrhs4N{!IR&DiRtFK0&P74TS|sEXirq^oCyHK4r<0CIF9o_WBW6#(npSTb!6?fC zn_W3^zh+N=wIur|lsN{NFIb<^h2f0kKYr9CJ{NQehO>sc`ZOgO8Z~4r6gR)laEHyAs(1rpkQaW zo+~*D=Vh6aGWS~KT*<0IVF-7WMS;eA*0YCR9!hIt+d|f<@p{Xr(ckePpMBWmR-!j5 z>L{>Rca=&dHA$c3`>0~r{ehbUwnz87NXPH*u1EAvhp%1 zienolqa*@z)`Xb;EbF=z<3$wGY*XB|Y-;hava<=yvo<$@t4;XT)OwSM{{R^(vv8}N znnwQs6BsS*s!e`}8-0JMZlm>@@?dlRdR`nls*V&$e{(Xp>Yk*5_eXmt1Dy6hdIgl% zC5NGfRDIya->mwnu9t1=tY_PSK&pxp!$)0F`a@)Wb<}n&u5O*U{LJQy$>Z_X;;?cQ z=TbpCZ;N{Bou*c12a+2CsHIdFtstMpt^Ev9d}P*Pw+?1;$8Gtd#;V%d7yc!A(mo#? zul-;iMq!_SG#AH;dLjH6NRYo9FN5TX8v}+doYY-$&$Hj~*h!f;$19D5IBesL6W{l) z^_Dby{uNlUs(fwK+BOkxMkBfB6vZ^Te{gvC+T-k~HU9vLolB{Dst`6Lc)!kfZ zCzdlF9c$7kJ$mm~yS-^9mRDxU`J9^8ag{0|9TJbBe$xI+X-dw-5!i};%40S7f`p|R zKFn^?@6zt&0c`VuRJYRWi!38=XS1PtV4uSv@Yp%=?O0oXy^@@=i$>K0Mle7Cb4X2P zY(u`!rU!Fv;YWH+tOZlay3WYXoAQ2@<(Uzci84Ua*xm)fDi0u<`xT(t>b5$ zm(w-Jh~*o(&$*$h(r2@vta1qe`LG9Jnj=XsLi5f-9ewbQ&r*VM_%vd}E%JBbzg2R$ z%dc!7E#q@#2aKFa)&BqjCbYb`lFr@Y$10mRK5Hdp65LI%AINrClPdG@%IYZzmL?wK z29r-ZE!QS5(;9Tohb@I;A3hKGN8XC6-o>os=y=mU90>5uY69nn1JBx?uD{V$XC?m2 zM@Z;kk;V*UsO`skvxR!uS3XY1Wa%&c7*QA;bMo>iwo?}jBn}+68Dy%u!=f&p)<=#8 zBf;B@)@IsQY#QDtkdN6wUv%cJXFHF>IZ#j9s;9)0)K*O-d61IMK+;>?#H<(=Abn{` zaTzm&d=^!-Ze#^EkLb#yy{_B9nwvFIGEjJ=KJtm3N}dt22AAnt4b}Dqlf7E-PK}e4u2PYHK^X`Ls7R!l_7BK ziJrjLW64I|*h?t-SM;wYy15E6`#&<^g(lZZIoK7jb5yaDj=qn+SBJ8~ho=_nOle^t zx(x2f#aCL>%R@=E>=6Xlme*_CDxV^fR<*Rw$`O*mY*_U+n;%KES2CFA3)}ohj}?Dk zHZrRW&OaR|cVtkyyS4VcD?sgrZ5KGx+jt4?z>;epeN9gycdx$VqJ?_Q=+SEi2 zt-9(PNhMoo9ir?TZgcxn(uLDshQ@gAoUX!+rlYOKxw}_DM}_ZIl6OVoMeB_+kK#LN z{{Z^!J)M-6QOQ4QGR%;a@fLiVEYiO9A1FNYiswl^kols$nx@cWMlvwx*or!$Uhqa- zm5e57TT+s!1L?r0t620`&Tda+tLu5!PyUcQhp^_XB^<{jVI-MY^&j(jbmI@9B$@0n z=d}h?luOzt6|iQ7(z2z$uXhtG9(J`X_Pq^T%FdAXx-?5>p-=;k0Hz?ain(6$MAZ68 zB-4c7nB(&2iX*QJAu8mxEEL|oqv}>SW$c3j4+VSBRG^;T%@tNc$m|zm)Vkaf8%u|7 z*!hJ$3u2-X@vD>00Q&3^>K05cg1&j=cBUb7i^^c7!-SSFb7xZY>@n)B_UV9I{5*=? z@VU-${ESaO$4altD2bQUtE944xxFWK1>cYCdjd5uxy0%Q?oMw{c@zmh(hq%0t%WTfyuk|==lEUgn+5iJ_ z#eB2KLRGe!H{3dFpX7n}--FcM?j{09Jogosa#_iztu>)a=F$@@MH(ny2OQAdpP~4t zjgs`vmb6wE7fcEccGMM(JmmJ4k|XsJN9cYYz+@4E7qIrGBYIKGVXKbzLeM%Q34%>` z1cG-tC5ACoJdSkV;}$UHm!jj+G#KsCAc{6}a58H%ZR&o;h+)3m;=EWu1;+rOKcT3s7=JS&H!Z@z#}C16qkIw4o1CYfUItHi%l*& zt$GDX=ADYffDcVPDLzgr7Dg_3j&c70-~0@?rtuLss-s;~;tZOOt9H;>dR~>BNTt|- zKPmbie|phVFXP9eVd?xKrLc!b^ya+@(T2|KC2}m)YCNXeMQ?D z_BFlW#Y5M#HOjHrwzMWh3Ml}FOz>*W6As`x4-3wLL}NP{nh|K4=YWaXburV}byHVZNfg-hfWe&^~z(ae#CEsy*CZg>!&I zBK|140$Vwu<-HQ^jgsPGxbDZ;P-M5VDddy=Tz|@LeTNhl;t@iBqD)q|7f#5rHYhT( z5Ls+Grpaj|FZf>eb&;Zh*r3V4$pWOg)W=PRj|-9SsgjmdSH;k)6Pe?SN0UDR(xt4$ER!arrQd(cfPVdLK-*(xH;rMItI- zkU^yBYVXL#@@GESk#Fh}L8R!PYiB zB$9U?^m^wxExi`;q6y~$o$|TVj3Xtp=*#+esL)UjF_mORiZV8sFLN?vHGdZ-4+m;QP|wG;o6|<&a>oGspy|J_SX~ zx3W$+K>N)WOKY9T3n}qJm0-JlA4g_RHz*%N=7^w?2P_$#CK57Z0G?`2F~CU3A!nn- zH_GG=c_NXvDJ-zb{{Vr5{t$(&ivbWBCnh_sr0L6tHjsq*vO5mKzE{YOEP5;?lSRd) zq>?~4oSbutO~*dU$?1kY6=&MXxxUo9htR8*1`RsiF|-u`9|nmE(6sCg3ph-KsL1-) zWm-TTt)p_ru}763txwVioU;|Vjz%hb=bTdVeUCi^ZNjW%kzI@uc>^iz%2YBo)nA(( zvqbyR1u_#^vXha6?cRyeU|~$w35jw6KJ*DJ9?nkj)H-!%fxb+xF`nkXW7$%Y#E*eS z%sir|>MnzVcpKEWE{Ex!YM$;aB)t}Oa%UH&P(4NP))-5;fc;4CR1@L#d5@z(S25!Z zR-1UIuU`HyU6^JX#FVoQPkH-q(K$S zuw@u3)l+YdvaQy%W~{O^Wv$nGWtUWZJ-LE(S5p~0jQFhgH-_a5rZdC7Ra%-q5I!N< zf5RUg^&KkE7q=1@QJ>3`+OijMRABOcobX()<#FQW?G61msmu z`Zd#nlF;{Yq{XdTwatiAFR&P);Z0^GYm=?vh`P^9>eiONz0I@59ymGTixoQm0J#m- zWF@TZMvl_zJw;_z+*I;Nr@mNq#z&;I6u-H-nlDmBB2`}h0QsP)DbHfPG3fiGwTqjr zPE4so8(=rN`cV1YXx5e=uro^qtEp>xi`y&yA&v$J9x9GiWvrF)rWpbbsnuYE9F&VytNu61Ib%91ZH!{G_A^<-3=jgp zo9SB)B~-`Rp1x9HC9;O?52_dS8LQNxjcBjS$PWJir>rjHXt1&1cOEJeu8Shm_CH6N0{dv0ZCH6CpB0_kEmQpX&9DYqQM0F?0}yVUflWxIJqMbDgg6Cx=f-ug8GO6 z0C%m`9Jo*H`R_M@ZEGzTrj-m3MgUM4cgXKr8f4_mP0693@X*}Zv`(9{KU#LgryM3H z3A*Kyoa)UQJ6oqQN40?`+djguzE+A{8lI1$_?}GO8WgNn@vtNX6FrHqj@;uJwG-*^ z+RFEmGQFNAov3>2>&Q$+za=AO%_48EG+Np(OKHPTj`99yBOhb> z(7slqlDc+FwgSUS-*yBr-~-Nu)``Y?*ue#_;WmP!KKQD+PFW=X03ruib(9?+ z(g~=^5xjPNkwP3Ur7w3E;-0pFzP*}{p|hs?Wi^(L{{T^mCYB#m!)(E~ zkRvB{e<;CUy;^YTRzbG1_x}Lj(MihXy5-e8A@`y64xGKbhCZQ=X)gZ&4DV+ekg+6~ zX8@oWWg$QV9A`Ca!=Dn^{Ct+%`d?Z90NAJJN0S%Yj3xK}Otd?F3h3!S@hp#~*<8&d zi;F~85xaqcP?5kR8-V`+4hLgVtx~CtcDAD1{{T4u0A_OOa#M1tWvprF-PC##ol?h3 zf-75ug@Z~_ffq56mgR`Y0P**#>uHQHP>voy^Zx*Gia8EdIm;>k0O%s$*g>Ugao$4+LljuZptf%DTCpo}BdPk8cLeBANKhj0Td7N=2kTuq+X%dWE5F>R8JNA=u>Z zX3qqi{kWmZ#bQyER)5F-zv??xGjA!CCI0|ZNd#-AX)?^WPV8EDBy3aIt~k$p{ppT9 zF16X0F{!=J(2qUrR!tyAEpYkWF+IN3V;D+oEaZ~Vu#y*^S>=$i&R2H?)r(0b6onkJ zLb=o}Vp7vc2`A+gdg+|BkT%u@4MJDCx-!KXblZRpUQ-^ct9vV~m-s4Pr6gF*B$1eg zZ~^0**>F~5l6fdO5_sCcfu}T*#==D`18{R%JCtJdP)UcPfclG`$H%o+%336rMoUdK zUJc;>l#Hh)6(^EW(_&sS3mS)Zb+6H)Z6ZmKt`2;0MU2|oJM;`1GFi&zSW7o>d)2L6 zflDCRLqWfBuB#&G4dx$HM`cgBF86UDsU9Gb>bC24Qo50K? zk`3ML7f^i4OAg1yBV?0_Wdx$gNvOqafl(ATd-{@fk zE^D2Oh9n&4?@&=~f=?)wVFTaZqOR|L)C=aThDW&6JMBv)n`fZgL12=|f=2OKJ9!q# z>qy_#!Q;X!S!a_NAW}UgPtu1T^ZOZfR~;yZw5=Lx?4I#q^zE^^r7M61N>H5F`T|je zU#*k0L2%mfv9j96;erNk+|rINZ6)o8n^A+4UWP8L=-p4HF0JC#))V-I-yf$g?2q=M zUB#=)D!K{mWaE=_yb zQc98LtQ=(wb$BT`elL&7i_CU(7g2n8v(z*n!xWjW_F_W``F}%1pCv_m%QBSz08iZ; zGW{IIuio10+Ps$+7Vjz+ByVGoDOvKYlgxB%xZD`g95H;^z^4|`l|kU1)DM<#b7iMk zqf@MEgc3tzxfO9uuzGCgU$Uy!?!~6H>zP>@A8;Vx){Bgr{?ZmG$~zx=f8uPvfmy#|1laXECv~$kVL;*s7!&J9gr7agV*5bB9hGmWRxL^UHDM~v`l%{@Py><>>&pteGd2Or4vW3onO0=p^?5Vn( z2IQG8Z2?e8J}Sj}DP;zpN!o6kx)*5>o-zsXL`zu|l(s^+wgTnRe=zY$&R80+e#3eu zmSwqLP+`1#ilFA(Y*r((*0{v8BGM5w6lp=7eiLMYlinlheP{CxudZ{>*dqrKZX{>!#T#h?dr-^r@#4K83 zBsL-)U1Ve+gXGqRR`#z5rJ7KdS}vZH)D;RLAmbS4HI3xg*36A|Qi;$yRl-ZBDHzTw zxw-xG#wmPdh)W|io(bAG<2=(bO9C@&G89Ij%#OszGI z77KwUMhW9S)k|bIg2oeT(NOBWCStm2VT&xxPj1y)Dwaza+mu4ENvy9zNW2emiYyz6 z={%ys(_Y?KmztRp1-iaepV-rgcI06y8HXR-#~0+HJ;4{XI^u-C%n+x+v9>>vEfZ)J3=ZuP8 zR3pDMpV)U#>C<5_Xns-b4RKJP&^Ku1HQdS5w-GTQdSrIZRP#J+ZLPTIVw>D%vVKPV zXVIo#kJ_Efpy;Zo%EVfcjdkK2FWz~=2y%jTi4FRiWt0GFe6%Ub8*5>d6@+ zV`Dz`-bWe}ju{yw^j|$W)ZV4K68nk90k59&_+2OHuD*pOlw8_oqh}_O8>^LAKVWo@JNea4^GfJDpbHb^9Qt&bVbxTegHlCCn7i}ZAE zpVa9-p0Wvfz#}|XuZ_!^c=|qT%HYL42P5k!ZAZ%}GVRI1;;)}BFt06?k@3=;@r?^w zjCWvK^+7^({rz=S996j-l^~^kF zy$DT~HHS}Va_E!FZwz-J9By&J#Wxzb^QFnl463s0;c7``2>O_fA=reo=aRLXvN2wZ z*k>CMI?JT3y0@m_wwO$ApgZ97@<=}94)vq)9!>cBGUJrOeQ1x-zYOj4UY`-)i7sv& zmzGdSIL`y=Omlh5m1CFCXM0*g$5LJidiq@>R@1E|wXr4*GTIj3B#3*+=d$yT{3})-sf;Zvguq#HslSfk_QB5u|HajXm|CBmRtQi z{{Y_wPb-+JP5%J*{{SOv-srMwmYp+e)DS_b23tpGhC~X7EX-I9vJspW9N_cXoNZM8jLFF&K&p7a$C29vftt+OM5lVp{T7hB z5cFF~b!({f?vrmFk&6nki7voY3a18e)0#97EvvX(7Ft9@&N zeF(oGQ-LAv`&NUZroO+idnB6C?@--~R%sA=X^g1)S80cN;T4w2#b+e})m=ckgr9_u zlr72n*8c#<@f|C>C^=k*HPs^#UnV3sK26oQ?t%F8TO^xaoHA-`K3c>>XJ%8ZuzN3dDtu@YSgVQ z{b?CgGM>~`J>-^}(O$5RPwGXIH5op`wKLl*UqZ8vbX;0qtpU>1%0ivId*-8Lqksy$ zGghT_1eSl(Y`s-l)(bk~(#XFQhiToB>`hk7S`8-C{Tr4jHjoj1 zLxJs@au8V(lS|PC;Y+6&sY*Yiv5?Q9IJC7cI5_8yYc2dvl_=HU_8+$Dh<}_z zYb@%7zTceUke3R7A7rwP4{^s@wbEZsjjgT>^NPYI<=e%x`S%1iOGuncPo|eQ8+2Il|i|W)xpI4!?OUuL1;BxKbSe>^bC6@0{C8S<3y2)mLdl(27b zXev%SJ=Bo;Scb@w?I+YXZ@o#_-q0X)wr*ntAuILsM2(3(p6c2wp0w#%F0|*q)4>-b z8=zs3K=KW1d~Z6qKC^ldxmdG=R~#Objt=h?^IJRE+|jC!RQj+5>&GUn#+Z>|E>06_AsAhkYI6q&ddNIRklsDIc*;8!}ltRd$k;gr&vXoNx zQaa@1CC#Y8YjG^oG6nZEgKkeqv#zIsPH%}RXMF2zCQuyiQ{JrV@zc6FcsTEb9vLP- zjnc&s97;jw?NPJ9WAe}aj(;k*=@YE}DckEe9-PXtli2fA*ZBKrSzANZP7)10>PZoF z1Lo{SRmV)S%3j6$g3>Sv8TK zD-aky?Z@7fP-&I!L6{_1`|^C#DQH?r6Q1RoGQi~5rI1Sos3&-F?(e$R|bvDOVvD~LAd85DlXOKexGiv;RXBQE6c=j&D0 z$0%kpXj^#HR1Ea=$5k*L~04=IH*nu3@NY^Y4X}!Zj77{0*ACo$zU;I zsWP}p2psl4Xpx>hf|mUa)|XMpqviy7rd06q2MjG6WOmIl@+@E*K?uh680R(VNs%U^ zfl`dVkrqoxl;a%xiX;C30P;>qkR~?%_3aValfxUv%EN*&UU5>>I;7LeIOF(%_R?+p}>0c`7y;nD;a7of`XSyNPvz|)~b6*R#b5ebe z(onK4DWcBNj-90ZF}q2^3!tn+6UonESDagGbY~bVty7h$A_qw8I%o1(t)#OOT#|OS z&`AcD{zWY~v^94c)YDHzr=%v82g57at}PX3k(jG(!KEb%zAs3xl&tx5{S>Z|r_Co@ z#-P)N)%h>C@X*>XYf5a5%*&e-bxCUe2ap{W;Wj*IItapC`#R^Uhxy+Gmo!+GCuwKG^C} zEP-B3r2ew94Zy;O!NJ5#3!#9u*GsxKh|I4OF{> zAwTMAf0KU3UmxiX`c2)ew&b&o=Yj7})yPRiYGm)SG0W06)D}&GvXjy;Q%^SoI%X$7;qjKC-F6$NvC)*DIpuFUZny`0~ce zOR74~Y2ap$^SGJlxTOn`M zkRff$ykvU{X-5*lSIB>Z%gJv~b@+WbRb*U|kG(%Tei-&K%86Y)k?bM6yt^2Xi2T+g zndGgWaB4XG8mdMA0Mk7;3_4Q0$JAqz8x@MXm23LP{zve=57y|4q7_gS3}+OwySK1X zST@^OelGaK6kz}v+(#6o=a+;@Hnzh50PxCgN$wP`-^xhuO3U`nyE3qbJ>_jwV`>h= z6banr93VK@8&ub#(`=ZrKA|5ZU}U{0rrwZv)|sZyQnr&pO+xuiw)P=XLxO#=UW?9_ z*iNrFL`LepFG;zbUh)eYiPLB@Hs(e1z{$_rjT)_T)Lu!dq-TL9~#dVETLSwq0ZU&$1G)r?r>*1L++&ZpNvrq&Ih#8^DuO zokSRu8FIvMaCpEyvF4bzGIciyzN=aELEDKcTWYd*KU)n|s!@lR}}Nq_~602g@2W;pNlJX7>} zE2zEC5pA#6ul`K!yeLkU6y7uc0N?g3`E~1w(l@&Fqx7v-OGYuMGO;IcAbxH<@tU^3 zl+#j@`q%j>YvW@oKfRD{X0o@}qqLJ(g4Jeq^f54sMtY0%mypTK3N=(&U1i&(xoaZgX;~K7*X};i#?=^wq^%raL2(u zD~aJ?6P8(;TP(7s;u1W0?rJJn^e-kW>$+8(`i|Jgs_HR@H zRwYp)ju0*Yt9VJv9hjt~R((-EtE&;0`e1-p^{QDnk%c6})^`4-$Sal}c*&(FCyX7!$n^w5+SqVdVwJ->vGlSC)UJe% zVpiHmdYWy#Ba)6iixNg2=oVa&{wi-SD*(Og1AUN z`u3$}6V|dw)9hu{br|j9Mhs3j0fALqi=#|?F}^Jik!p|8X|F@aX`%^UAjI*w9OTwk zTGuGq|2suI!pn za>p3!(yO~qC9kJ+{q^3Tc-B_lvRXsx+z`MNLEX7L)@QV=lWXWKopm&y*{e^|qPf(f zYpG4WyFMCinF~{loSr=+vTY{Uvc&05pwPNIt>$O3gQ(P6$hM6&udK05%0jr0BX&NA zAmEPGed4(=;qp86?!VB_`5r9!v~`ra{{W*Aj=Y-hP~2Z?-lg2{E^Z6ROoztOPq%Jr zvzI43+~l#6%a2THsX_s5O3O+;4K>e%rL}!8QMVB5v&$LN zuVs+!gf4QV0l;kXbKq62G}Ne+X1^!t{(xHxozavZVB=$dR=1z zSg&s#rCE8~u@WFoPv*(T0Mi^U7Za6ap>@icE4~aByn7l?id|>Wv2%l&`5shL+aW(Ek8Tg6GXt%5$8s z{SNj*cC&YU*Cr^FNN+IhVmT(OW4GxQbO*HLNY zOTM$aT|{m}v5y}uUe#@G8Y->IWt-EfEv}my?jZLb;;1>n}i_o$i+WX+C1CA&%I4= zom+Vs!SFCE=o|^+ycE2+W?3wrfw_tt2?hsXJo8lixaQn|Qhy&)qHOPC^bjEgDmHPl_O=wD52}G?S$nD~}7_4jzq>x$&hy-v=PoiS3VGC6S)J+W}u~jy>f?bJ5r6%0@!26 z-iW8LP7MsOT`zWOu2i&@2;C#zqJP{?v6WoN0ZM)=wGDO*BEH zXl_Pm$>@#*-nY_IR_R-anL{qZFlvX%QS(&tU3lwVH>Q4Xbv}sNS61Fz2=*@GKqKD2 zGFB*;CzXa?x<;vScLZ@t>*x;yz9~BSDq5Su5W0ky;u)62J@hkMLGlB^0;svI zT>k(Ep;)&ShBO&c%H9UJ1Jmq7`J^D_PBZBD_j(sP(@0B=B0XnLhBSw7^)?J=^s8*C zr6`5t$;Mq-MPJ-H%62K+j{=^i38LTEqRseoKSLc8SGwwv_>0)0+iPtiouec3eNAe( zHSqdBmEoBWCb_P}srCK}#`3~9*C$H|F>dk`5-7>Wcok7Kn;L`BZ%n4EUHyo<{10b# z!*CL>boQ%0I)B>66t$6yq&kp87p7P-$Q&OvPvm%AoT zwI+n;6_Jv|TSR@i41K6jgrZj4UbHY->JhYoo!1%Qd8=A-o*6}Lc|+ctsKXpvPzTR* zp4FnFNg3;^XWE9Owu&Y)VM*;zO31-`6OArfz$o=aq=cY-#~t&5URI`p{{R|)NLjt= zcz+SMdV%BI((|>iL$z?{C$vLOriyfAMmzn51i6%ODu8}VS#P>zUs?T1uh?GJ-25R zRaEhjx5tB9LF?YHpHP8BayvbF!c#s_$P{XxkY`4t}$Oi zb>s!uw2hY@^<`YgqS6#KD|qFNfg>Z$T~Rj{dQ(`~w2}T6Y{uaV^H(vky_HTWPqJXP z)%NuQZ)~tU8h$XJUgdqwN_a@JtYw!{Xt3uT991tjklcEpl<~T}myb$m%43aQ9G@ik ztTpn-rdY~2Mdzbw?9r@km0WR}t5r(RVirk6n=YLtwabFsc*RuRn%)R0DF!raSB$eW z0NyjkX;{skdkWra7?oCH0bc{PFJ+tAIK%9LajAbm`e+6Z0Ge6KP2~nr6X&zJhf)4} zs~kZ80P0s#iw-qcCp{YzP;`2#Ln%%aCKApMmPt^ zKS52|YEf3N$E(-}vQ>{0iPQM3A%T%VC!pGnL0K(SE@%zRT%5T=6{-EURD73DswTn)KcX3lsD-!J+oW9phm^oCkGfjXC1MR0-jY_ z$X(|xe!j}uV_kA^#vlHoj~Rkl3KPhh1dlL2pYc`Rl!zJOp@zme=K(QDISXE?;q}R~Re4Wj8_%(e zO3>`Bu0`X-G6h!O%Cc*wK}L$BF3D`WIzy;oT{ZNkwYF%L{Z)~WdY@6BYK=Bwb-<`jkQ7w&y=9y`!t=*K2tlpa8S%+iKAdkIU!;d(=t7u&=&$Cz*Y(60B-7Tq2s93-Y zNT9_e*87og*$gxLaaz6waG~vcDmj%a;*6U zUOJj;D?nw)x^ZxxvJKY0GIbwO>v6uS8}Jan&jd3SLNk-MIRm)^y&C=mZ&`2szL38j z>iGWvjAOsqar`g%y`*W^`lNbmt<~J|6oxy=5IjmjQso9l>>dyPYK8H6ek-++j$znBjr@&kJ_2za4&mNVz*xyiaK@dGIej_?U!~NDr)w1&J`%K zvb*7Bm`r85>e*8B(T-+~v4T*Le%YYH7bN8uf!Fa#VeG|qc)t!>N%Gk4Pc($7oTaoL zEiXXmwfK$OZ<822WYM1zN-GGPk(9kbZ9DA+cX--4secw}X9PY~6ByU=A>0G|QB_tY zqh^}@6z|V?O zOSJG;*`VdZ+1u(u4^(a^9MY4mC$bUCM)nGk9gV$wVwIY4S_|qXs9;GZ1Ry@=6g4?# z4S|yhOQu6C00`G<9@OM6g8t!su{!ssU=lNc5r?%jxj1->*ZB^=$pX_&c<;dnF8&-m7@Vq z2hTOc{)+kRH)_LfPh;HC(5nnYfQ~z7wrUSx8(}Cg0}SMj*%d4-0h4C<$IY~YIq}+q zCPds|c@G);nuJqtY@ci`5@Ljtf(iOj@Q53>M1vSRi1(;YD^1=-DT8G=>Z`J>yGqK zllDQwVaRp3C0sTtE=Z475cREYV%hSxM~VZ(StlH(Rh?g99kFR*$UV*~w%rfb#my^L zG0LH&Bn|-0F9~PtJl2Z}%Tp36;kf(L$))xqDC}l}_+Sv+e$+)Q0&!tDuatl@{{Xce zOYDP*JuZO3-Nkpl@I$LN3%$qlaqXHilY3-wgXv^hqGWDVj2a_xoO+#(V=SE0@nfOw z=Ym~A-XLWkl;b3yy?mGYkHt!Hb4w@Hzoz`R#We{tk#8-CGAWF%2~u%i61Fm~PBL3Z z-zl|DDW)dgXrRgJM8!GD&oy0SdoRRcNix#uo}{+2 z(KbqVoM$c1G=wIrpIISGsn6tvoo}h9)oxM)h@%glJW=gYvGz+xVO(Or$p=u^=7&QX zcjDQg1Lj=uQl>IeSoBUYS<5S{yOBWvswq=raDCzvn*#IAzDnTb$v%&)9>V1L#m!f8O=FNpyP=$_L$b}UCr9L zT}k`V&#Ww$Mau6P2910xjd+Mwk{@p*_4M%^K*z^*I5nP!<2a%y79+-cQvG`|X-JKEdePe-m;>08;*Sbko>(;@UVHU? zhm(`_t5{Xn(m3oEFDHq&EJH3&eAUk$nb|A~TY7|Y!8)FqELt1NPFoeQr-ZPV*_WR- zUA~!CSud~DrZU_E`Fwu#&mnwOV6fuJ*v^CL+iyzVDFMk9^R85%cG0e?IgZYT>Fc=d zG`OZH2_unNeobyqF=wY%M)-RABQ$oa0ajiEZsgG_hAYl?R@=pL*nUo;hDDBPBwP>9 z0p!&uBab^L-LO%ku92tyGDUr9jw<9#}s1D z+7X8Sns+RR$UXTLd&h-bnf34KH~RkoVv6on(1-Ttc>TZiH-@&ku!=Zz_-}2V;yC>~ zG!ck{a1~v@EaS+3Hp-$+Vb~I(d84(2dN$1yr*yB_8pl7 z;1>k&Mtssz<8oY_7r6aov4u5ic6xrF?60TR=D+GIbi9VcRgMT+%`C6t^in0RWu&8279A@MTR7a+=?zo&NyvEByG*_}3UWCGFwif1~>mw0$PmR@NfKYN`r^(DO@-S|1(Y9?4oL)K><)gFdBvjHQVIV>b{A5QKn7BgY_G$OFbmPY#E)tUAgROSVl8s zvfJ4cK%P^pNo6?P9zDoA;Ex80bx?8b_5#W4C~cnLTTH7a7BDyiwN}USkdt{6wKR(B zR(q9HGpg-IJm6KGa+CaXqluO6{{XM*PXy}gyCZ{FwJ5Af1C}r;{{Sn8O|p3-a!Yba zJm#)`Y24OCn!pw38yhY4r&KmUZR|?cH390hdy40=BZF7mYITuW&1c>S*7B;^7bs61 z#U4rb(eBF|D_*0&DXWJAoc{o7)NrcJcxHQ*XXblts5`)z%A9!}>()|}5>h5EuGa21 zwn6=9KgUz_6Xd}$wI#Zb`ee3y_$Iu_d$14eVvo;B{OE zEJu^(skswPj>pj51;B{LgDL}<7C4`1;$+>rVf(-|Rd{BkQh{2Jo>Nnx9)T%@v|M(ry0G|(hT zg0nHmY-EZ`*sL^y=Pa3Pe3COq>Z$@TGgXtNt>9ru!sk}Bvb5N@W;?D)L&xn**Tt2q zvP=Z5N$jt$I^)vRn%zL1*yAMjtLpq$Xm)x4`Bg?;bFwa?`i`$_2~#9-1DvVtMWs{6 zlg`*_%2M?3YUzpXqta)QC+&los3HFE2sRd#C+=&iBdrk8CF^G!aj z(4U65y;EzXs>g3@JE#$(wocGaPtB8n4OTSNTTjp*`Ea)pj@XN-bS3rXrEPzulJV>T zm;V6a^W*79qsb`L;c5deEpE=d^u9)m*mDPc)Mg5DU6QnRfkj9_ZH%5Co??Jrgq zCPxjDdr~)2=ZqFycqo2J?1!jz5>0v^a12fk4k(oH++%>!wKuP1N7dyn6ftc5Xv>Wp z5_dSPNr!AL?=Im{8o3O6f!dRrU9^b1UOyQJq0w3!h~!pc`Q#qdy|Vmp1$T1ooQ>^q zC9SYfyI8Id)|HgfS{;IU&J1mB;=TpT6qg@rtel!3kL;Q>{{TsVZ=4Qz6<+OZD_IyK zo#M9)fFT3(0fS4&*u0^#II@>eoXzSGz~rB5YvYt-mI<{Hq(UIk^SGG+`H#IJY!ZnK z>@%WRTwZ9;a!~9I^6^zukGu*_NlO8%cv>h<_1rsVlcOZLk0u2K`fq60*HT8^w2JT1|rn;o*$ywVE4Ctn46WKU*=i1UDL7zZwYXLQam5)(uafF9K*6C5Jb5)FzQtwiAqxy) zhH`k%iYiY4CFq!hDdQOTr7Ul@$fQh(hI{ArsKuw~=_Om_BOlt1wsY){BdU&057)&) zQ&3O#PZ?vC-k;PuHOX81NlZhJRdPjspm4H2(el+g=joo?-rHRdOv<7{I}yzfC?a1( z=7g>eJ}`h-#$1WT2{xOLoirkb+S6lS-t#Hk^bxlcw=>q z%c7|V0-lS?7Lr39z2kB7XWN=4fixG6{jj-g=BA(Mhg3{WOoYKaS92`woa#zVPx_o6 z??#Ks2Lww^K$iKAeeqLL!y(n0Z^gEwV$ec=RXrd^TCe-U~{4L8)d zwSdVH$znWL#eb;0FUFma(e_^f=5vbdWeBz}Eyy8=8SP&s=<TNCU5}k zD!D<;;7)cGFIjbLmSy9C@TY)t#ch0li;Uu=%IVzG!84$4A6A8@mg_7Vcg@ZzKP_6K zT_X_jlIfOSLs1Yy5nOOF#bg|Dp-C+4&JAH!OgUE1oZ`Hq#hh?#y3{SDiKHm9ds7`= z4#z2q7y6t_ms@^&4k?z2AKi?=774l3ffq`i(Njc~{6Nxn=LKfOk8 z3kZ{z4X)8dyRZg3ih@#>i1s$6`jq)wfl+kq=VD4~Auz<}%|%xI1D06|<64QGh+v?1 zC(Sh)WtE@|NY=WJ*&<@o1@{2=tIj_X$-h9{(q78a{{XC``GhAp?rTp^jDPhN_Htmo z8g!1LNv_0`zZ<`L(D8V%rhbgqGU?cF>W;jCX^m|eP)g%|?%$e)tfIJb$*%Ay*I1D_(YCI!{gr-^DbQyjGIeF-n(JxmcE^LaV3aI z*tQ1*8qP{H9PJj!%^k|$`rfJCp5E03oMQ)DSR`C)SJqm5zLqC#pP908Oh&lROcI1! z0G_zi{{RdEdU+fxk;wa3zu~mXf0JR7iux7xPNdc)>kBKH?&Oh?Hg99NVE8q24j&#g z$`L@DYtk)^3EulmlIlB=_@=_-HyQr`#bz$0MYV&jN-t%lqjk2wporcUH`gkg5_dby zE6>U^#yLN|LaXhINj;T!aVWPbtuj5vxofNR-Q}EDY}&otC(%Bsju?JoF@P{~GwEiqRwXBe`}=?6>`>CRT}mmhG%aGoyjxq>g9A1jQNJY-TG`r#hFsaqb^ zK-dZNIqy{V@RjmyM<{L;O+hI=p5IS#)g>+(Qqm%b z)t$4ncLVKFgk5BF8kP{jVP^LB5oxyX>X35MokAneTA%t8`O5FMjcpw?TMPj)Qxh6G#&Z+Rh=n6WE*%BwH-n? ziJ^4)!R`kitzFd#VKH{o6K@$~UzNE&1zXgdy?~Y?{fZY6$1Uy|w{zOA;N=*LuC3v+ zQ^XvOeMZ<*v&P_i;Kx# ztj>Zum6}4?b)}&xCxE@Od0?ScSyYkjo-39-`wJG^8d7(b1zc?djOMEBmR`rAl0jQ( zL=l4DHaP^WB%U}}qzTARV9qDr`ElX0%zJmxqHa&W*L0Yirpq_ZKHOs5+{8z#o#=FJQQDW_@^1eZFNpeB6RPsrsQ^al}NexAOe6pZpV+ zJ1gt_K?I2?Jd(T`71Qe<#62&x)=Q5`(`{FxBY6u&D=#Z2n#J2TuWm)JX3EyfL`(j? zxR*(JJqV;5n&buf{PxcotNZy;qmLCoze4q<=Gz%B^y{Ols!H+gQIZv^t~{vDIl$M) zyrx`wcCHhot$zcirlY8|J7q%qSg_+K>GY-Sz7GwEd`(HL=&t@CemV;a886{P+@*@g z82MX(21Ofyo%6&!kh;}W9FoaiXnkj4X?t;}NoyO+AlsRs5(hrm&TC~q9e)}fq`m(D zxk*PW=NGm_D`J+L!Fu5j&! z@K3C=R+{#MdnL0lw>eyqEFj?h#a?kaP*V4=@&f)WCb5K=Iu&2|V%FTni-?K!2vhTq z^L^>tZ0$XI5L{IS`1=Ij$8!y&l179ojGT@|8m9?KCJIj2Y)ENtE-s1Wu<#9EsKOBv zm6?{t?w_!p?@(2DDhGUursdlRM@L|%DSJ8_r)&+ZXs$OY<8@{%zA-E#7wBp_JX2i> z6p#mcua%wHcz!xZvT4?>8v?`B1GzLQHTE|K@+-Za;_3(>`C|v>B9fJrB-1S8=wV1@ zF#vfWRXdb&6_c%?4y_x4N#J6k-x32U3|cmvBD^MkVDXPM%x`m-Q7Os4M4S07p8Q2@ zNf_h~!j!ti)(CH|#vL~DTP-+1goGgdJJmewlF+k`UP2#;j9L-5dpYqzQqU|sk*;j* zrLY8$TfY?LX?u4=6Of?eJW~-^C)qO=gorl`eR!r~zh`>@H5k=UmHlY(h6wg6 z-F7nid-pth)$bLxBnnt-B{oXM)SH8C$?fl3UCN9Vvi|)S&r95^SwhOd@yN|)EUJ0g zCx*0HuwDZi{J}`@O(`_e6qItqHZ#1E51WHZ<1A8f!W`^fO0G^Z=QLQNw!}2rOM(=V zSLsDqE98P{akTI_H76h#CZvW%7$TLD$t4tKlKOHVn?CgztP+%Rf-y`CWQOO>F^|VM z1B?(Zou7bzy;oV5Gg?1Ku5?>T;AN5pbt8~Qb6>ZmR8rbMJgKzwR~p~K&Y#sConRJ{ zk;_6h8n2%QsVv1|jzgC?d)ZrRUkkO(D?iJwMcu!IkR9K>Ra?ZevdX?>C+w@WJ3V_w z)QVi%O%jrOjIZxhwpS=TmXMq#v`DqpRe(uBMkAl4L3V%W5uo+7i8OeQPJQ!IOFJOV z&7lkFmvpDTbDEN^KWBS&Bu&xMrLOyV%eFb)P@Os=tk^C+7f_A%?GGT}fO~%Qo;r+W z6Tbm{2pi&He$+^0gs^T`od_Eae)MRtT0s~kl(-vDBb?WAb3s5|VaNrBJ*&D%iGtkW zhZwIZV4qgW@LVLA=eO@f%SSq!WRUIQzgqH{B@jNRXBMGgW0^y9!7G|uk;aE5enp2H zkv==jPI>BXl5IOsmV0=!89XZX{j1}iXZn70N!wb{^`8^x6{%NiD{J@zIA_RVzyw#z z`4!494EilMMoTed2A9%=Zah|g+U3}^jFSUj+{VlKuyfp3BU}3zOadi&3k5k`;+RQ9 zE?Q#tp=TRh8H#Qo@s+DOu6}~XU$Pu<5Hp+u?mST?Aj(L>#r#3X}<_rT#mzve~DZa{{S>sP076+^RCFH zOm_!#nc;C;t}1@x=ni8Q`FkC{AKg8Lk-`Y$Zy5UKsC>MBN#%PBT6iq^wSQ4Eje(BB zvPzBY>pDnMPMvYG^#kp zG4!rwpxJ2g%A{EYDaRPEB-_~@+XP$&Xj_8E&%HYgCKDh}Qh3S35TNo86#oEN$eE_= zTer8iA*RC*CZ}H(b9zGanp!GdbFG3;D27s`o-y3k&xzvlmt<7g$=-^>`>1a(?!I{# zCv0Z5m2m5(Iz?RUm5hlLj9iS9^`l8F3(E-xA(4^{Cm-!gZ?;OyUPYZs&hqZ!Mp9XK zXBBHrkb>W`l6lUIwAimLWJkdmJ_Qc>S7N}`Hp;nW7Y|QrkAztmhV7izBb&!tXxnhP zea9@;MWEFB`uSxFVmyq=_TD9Wh$YNE+JS0!ly)L*kVQUn!PQlOOWy1}z z1Rndi@Hwjr>{fA|xk*JoZ)HWinDP0a8-s3G$Lsxa1hx20rC-`Hzq`7>mp_=c&^Y6P z`c`fEj!Z1fBD$81q`w^+rRe*O6Gh7?kJFU1#AGV61He3auKxhUU9S>aCt6w1tABH2 zY|13K^jpMi{{ZRlN3Jumekiq$QWWOBw0nk@Wi1M}a_8Eup;eJdN7xxyn`xHDo2zu? z=T2BprFxcnyqwOU7KpAtGM^maVA4G3Qwp+{CcTw4{{SUg)S7Vme}C>hY1bZ=tZTSU zI}^Q%_pF7Ha`aAmVN01W<+qM88ICD9Vz1m%3b{9tNjRexkXdQsEGm#b#M9Nq$JmVj z04I<%_mP+~=LbK%SwIdRMa$=BLSq0Ad{db06F3mBF75vS9PlxBOy-q zG%`r|!170$wW+-!cJUl!N57OE=o1V(F{}Dx_9r>NSQ2LSQuxS8+I-dgI=Em_$)}cR zxxRTIDoYXf#TvTOU}tVt3eQ)Ni=wRCInR33@uT?U%kpQl?HQSFmPEs%s*2YEY%MZX9l{o{3JdsrK@)ttR z#AjR@z$-%1FReO?;v1-U+N`_=j9b2W^?qcv@ zN-`Ah!5^h1UDB!HZ5~#q>=R`^r_%be+eM@`+e$YXoU{6PJmVd~s|xI<*veCDKcZ6W zCG1b@eMa+JjpMt9Tc}u)5)rUP_N!kU<6OIG0lEw0(a(1pN@@DQo@v<>6X~S99ul|^-kOBmR&Wuf^eoG!Lb4A^H4+BgxfINAlUww0)dv3nY}2d8 z`i_i=b8ij5qaUIqjdruI{YT0A)AZisB-X_4<0+<=ina8(G|TMEwn&d7=~^{>?}ojZ zxz+H`^4c1-G>mGIv`g~+M|!B_%1S#Mt1_00g40ut83S-U=Cf8!xn&j#F9F-FUd|0H zI?1@>v7z>qw2nn#>=6#H1gpYiAMsIVB^YDuatmSG3)_8wGVU4Uiln*8jx7gn9x2fb zXg*QlaaA&VCG>f2M#4&RJYu=&i_TfmDeh&G)TCe{c_4F&FK3MkKV~+trLC6;l=LAyJsTGdqGziRXr@Wkv-*)fql4sbJ1!XJ4Nl!5YD zmu<{4z43~AFv3*V(6$3v#h$gGA<0!m@u4-RJv16^J z!T^$PC+W>mT^xEDYej>kG>rnDSZ6rJCDr7wu@5?Yf#t^Un0Pc~n^-F*usGW*ECZhZ z09xyZ+ACzXO7*=Y`uXOAIJN8_RBVp>$M52nf8Z*PO$Pal-~*p?QQ7H70f;VJ(*&M< zg?F&DqOxXXEy@1?^FqRY&nD6OPj9OrDhb>%$rby7$o%bqtXH;^KP5>%8;b5x53*XU z4xPg<`d1o@JCIfPPT60^Ot#A^wgOLEB*4rY;311{{S{I zim0>4)bi114sDCsSKa(M)~q)hCrjvjFgsiJs&~Y;KD`#v<<|7TjSjP=$+F_oXox+^ z5-3=deuMUmy)c!BQOF2MMto;DuXc~7L9fv+=1CnI=Fz{a+yTyMYb(ysNX>d=tuv~v z!>y*PWwplz_U9jb(hgFC3gVu}dqwH(NdbkT4~~3Sm5oQVfVA>XJv(MlvJk`moEj`G zgw|6bw0QaqUV&6qAFVT(wfj1s?5;KIXVWfoB7qxrAoiu@pKNX$1i^N!-z)HYb6n1X z;4Ku4*vZe{q_RP*64YlT4m|TsL2GR34*vj4w!XG0G(eB^p9sOY7KT8CMG{QHBRa2sTa_?EqgaxSTu2S+;_>U`7DO{3~nufTpSbQ znuJqZM^%F5^hOw%pO@R3cDCEVc+D|hdDwD4FSx5nK`_0U5iSP&mK0|V0h1>tqOmv` z=iHhP!rsK@(>KknMDgsBU_)_?(-4POl@JXITAikwadI8N4iB)aDr~YVOp}UxG{tun zt^`g3f%!*jjH`BgJ(5V)2JCJGkFF>$j0Q~hJMUIddyl<&)r1czgqrbE*goaY)bmQJ z+m;Vyk>b?T)H|i^=h}%X9yE!jY;9sSX1=?+Q3 z@D6K9R|>k>T{~wtv1(RnT(h0T)vQvFpiOIL2!nXQGBIPE}hASaw; z#q|Y*V2(QsRHIXoQD(<22GT7`)W}$14n}!288;V!S5tn2pUL7$wgea_#VI*`0P5rD zBWt62a)T0fJe<{C+tB?sN)JQclc-H$EO7&nr;(b>a;lC^H5{2s+b=Gg)EeU44Y)pe ztdB006x>S{V`ZtO>2Gk#@^(G2Dv7w{jIZj5`rl4m!*FG@89B)Zv8g2D`(SF0Vt7{C z`eP3FwPLN2$I$Ul)TJEcGLpi_*)ylEu40Tr6-P?v9tNY>7`Iz zL`0#PQcQp_JN^BIEnQjv06}LQ{T0_%b#2M9xVO25n7V&S*|0ZbIT-e<-X8_Zd79Db zO1h(`v!1nUTf2>RHiJ-~Q&$6EC_@JFG5+x#R^SoaQu9;~xIzu)asiIM1&g;eP(d+HrZwYuqKKm!aFkrRf&&JAn%bAq$1~ z;C8In&1J7PO~3UQ%WrH`)$a8zI^XdY5&ksp+9QnNiTaOfXO9Z4c$~5Rr=0$X9Z9Tf z-6?6MU0msM-8JF|K9snQHva%4eQEwL3a(3*CxpN9EAvKA2-m0eJ?-wQk=-Lm(kAVt z2=x5>cCT5+jY-K7nuA}6$#o=hM;M3z!@WU2@GP=`T9ZhY?6Du1spoY!AMkr6Y+ea9 z88CA$aLt}-%|=QK^a;u!eNIDetQofk{?%bj8+aF#ql~h<)ow8PkMh=&j}O^hWS)N? zLd>%>DcnXrwQCr!p*hKcuI>Pdl~-wD-mR&LS#6jUE-j4rWH95$oYll%R8iYJu(qG3 z#}p?Z?kBb}iWQR-%M8bDwBd3w*mtGYWP>ST5`~M*fmK*Gc_3!J)FQX3Fa966XhNXL zKVD5w;csXn8g)w}HJFOu z1<#R0qSYB@M{RO(!eOqP_YTsyn~v=Jr$6QYk7NR#1Exeap4^PMU^dDvM<5cx+a}& z=6y9Gnoe;5J4rrHf7-0&#;dR58N%28h-~S9z-pQs>Z^b2-4I!$mx7%30QVI^ZyrxL zB;1q6G&akxXm&j(X(ZNC-|Bw3Nh67N>`wN~qT zV{Fi^;bvmTdxqqGm8GduLhC1&{s+^OipGF9{R?xdX}0^JMTs&RRZv)Gx%+WemH8;q z3`K0NzPjyyk^t%d01Nf)FQ{&B;j*7lvbT#ePimWrD~tk1aaVNtDBWLddNY@Cs)VuI z85?w7j=a-#NM0!97N?UO-c}Wt1so#cl%>?6<|Mx*5N4fob7`j} z;1z(JD--66eNnPo5Ux^!(A#CKt6P~QVURl$l1)+D#d*RVRwt5NH*;z?A$b6H6d6|< zVipqZybiiV3W^cbVDK?iw@b8!;~|7c3}_Qwk*<_(%8z=mt|~8UC4AZ#qmf0n(~jAuR1(@2%WO^7 zZv7b;D9Q27Pte>JMX$scRt!k;K%>>~VOkP8j!?Fa!?rl9s$!++UR{&P&D}(H-$^Fj z+@Be(#|bwSifg8#%^DL=Bdmx?8@Uwq)F$xC^~rJcT>1o(!~~28+S%{Ps!O;kTl*ca zo2{0$r&D@1AwMAl_o^E>wnA7L`5|J+XHM# zhET(8trnSGX2|ln&3CiTLAar&(^*`Dlb;}(B9JE#{2I|#A3y0uQo<{7@%PSNjWWfw_e$MWu7!#S@wCbE&qN^v6U{Udmm${@9eR}KkLY(o+U ze)OxRx0j56u7X1OCx%wqpFrvNB(2tv){}qORfp+S^Wnv^!aT;8u|{r!YdM(d*Nm(W z`~WxGgxx+?H;B-=11rBs(ZNd_E^_+UWMxvzte6K9YWQJ2L@4) zew2%h-{Qtwi`pIRZovTC-f9GuP=I{w*x7E-w$b4X4F0uZ9anO5&fZ0Q{{YB%cJ%~o_(+OfQk3v3owvt!5d z@v)^LHt(qI;dc_cVN}k4Tkos>mD}9hmvZpwEvVp_O)47(i?8l4V$v^%Sr0(_1|5ie@tPB;XC8x&HvG z#Y#LFeUX*Y&*HKNpQx{0i$+;TY%Mzu6-jIaxf4>!6?MDy$Y*>XdNbnG{Ugx2Yi!dd zw|yi|xhlY55mQ`RqVg48DQOFrH#hP|T(cJK&00bf#oz>#)0v+nAEy)-a!5DE@=t?H!~DZJ6ukK#qHd?0dp)?* z8DJ(cf;$TIFHP*NzNZzTd9>Fvjrl2`ZuM#NB(zhw{>ukUgxl%yh)5qVIrB?P4G_S? zrpTi7t-}ua%~i`xgrLW$O|qixWgz*_dQQy{j2?6xvC>7=$Z(s9?afnKvd62;URob) zV{It`83Yd)Rs|A zY*2jJf);$?A(q4=ZdvlwIrg0u3c{t{fgK2avfwzYGq(h$2<%9n?6YMR*|wQIK~Fl z^eJ7NjTY^$3hj-_AjnR^{{V3J8K$a-X=B+pB`-`~Qy@BkIqpbp-ZS`b-*~+{0{Bdc}eU?i2&G_Z-!{oqQ@@-~$))K}X?bf2y<%mOPfraP>=cvUuzdbfwttIw8_!?Kk4s0(*q z`87k=i1B#qOroN&Zi7<+v!J= zZdzlo^{`FKtTyc_>_==~@^@Uf8+gK6tuLVqC;J!fBv{J^A8u;W zxaVbUlfo9JS*~?72o4Fy2fbXuB(zjnG1E@z^cHC3hHpEToAkC-&RJn2q>SNE52&SD zOb=`s+UXA?k`w`+Fe*yF(H9}-M(Jr-E@RvecF%fd6}9XHrdUvP)G_I7&luoif&TRD zBZaYNW68`Nc@MAGO>GA&y98r2o%2w6FSxy@gj>A}quW_%aT$g|86b{UzE9;jGrs1R z(e%y*DvG`PEKFMoF&^fur{|5Akz)R7ZWexR4u~xDk`>aEro)3 z*k7fs?)3}Z=!}aC;n>c+qpQc4+`r40R4Dh>R)*1Nmlzkl>B;pcQ9H!o9?Cc2rfoA zr!IdQ%vp0E`IC7pZ4%^JYKdm4w0dQme*li%s+M;vK7zWESuoV~yUjZNWs(>#wDyw? z5=c)z$J&*2t7EcC3I717!!Cl|d*AN?#IYP^|Vk zhG=~}9yas1d*+^vg`HN$NFOb_ogzp;KKUb>W)|-( zJeEq!SkszjmI+4nBO@b`T8=HrG|^XmeY2I8QhKhjb8CETin5|M276Zejyx=fV$E#b_iSWF& zXJrTP1JRa3={EJ={15L*Nn~M3g)H{^#kUX8&@rE6oU}05w#&dtESdME+%^JCA$M~L zlOO^;@j+`0f@CzE1e??X!``@{m`tKzj#=>gf{*p0D%)TuVn*bN;{-N-oYQfKQnJf3 zZd73)B>3dflpciJ%RIWeXkY=`3+!l^YuHFEv0C=(IoRZqd~;GsvE;BXz1l=cb}FKs zuDtp=DI_3uCaD>QK%@o7U~5&wp+#h@zTeSFY7(2v)3rl$f%L6aE7B;gnC;S?IMN8% z#>9?E_p3<5KFS*`!!FG?rroWVY@wddq&%uml#@iK(-9e?-qTAEi=+g$XtTE3mGT554%dawuCaS10F*ncqksi)y= zWV04j+eMX6tdQxZb)vF}q;jw9-zlb)@G9#b?0T9fRRO^#&gz0V>$l-P;!DBA?oXyZA4em z!+jsTsg@tDdM+8xG5&xh2m3rHLcESoQW-6zX37wEDE|O@EUSf>Z0eNaX_u!WxM)(s zbh~K=LIMFE;DbSz9z9-GkX3U}{EIrDN()xL%w7-O0+s5`XH~2vB`c*u*PyGu;%) z4A&aXjQcJinjjB5(ASl7j+kEXm!M9gcLt?w(cHJqjB*Gfg*g3SViI}Koi?9$Y5hoF z)PVWVYE7pR=*co=mZ0jYu9zdp?OxmZCxphEd*vVy-TkY%X`IFa@yQj;ds&7L9qLVI zM9{sf*sKxyk&LN6D!$m@cDV_cR*+rpAC>WpVyh=w0O>#$zm`)SjIdW)-$AYGe2NZ7 zAOX!*+s5r3BFe5)ho(^dOYnN~TZzm?zG6uj&Ii(}tnrwSY-qoy%HgESn(yIOuWuYjWUsTvymnv(V{UvwU=7Wd0+?VY&C=}XF(C8EZ@WTogxyy(02W^MbvZonFf zv9}~vP#oEy8{56g#{&Xii{VKJ2 z$x1q9uly#AK$tIJm>hRWM~ zOrWxbiL^_LY4FjM`_;5LP@2;al@>!yV9j)wesT85sJ=o#X9-0TKjG;dU@0TX#d;i< zC!sk^lNU@gCII=oowW3O%i9%|%Q`Y0CI}mphVpUVqUAXKorQ_8Y@IqiLJUU$@sUdZ z04`C}Ea>X~jVGpEp=R`38S*QuoU@FUb<>@-kaKkVE1V!F$TZ64CWC((Inps29wk2~ zK5{!$zn7z`grrMd7zQMv+wYF_2g&~cA-)y%ON&Y&_>7b6Mkq4me~@1fU8H4qqRee~ ztS1=B`FmF@jHw6a$C}VW)X|!2cp9|L7Ut&AG;y-=#z#Ni zy*^5>O@)On&q$2g4xt_HSUJJtgU`~Fcg9Vm8qPeTwoHo0TWwV%Ossrh{{ZHrDORJu zV!d(nbT3Eg^F?DHtClzcv(9Rga?F@J8c1=}ZKCv5SStC-_^9eL&EnTXuQQJQ2lQ@%gn>{{SMvPZ28C_(7~Tw99dO z3~|5sixyVTw{P!P(DRhn94PEn;!iJQcAwF9y*s8_K813(EhB}5-8cqDq81yg3y~0?2jlC5vsTafOExL-( z>Czw(M2s-N4=3E3=PDH|UssgETVj;65uV(~X%ho8I2`2pq+wfLh2@ztzv^zVj@s?* ztm1o_&Os$e3Tn<3HntWOzibNyz0B6a`apL#%;u!4-a@%0q+_T|e*^$+rByB$RWmHr43UX`FUh0#__@_I*atPbo6=z*ya+1!9>iwBqvE_VoSCplU3r*pA z7pI&QAadV&w1jZV>n1KvWRb`musjO3t$h`L~;5ku$ILyL}s{Co#CpXiJ6fk?m2Gk_}WGnaO%9+-sd@B-0Y(f9G!Jn#*}Bx>J*R z;^^&Z(N>Bev`E_k4U5L}>8S&bJ@S~8?K}jH%Se6KeTzAbV zrx?D{4Uw}!5NTL4F6oX)L(GQbGnnnF{Qz4{`m>#?&)(=BXO zCYED64lo7{3-N})S(b}OMzLwMx!X>3jNA>ZugMtlD6q0qjuwi0eeBY0O|-_!_TlAl ze={5rLYLvD&cSDC3zxbA>e_|W7k2UATA<8D`76h9iU-LhEfx@$MWHQz8Z4Iv@HE9x z@s!#ZA8In>-O~x^v5zS&V2`b6mNt%;63QUB39(s@Gm4CDlY1Gi*Cpsqv*|b<;^R`k zze#K!PoH>TxF^9LYUy&4ttg|iw+{>1Z)q0RI)C7&vW=3#N6Qm2!BOp=aa9wV`7+kT zC)&i~{fm85q~7cLjJl4KY9>{|Sdi@mdyLf7`%AD0N;IylhaQQo6t%axQ5$ebX?S0z zYm)6_0V^S#hGx=UH2JP~$bZNcJ&Xr7^w6~5cyMJ+q7$TRg(x$ zBWcJr#=3`#$S(3Ey3^dVZFL{LaoFSO7JPSxCC_TX^RR^nupQ{oo^;Elp&wY&4Em3v zxb?h)z^xY&=L|4bMM-)&r{Y$XHifUWt!{leKw*QC^{=aVi{r|UGlq;mlBLxpFQFes zyY(+(7%EBgS3H{W7FJU{viIq!V{4e>k%EFiC&hgCnFeShj4ZO+x3Wunh>0Rd*aMP# zip$!XV{v%Udgk8P#*Y(_e2)T>u|+JQh_;RTY$Q&8e2+AQ+F{!rwDf`~9i@xZ7|u!J zg%+FGyt4Fx*Ow4TSuNu%!1nK4X+K9W*Ry@KvnmNBOmWzZ^IeKf=oF++R@lLd0qso2 zIYM%iY=Lp9gp+YO$M&Wa7zVO0qrlzKr$~$aJ(H}w5 zCBD^g(Ut^*+OMgv1r^q#r}|r_vttevs^g4v+N~5aiW@B1b69lAkreu6Qv)CjRMZ3~ zat;oYR|Dl?^aHg|;caICf02SE=R`*PnWHW5wQzrG1n5kX-ig=h1s#HZDHTC%C;aZG4gk zo?JKgkB>AtX!>k|Te5toDWSc9S$Yn>io#B;F42(hk)M@i2 zO3Y6xBW{{44KuB}t_x%mOf?wPU6oI&g;J@sl!RNMU%0RFfgHdF` z$yObRIHRjE=!1yMA5>pHnAVpQ{vrp!D!Jep?dzr`aj;nHHO^9*N-TFPM7!p7Gh zu{%-tb)w#@32el2d1V_&q%7b4t?lt6aN5EsFd8twWQv-^GiuLpo&RsUb@h)u=h639Y;H8GO9>sHl_rE z>U6nyrid%4!30vRJnUsO)``xoJY#fW!SGi!e~ljPfHmfa70D;?pKK5GsxD_9O=bvw zo0NUAFIMPp#oIn0*l>Fq!t(fBwVWntIK0}UCE1iNweb5@x73-x4$To_cLl};e8-!8 zym_~BX!|dUpAP!}00v0W`gx$ZMd1&gJJxP|#bna`nzvMA48*bF_)XN>=DDTYSz94% z$pXiQ$>+%xuHtw;UpB=Gv6f`HUU!Sagrzj}0Qj@;=UDh(u3Krk$wrdl3q;7-&O7$5 z`40)o@l#6QOl!n>olR{CsC3bh>0#@3B-I8h4B25^J*2Ps;H#OEB0%J6Hs2 zS|CO{;%x)HC;hyv6B;FsZLGR#yQC>^RLW zE^M*v3((bN(CK#uBvJzoc7a9XPW$XmD@6x0l~f|oK>Q)MXqrQ8u6u?m0sjC>`i~Zy zoohQjcgW{g8R0NI-5UBzZHW%d;HX@YL%)e*mQiQJ@-^cPgPTMlnWT>=+LVkZ2ZF-h zT~0cAAxWi2ZEz$Bl0|jKQdlc~XvcXPGh( zs&S^tyd$42ad|mws=B*Uit0p()!m>gQ=mF)!6RCaaQ+n zVSO$*LeS*8Y{~iy@Pn(ZwH}>MS;EKw3<>S#zDLdA+f9u%q-cIx?1Ge8(6-XYHs(j% zzuKr>c>vxAUYmyAOZ}Gb5Z5+q@p8-N58lN>In6M_rPO$`D(ktm4)l>fYET(LX$y;lEk} zi!9^Ila3_BKZqK3oof;Vy*66Ri|N9~L$m@2$;WRz)3xDEXn&7um-$6e(Z3O6>5XcB zn!dG$>e4XGZ|yU^*dOr^KXF%lo)fyIWHkQ(MTL|*w->U(9~(Lb8y1qsvV&Tnf^?@*+W zWuPP)Ia%6Sn|zFNSg6UX3gfMjoc@u&QMpKMS`FAGdjU_VQBWLb=Rh3n?#U${uBwXFJ((aM+$GNL$Ljuxx_Qm`5FTnY|%~?|%3E4FC zFHMHwc_Y|&t2ic9SuL7Y+5Iit0iV{bptZ8Pat>M98MZ2pKD-)jWr)sLER7GQnn4+O zu-OMK+Z5buE9Yj*k4DiVw}v)l7{>z?bqA3t%Ok8XssX@N`U*Nt3$|(1btr5!nI;Sn zs^^iM*PO6QF>T=D{{V=+Nj9~uHJm$)NX1)m&hM>N-D+CNs^W2VmSNF)d^VrdkYJwq z?kf-E?vy$j&T1hYq zzxtibWglZ03nw zC*b;HkiUO=VRB!uqp_px6*h;UbtJ|MxKE=WIAN`%{k^QjOT4p$|hX&j*)TG zk?9uC_-#Hm&e+cEpRHMbSko%kF38#0g67c(^y1YV-Gm!efZ7;+g;q^8{{SK7$->Qg zKGTd=*RtB%sEXb(h{h-?$JwE4X63f_PmJA#{gr!61^hUGtaRTPzvRxDmV7dFlxrR zHt;yT6_;3O_S*K4V7X80#y_Pdf7Z30JC|n`X~)r5%Az+%45MSwVYItw+8vT1@@so8 zRIH9u(=uz17|#u3109Tw6v#JWK^XB>cEw3C#M=AOa_M(6-RV&(Fq3El?O5CEY5E?6 z%FnTq*=Awsf?BF47QTZfhTR^}ET1{#`1Yh4l-`Ls=xLEH#fu`!5%I_k&+Sv_vFHku z&Ovr@+gi-h9&&j#+(VsX)88AAD0WYy&_$i?Udd zNM9nJi~!>xS@i`3fW&=sOvVZ5i%AMsy3?e@88S1)SkX>i!Ae-rsi^e~-l0w3r@d&Y z;L2~ZS`(eIU+M=pS68uNOB|dLgI1OC;|&Pee3>T0rY~=AV;fzDdHHy&Mb#`|r?%9- z%h#j2EW+YPgq(TsY4|N@puX>{oh8$~Jh0isix5x%I28SBFKDB-?Uu!ckFgYeJ-gFR zE9nSI%#ASVu>={93@g2Qtbuc8QfaY}Hm*ST@lxrN%4~|-EG`cj9{3cz>B&En1}W3g zFdBxChQEOO8!)I=^5mpNF2R zu=I-kHi8W=E+6P(Jm#0Na_8ZAa7Uo$p7JmHQtyY4p{V&8=P8`{kZ)iaaDDx$TW-gp zm{!{iT3V{V-l;hpnMrK7s-%Y7P>C81z5I&J*)08*(OM?T*0M%cSk;L40MH@HvJ%W> z&q}yWZ2+XS5Z!v#7Y}OVpOvsHUBdI6s=vAA6xaCLEZWgB+pYSCNSLh5E@K3D&T;xy z=Z)s+wPt!Vmw1Gpk!0v!7cAvuN4hrigN>4Z=CpNlsI_J+&t2oKt@LGxOHiU4&o1D&Y#uX$r`7%s>60@{Wb#-{Pxua3_BCC9i-X)WTvO!c zmL;;f)P5WFPMs?oCXV_s&H>op--^!Jz~n+%E+OP7pS=rj{{Rr_av1OQ>EIpycnJsf z98z+Hk$9d<7~5307B1>h%c#mGwFtA0<90Jj&X~428Q}wk?x&@Z_{#(7la1@j{+OtK zaC-}w$!Ilgu0mp5#KDic(-Fotfj{*N#i-h`+QD<&g0&gbU5gk8-f(%zI;5Gt|~su@f<~e4-uzBZ?o5^Blhy$WnS}&~rRr2g*?4pMRlK z;*Z1~bK-|m+FxrBh*s5DLUG>!)Aw8oMn3(5LaYMWMPBGaZaTSBW@O0k@=Z(&y-H)pX(@oJ2-g9t8eY~|l1 zGHhP}SEmSCu$bl&^gL+YZKFMmwm0f6hTa}PIWz~ulw-A@^c9?B-cg;!{{TzeboIl> zaFSedAXRV7e!eOyj=xPXIhSI;j`kR}U4}$J$FVfzs+6nFJsfQzjukE!Y6b-N9%`;l zFJLDmkkzEv%O$`q9@Gcknc{G4=GeOWGG0T-MwNow(QG!d;cx~CBx1h5<2+0$Nwu@( z9PcA58%dS~Hh!SN8OZW0Zw@+9(lS%FO^`17V%p%dei;j}@+fw3GIkt^N9<0#=v~8f zQJB~s%kNdP;p0sX$D1VckPXK{+&rWZIPzDTP4MKIV;+23*{U9co&Z~CpYZejtILG* zv(KL&rg?kNcNZ3n3XP?C$C|RQjG+ArzIShB7uDYfZf1END_}u5#t#CT>b{WNIZ^eI zQ$qM3adoK$p52&d87O$EMQ=#;yqLv%I!~p(7hULc^*X!T7gL3rc~;EMTwk?}L*KGp3S{wFrRLf^37ldU|jw7FdIpL)ruVog6~te~38 z98&UOr?$yk9q=2yN_W}Qs&4|SsHtZJ6*IdDBqVX18m4K#W2vvBKgEdSkTw`&+NT(% z&WYOInPsc#mrFgO-0niGSw`%A57LPh(e}XYGjMumDP4Ru5cM_M!PF27f?6{S(QI%J zwhugFv^Dt{y3*^0i|F0><&iXBg%)aO~gWHBReM-b5zxprcBn9m;%i zY3MB#@_Q0>o9H8L(i}E0D#o?+b}h1%>dvEh?aVL@&QBN>b;qGt_vjs#b=-Pxhj$22zI+kdo`iDtSI*DTW@tS!1;RO21o$I0V;a$2I}2k>(<8Tq zM%=jX#}wpZDCF479C+F@w0N##V4G}`zatRDHx=S3WtBI?eMUNJiSeIqg*68h*x7Od%EYjM1yfmizHb%B8#qO96-{cy0rN z549%Zn0Ty?5HI2c5+ESAaaFvRRDZN2Q~Mh2FKzTG;+pNsF+V6Hxb2!!mt>`!0C5=RxUlrcC4+HQie0CMF)G}Bn8@+!)Q=G-|Td;3!{an3M8S%h{= zvd|*6)b6f~&hkijQg~79D)N^U%8pI0*rb*)Fv5cAP8(z(K_6FrW z9p*2!LdyH-ge}IwQE2c)j4_x005R`Cj~Y2WJDWDFVm8_b6=4cv1T87KG7ab`q=H!Z z6(-s}6vQ1*QoDmyg5K0KZ(+ZTfHU5doTR0MTvG^j%V0foriK0OweXbst0-v(JC5}~ z?f(FAm~t9e4t@;kcEMsqJ2)iQTs!(ar_cc=g)N=T>KA75^dL|bbA+BtD!DOu6!i@t ztWH=G!zUn7ps-xV)XKA3)7>SIhU`04-yYm)o|5gdk=E>`wAGq<0WrH|5I?nVc(yAm z>b;qsLg_rn6Euo#zFy;z#W@(h!n2xj7`lI{FKk^^Fze(nr8zVvvQC+_Tb((nO@FES zmjp(=@GB>MDLmwIGMjrHroC%+K9l5q>Y7l)(8^>}syD6~)`={tb)Gw|cVu0X-!3MABsU%ljV@6hbecquc+#A0fR-TL{ zhEUyh8Ey36M!o?cvEy(n*i%ZS^`frMP7A}Qx*=9IWsGfXa>FK>RHw3z?oLaaM(KEy z1JeKwFh_sdorO%MvhS>xRfdcs3IYs);C82DQo&g%v7#GoiJiE`Ga97*g6vOJ`F;4P zsQ%Ao8v-*Q8%MQI3mZAukrl4z?T~1A%RJ?vy}q7uK3)%cBwzwl$a>#NSCkJ-W6c}m z&#-;k^d5t!quK*5SKAbIN&@Cj9WiWE8$cgwnx#E5KO_1*JuPZje@`PEWph$=EFD%K zmGGe2ppC}9Ic?ZS)vK(U3PR%~ao_1w)3duDjBtq}@N5IH@rqVaQuGxwRF~M#ARiSK zT7J)VXx7)tM;!ZS#S$=S=;M}sfv)dBayJ9Vo@uzJ`voVDLbcwY*kIM?8rjy< ziCtt<(==Ii2Ct_`4W;~%;Pws0X=?IURPt5Jja8axv-CfSn%V?em(~OPO2iN<);?+< zXhMD|OZ!WEMEJP|@GhsC&GG*L?gO{?tGc{}Hf=JN?-^u1i+@D;uMDdjM|T|RJCt#s z+O2BjDQz;E&LpDn%Tr1Ci)TD(>ddL1^Bi+de94vaqDlHJOAf8GoB``0{{XeKMUALd zRk5PmS+|pj=1@uPnqf@=aSTU)k;?=2qN!*fP>NoKP*3{Q{zP-ALL2rB3dmHB*gVk` z@#yrimkTFKnW8PC%Z%mfPlLT0s$_gLjP6;p4CQh14JUzD;w z_Ez`52(?QYSm~O8oM(idA;9~Ju6{DeOYwOuC*9idrw3L%x)&?VFW$EPcrn8+4QV_~~6H3`t zHY`hH)!B7>h^MXeCXJ}T_ZF(Dat3yedwhI3pc$29Ztq6?S;?!R&n@mCsWjO{-&z0>OLgW z?8Td}hj)sh(nl?vj4{Eb{x2a@!>qZ7n&3@)1!}zssosc|<~bzU+i@fcUObz)@@>WB zb#u5)W->%sx_aWm*&};ak7(oNIHkXn-dUIaNy7SUm*FJEyWE+?Kpok^7^@n+WIs|w zIznvAD15GYJc<;#59>hOP!j2*5Rg`R^p%#or&r_b=q(Rf==q))f11E0 zX21^Hb6-L6P~j@S8880;r^>vQK0~{147qfDF52KBx0*RrjDoHYAEj?7P=1+%^%B0@Ne2nn) zvN*_qeSS>TJ_Vef`C2gl0E5xUAsavT_pbaO;On`fOnn#f;o-`kr4lr+v<=$xqZvLP z+gzdF8n^u=aZ~;>e@B-hXpv{|($WLC+l3kYqq+U6OOF`+5SJoS_BFxLaHK&@APjIe zjwp(h&>xlLSn7U;jkG(4iapP_j0&#h@T$la`qDsc=M#o}AEcb@;U_ zyGZ1^+6a+}$j5Iq++vP=mMGy7HK}A-nPA!?RpEm9smbh=4o~=ptLnGce}})iJ8j&7 z>8{*;@!qdEDz@^YvgSQu45#d`67bp01;kSpm#_$MarLbYoOn9F)L-UGYwW)?J!)&N zpSBk;tY{Ey0AT*Ll$>zzN^9&bH0SW!jsg+DsX{-rBPFu3>RZT?2WcO02j8_?Lbm-K z(pxCae^ZU-A`%#bjMkHjOZzLWvOn~Se!EEI$YLvUi;RA?&ct$TR02#AKE}I-&Kp@U302+ifyG6# zQAag=Uc8-^;EniZAb@;vRh*gOVVXV!R&rBXOFVH5wh29etfwOlo9-^gyJkDovB(uo zV$pjXt>Z&YqZyb8-yVMTQDW=1JyVR{n9*vEU?}7UBigDgYdJ&lU$R^X{-)L>u<}I) zZDS}hLp8GrQ4!Z;c&e)xU7*WD_Me#TBTV)j)^g{WWGY7Z?Jw?iZ(2K$?7SjMG8U&B z<62rLgw_c{+Wc!NJkq32#4hwtlRnARNFq-dKBex zz9sn~o;Gj7oy)bnn!ko*jNFzP5?K*4!1L{jI!Pc;BA&6S%VTb{C9#_?f)#PaD}9c* zy47b0_s})w*55M@z@!+CVf6~KJ*oDc;zAJQ5A1i#XUOuO-|V-xJ8JTBr5n7 z$R|C8wjUd549JkpZc4+=opq<`GTO|$N}Oc*t%NOwk;*C} zrHmd}&jdPxiLu|2iuB_*9H5Zv8Em!mspCs{-V?WQ>}xs6t(H}|y$sP^v#<`?T=%Mv zhhbik_N{RQR)ECdoO6Rrd`J&%i?C{Iy9{zc_o;kX_JGQ3I1Q!CPj9+5+yKY|r5YTh zEa#sOss@>ADPYk^MDO?kV^{teuQ=w6jR#!k{1uW20LXl=2vk zG(Zk^=ljtjm?yG8eDHYiMrvTm00Y}K1KB3qKwRe)*B67$j5gL}0me=^$f>C06OeY= z$d?1Rz6CQFpc0-2YfU_%4d;qtDKDTdV-yzQ5N9BLsg#fzOC->VkID^qQ6hbn4gmmH zG}ewEjuBics9fOvtMmNUPq?H(zP&LFE)IN=K?L+G|=^e?u-7~~b z8@{K#8Zglo*&U~SqyjPbuJyn_KrKq}#5-jBf!>V;vJJmNWY;i|=0T-4(Xz~95Q9u|Tb5+($Oth{gjb{u}MxmnxNarGu{!Nh2Rz2~? zOY%Vm(X8|8!M@r-{wUiSrg;8in@sYaf7AuM4n3>Ui|e}Xh}n+&@lcM!P6(}+6Z(Qy zYH`7v7gX59MdZ zf4x}O$<|R*ZwgUL-mKmdr6!p;sYM!GYkr6=E$?8 zZM5rKIhAoP)9x5zi5n0XTSEoEQd>*f;ZGj*F5AvXbPGeQ!o+`2FVi`uRoOt@WcW2? zFNB;o(>3K|XS!f17OF#Me;;Z(v4e0;g`w9ZBZRdOd?#HqtO5Hn+HHlj`8;r5SrxXWW35_{|le{oe-c&aA77FBs0tNRu2J`(AKm$rMGRzKvI zBm2^l@f9XHA1`_<&0pZ%)7&(c`l*nRcKXq0pVFv#9ujTlEWV@8#Vk%DRoBA)uhYpe zTS0n9_+pa`e?yARa(o{(e`4%txc+yACy6`@7rIupV-fsri*;t>zo~9^kJMyUH24?P zzvfrJ^e&;~IMz$>v;P1h`d%r!D>^7|s2o;rnZTsbuNOEm&QZ!xu3g|RX8k6mT z&3x;f!lvBA2AhY}o&b|+@jS&g9izFY<8+eFMWnK0X=QC3t^$T(+l-&J7rf@u ze`2%5Q(^9?=u5tv>(%<*aZhLw3NcSuzfkPa*3JkJ+* z7H!37`c+)I?~2$~D~ScZ;N?a;8qZ@nSRG3sc!YQQgU3GB$3HO0p{O-4(DHcN7j=CS z-qWa({vEIm0c04@-lJqB-?GNJc8&--rnJzyh>4JoAW$Uao`XiD$ZxO1b8G0Bh<&`C z`JyQ{ws+&k#e>s&ZmoGO;DJjP!*;`c>8fQo%d|;Ka*DvYsdO%cbzwQTMG8MEfCXDV zUm|hp-hif?&H-1?Wn*);1_-Ob8RCSa9E>K~*adO~=^bWq%VxAI;C4nxwXwCdTWWTH6~f=Y~vn z!SkA?oMeY$(+yjcONit~-M8yVO*Wcg(A#5r^2$`G1L$g+>XcSOCLT9S4Y46`v~!6Am6i!H?69 zE8a$ys!7KHqxtEw#*R@XxDl#`ag&fMF&&ApT-Q)=>b#=5au5Mta5AsOJ&si!X=Mv}T?Wj&-? zI(^FAX%I?C#E1?^?N+L_9U~)hYHbsu5eATnhUMe}aa`z_1lY5w>WoW5KqKEh=_x0i z7IkSA{;wFgMFIOBRM6dT1+8zFgDc`vdSXjV-}=Wk~5#Et?VP(vW8OGV`y5Dmc%J< zPafu}Zl~yG7BAih5vU|q8CTrrzco`jFgfz#IYdcrgw}=2;2zXC)sLZfJpz=YOit#< zj8id&P!`jB4q0BcwYeOX`kYarUI;cWUi$a?iD+_8dBM&pm_cXX)o zBQ6IS7|k@e&pARfvew7TO+F~p61e*caxh3vQ(>s003HAo=hhBoQ0BXN#Nq->LDwXP_7vb!P` z=VaOxtizU!73GZ;mA0_%M~bwCvyPJ$aZlK8&#U##J%EbtMnTvUPeYMpe#ES%6848J zKjQAGZWLU{ynE*rX3tV@de21jq;D z(m;FXzwb@P?PZA1i#Yuj4xRBZWlVQO`-0h{E1obZDw-VZz9S>JV=|MTJQGEYz+Gcp z9eop^2+Qhr<+%RTf0Q4@GTU`@QiT4p07qijH9wUDb%aM#NBETj<%<6Rln?i>D;jyp z?t#cPw2{LJc=pW~?$=9#J;4SrOo4Hw zTgt3jG4pZT{WD8Sir(4^t&;RCY8?a9x{&_>)#*0VHZi@R8U5*7I8`#~mCm*NIE%}6 z{0_Z!X87aPg(L&t+OYmd{{Y6k9%L~YxWD_G4hQw$D~TlK1pff;igRB68amQHlE+xn zF5=1BvPC2<`;Ee|7XJYFx1CO1Hz_~zn*RXY`fn5e0Lk15EMH8Q`ZWIl_A32H_<#7T zWdww1ao*tLHkXRo{qSmv-{?>38h7z2CHias0E16Y{{WCbr*6}mkNU6uvM0&#*RJ&W zy&LY3)Sw{by1}@9gjEH<)4pn_nb9P_(7&(xm%-m3!uXZnT3Yo4R;{M4gR9!HxeoU? zw$dHo9!7D4p4p?tQ#;9VS5Y+inoLmyk1y4yg}bxS##-KEmfO>Wv7 zc%h2k=`tNsILRU{p-9dM=RLDlen$E(wmgbg<&VocN&f(a`YQM}+r@LL&sqFlTWx=q z{>mQaJ4ds7OK_n)N(CneVwZV;*tTov4`FR}WgB|YtdZyCaC}p@PP>1#;evVuYB#TG ztR$NVjGQ(p%4$|ukFYYH1MzD9ww5-Hs7DzUUoJb0_C?J!&fESN`i>bs9_m^p?dQ*H zak|-qzhOKlS503w^u7@{br=o4qZ%5_Bq03`Z~gsY#? z9?|wKfz^o5H zz(Q{|>6>m3mQPb>IcnWOt?Abz*VEn(dzHm}`;p`MG|B5YH+*|3zx!FbJz2Gl6aN5G z%%>P2o=2Lhl`?Vsk!c2^@PJpBG3kM1-e-)C#k*G{N<;BomIafpO81UoP}_zuJXD>3 zppH5W+v{;@dKvX*3eCw@Y#i58>V+pB(gEIeJXbndISQ)h-_8 z%DGZc7^_Y-QI_Ni>v}CRvD9p@ukHb2%vko@Tb>ngOCFJ(y7t~p)}1eK!~(64W5G3V z@g`PI_AtZKlL*41{JH0j)L)CKTRSo}>D@T7$fdq!9>STfC_;08L$$S}aezHCKDetW z2uLW0XKdrxQLuqEl3GpmBhG4DN3cj)jz&*^dgpJnd#fbJE3v^K4#I&s;T-7LM%{}5 z3C=sx&S;XZO=kf(85U2N;CLpd8LZ&%M}V*~G+5oi??iJa7&5x*T>{fk-Mk0jlbS}& zmsDmxj$G@l8FZOlpyveqziLKNN$k3W11B|GXBEHgEj#pvWH+0eZ7->Xh4s{NkswB5-!I;%XU4Kw(A;cNjz(L} zTE|Y4{{T%qcNrWMU~^S6;m&f$(8MK`kPN+3sol=-!vZ8kaOh5HnE3iDU7Oh2mH>8T zTIyWN%QPlw-mAH=B1`gm#Am6zqX1frMUFY9o}9?J}Z*ru0?s96;kUwBwIFJ zMI6?Vq*AtV`8?J#?lhps)*37xn$&Dk&S{Xph5BCPwj z9hLt89>puoMk{19NWwM$0232|QB&S>6;ml`BYmCRSC&!SLgGl9^0J)fm`zL2y_L!j z4I5`=^jx#!kKU!|+L`!Ki5r0xC(4Fg(!u%5&=xsLQU( zv#PZHM@+V8Z*5uxoeM@={6pzlo*xo$YEsa(oT}!UiOx51%9@<6-!IH~9jj+sT@op# z@EX%Eb}rB|{{U(P;4bDLGF(k(kWN2(N!OjDzbaZ}i#c46MZp8y9x5u9(`Qx5y@kC3 zu@e|1p4h1Tc=Sowm)Wi;uI?MsM0W9wro5ph4tGT_Wtq~QBQr>{O%WNvC71gOvZ9vW z3JymqE78!}A4-E9c!&h@bIn~wm4braNoCk{$Vk(*;|LpQ zF>9rn937-%``3Dr?~M#FXy9iNk~7?jpH}oi$T@GMC?j@4{X0`ouLxRGc@4p0iGT(@ z=&3~m?ATdKM;B0oUbH$LKRgj!_2DHYo1y z`GyC_f<^@s86(*slo|!(vI98?r@m;4xw0fhX>2aF=D2fXX20Q4=fQ*wc~E(F_m{&zKNE9MN`pMHxeL6l|w( z1IB1=WrkV|MXIVs0XSdtR2^;PJY=#?T~P{rO_?F_-90RaY-#uAlL4{uxzfC5Cz2-Gwy^*rVb>mJXHidfRe|F2qcI*wfMEENoJI zHj5WZ_?;Z9y)X0s0N1-TZt3h&Tz0;Pdmo7sF$%eL?g(sVr}AUi2T1Rv{6i94Bu#UP zSm9O3{^p9T{V{n|%L2!*2E|sEHa)m%GOz=zZMN%Jh(P%V{+7)dPaqv*1-DdNOgNdo z{?#t%k46=XU4_6Rar@U))B8Elm^FslO3E02mvt4{tr6+4owl}GAY9;%Fb@^T+a~fw z!vO@=!5rWW@l1S#97*wOKhxxe&yiDBFF^W|qSP&)fWV)vPqOq!4HFW3IT44c^N!?l zE6Q*=`5CRPyz9#-9_{A6B&2&S8sABcm-=X|K7>?0G)ub&OQA$TSBu{Tg$7hYYYk{L zZIoV^t9{W{mp1{~6@eIKZ_3|sRkrxr=Dj944rP&k#Vu3d{{Tp8mNG@Cbk(HmEM_@2 zLjPHId1q{^>W{s$u|Dbae?@*JO)FD(*K2ieH`u_m+8fyOl{Eu!iWhwsvqig>Fa+m5q;A`SRhkl>bT0Qvtmy zFaH4ecQ=m~;WaP(f9_pX{eR=F)wRk$=+plI*hRel6#g!0y*lwfO@A@FPRCEwB6Mzi z2HM@Kn*RXle=S^oNJUHhC%^ocRexD{OCMKbivIv9{{Z~SBc=K~;&(-zx1AHM>2v=8 z{9nN{s}EvVBE7_?oyC16OrqD`9tv+I%<;U(+PkAK_x}Lgxb$wZ>U()3Te}I-my8(M zPxq}Ye4C>2BNulbhO-u2x-V7Ux+Ae=Zy?q6H#h8{wxqol9iLQAN}t34G3S9+F`E&T zP}gbIa;qp4M#T8vM^-hk60HoD-CX;C+6np`=9-1cJh6FHFq%FJhw%W{c z{6wtuXn4M1)bo>>wf_L&ud8flX*AUh6B2fia0l&JzEAYz>|gTzn_e&VB~kwJnAScF z{6V&P66Z;lNXO-61m>t`{XfmAddaZk{{T_&C;iU?EziTgtJ2Gvw0nrucOgltyF7m` zKlC!$;=x}EMnkf4r*?AM^si#k-~A4kUq4etx?!z7R_^9Luxn3;c?$5HA{Ch zr?y#B#da}z`>cNl1|TJg2LO1gC*)Ur`!zIpxyfS!9q(N0e~Jwh?210TnxFISZ!ytf z9}7?YTQ zf;l)84n#X5RXn^B^|>1J(|Fqwfx#w+$NU@5p{}t{CaphQy3wvyK_f#r96HfuPssBD z^<_>to6udZ?sfe^rB& z=Rb{&BT{5$#(aLYNp7Q`(9U)>=^Zf8^?Ti2N|M`3GGfQ&CaZ7d_o-JEhxmp>4^gi^DSxUErFJf|7EgNayWX?%Lwj(@M_00YeKzH3ska$QnLIV%xv+KpOoUd z8BNymkFJtmQ?>l4*IMI5OLL2C+a zL|()1S{PX5@FN~Hc=h8sXE)zj&n48SAcAr+R?v7V=Vl+X3oR;hGM&YF?t4_FCoNz~ zR^YI--40o#jCUSSe9<9RSe);{V(I-M3q%W`B=N#iKMMT`%abHIY5fASqJ@cx&*mq+ zNBG%(h<`n=W6qiI-xmtKo0a}foV3$DC$oGkwsneq70WBGalIb(W0dG!L}K; zu`a;v;+n%^?pPRYbf5~Ina`3assLPuJ6$D;g(;l-(bNG+hwXIu;*4$s>;)gD1>Bx= z6^&v&?x`bT>| zu!X(pZMCC%`Uc`bl&}C}^{FcXI5IP_Uhl`&n2hkj zxUw0PI~7xrsxJJ(@jfq(VZzTgDG>(u#=ZCg}Bh`(hdynOJ>r zYHm*lFqnGJueFOw6#DFNJe=l?u93%FAGA4X-xjWsc3c8+*n!OvU;703^^aOt#tU81 zkHwfI&uz#505nx^=w4iSmd2Oyo;DGOyoThFjk73k@7#U!M^`oMPFz(Y#M3@1=~7L; z?$T6@kN*I{z2`prToL+aiwk4+EiNlVt+&KppPke2TI|sV{{RM|Y7me9q$Gb~MpnVR zCM)nwdqW+!T83?~+*;j%$!Kl?seGHjK9~<$b)M0+_r~4wdsh_pLBL^;tfP`3e;O3~ z0y9Qd0_aOlqMlQjFE+P@bq5vSkmpoPi>bAEqyduF<{bRTc}BrVXie3C4Ek930nMi#djgp>+8iV7y@WB!>M(ai08* z^68d-kucuHF$40l6lw}?Piq9S&^|30?nC+z8B}))ITaa3DQ%KcWNA8dE9P4{27k>N z{{Y2BS6sD|&TRu^(5%2JvF-W;+Pf+u(IsQ{2)gL~Hs&T-t)rPwaU^Qr>M0k&t2t{U zE0JpS#aq9IIux$VnrsT+^d{0jYFb2M>!10s*Sq~Jm@$p`U zqt2FgE8l!DxJ6@YBM zSA}+5qZ3yZ@^ZGy$?@c#kXUPu(fCT$;Kvjminff+%irTfx-{ zeKHf>>GLo3ZP4U$3IkH>T(;3QD-zQJUfF0DkuptZ1B2WZ6gw!QaoP(DZi~)DO-rD9 zM)&e5@AunPz=ff>V z+1@e;P-WR?*n)0o$qDzxo08i6*5UUAo-XorO4oyp| zNcYH}qCfIR2u^-q*oyB~$o4WCJA}fi`{OiK6P=b#>!gx^`gs2UdYhBR5iZElbEL{5 z`BdPJDxZ@n#yLfWJ!K?{(_OZ_{8OL>LY!k9ee33&u5{&dgVH{iz~IBY%H;R@)zveT*sZljD`&Qm zt*xi@#tHVWStn$+EnRB2n5-TLnrn@UjkxiWE7*)ySmMl{mcthPH7xeVd64Wr{%JY$ zqX*U`p~cI~B}da1u%=!v{uY4w_DSiU{tOcId;b6niO=-lDtr<#UjBbyY&zhzmRSsU_>!lM|t%P6^pn2B6!ohPa38sf_e8_OvN zaKAA36>Q}Xg?4)yh1nxri7hmlo=`-4dGJ7^)|*FVD92?Zt3)p~IRdt0W56c0JZ9^H z{gii3GPC?2X&P}$lNnsUaf)usCiI!;#xLl6wi8*YTd7nWWpm!DXBV8Z!8cmNAm8fq zLZrgLf!vNNDz4Ait&KI1M14_&B4$!Yka15!iTwyWV;8a{nuV^S#4Nxu@3_^KH8r*= z$mB(=WCgd=yOKZ8lffOT#Vlyg&UqQMn>CryO71!AaYR++iOP6I!=h+Wh}HWHbM&hi zM+mN*+bu04NRKO=VEHDPU2~7INy(OWnWn)UC`yCJnmi)DirLAI5F}AXp;rSGd@N{N zB)?Q9G1|PA7qD%cl45p(Iq}UAN=OsIC0~Q@n)1mOOMso==a0QuK}D^BlNsz*Bec5% z>DJnjArFZxtA$mp95!A9Qp`?2rX*Rt2q>?Rw7sG1nU3w2O^sjB6VpiU^A z7gH%<8wx!0ifvl3(7T4s>(sV|h<(fTCyJ7_BflGF67>`ye@t`ts6I|k{6sg`t_URn z0Qm>C0o#>^5mtyYYL^a4G7;_XK8u4Z-lrElK4tZ463^SHSkhqYNz zRFlgSoc@KGwRVuY?g4uoRl0-y3%O((bq3r*lE1ALRh6O*n#B8q921_{G&cmaM=g+? zNhF(!l0AiasHNzVjF~DMS(c_(zMWz;!(|P^|q6q;P^f$Hmq#)5^U1(W;3;NJ@Hg`O~vV! z5UVTE7DzE3c_-Txzs~(3kK?I(1KnYAq~O%!$a&craiV~8PW%GjDDh81;Y%q7G}|2T zK{aPx$>^%GqgUeBXvrXZRg7#*MZ*UF096R>l6{3XrJ#LZ+3;{OrGLFkwm`^^!9YB6 zd)Kmavm+K=ozLk~`#k0QG!`M4qi{!I-nyCI#v<^xZvY;1|E9bWSe`CcGHsD%ZbU#@9U$l_t@u1}7lHAn(R`db!_Bm<) z025%B=8p5yByqXB(V;i?3S4oz%iVM5p-$$r+M>+-VdW>$ztQ?~p60lR*vxLC@pigV{2kJhL1XW9nfgI3*HI*`o8f{zlObM);~ajr{ficNZ9 z2)d%)SN{OkLb53z;*C%KC~h%Yj#2Kc-j{j|vHGk=N&f(olBb{TUd+8Cn36N}G}*%# z+2T-m0oA_sHQW72y%({ zC;5C~kNA}^X?gHyZ#WoSt5WtxZi&-W<~UVHjE-n;gG%}&xtD&(GxScGBj!s;WIp=< zKfMZE8oK%jxt8ZS7cRaUX!2@C@;K&#b04SjT(;f0&kLMqK5?3?pNXZ<dXDQg$PXroEGFy450JBmiU1YEZe6 zl{p*iI_plI!buXgd=;nTVrya(sz^F@-2&zvve==|x(aDHOWGIdCH5or9-Gs;j2MpH z0}yT1P9W8DAO46oSNVmCC2GNhFCb2$C!_~9ca^e-iFy$) zI(kUUZH!~a4>j}axO~ba^Bkk;oNpz@wIrUzy-v}fiT7bf4hg8!Jj(^blwQ*+>&rRr zFWGyD&YdaN}CNjkcP~4(J-$iq)Wb_ak;C zxfNf`;`WwOB?;ksBI{birN9>Qm5}+(6N|=9Ka$ZKZG^fklOFfbP)VDc{`4ah%QoM@hN zg0gh9@XZg@Z*zB<=Q7B940fg?8Oi>|PvYSRt-`oayylrzw8ZCPF1;cb{5V3n1oB9x6dDngizS7o zKB)QZtHWNhO4Yr1HiqI4*8xg#-_=$N_-jr`CAwfD&l6 zbgqiEZ8B+ZW0p^s`e8;n#U3@RWr)u0;T8K@%NC_90v9Z-KwNWB=(`i|p@Pps)$W4& zR&1FZ7Z?=WX_wFmTCzDArJ5Ax$4*r>LdEE%N3IQQ>DZ&)Ul$sVZLj^5a= zV;^LZiMUK3dhc(exFa>*56ggS%2-$=mQT;tkynoY0BZckvVMiZ3Tb{*jAQRcjB?1m z3R<1olFPem1B_?2SyuoulIxKxP`z^x$m4^Io@wa8F*(Rey>~1~B}cfcTB5xO$!B20 zZ#iJt+zmUOY5E0+l5`qmgs3ZpJdsLD^t}u!n+->$fe~D7#VamCPc4ip88vj&NWoRl z*A+jNV>t+_$tE2 z!CT0JQ6XR#01W5AHKc{OTQhTtlhHamQMGV#Pl76+nagIvo zQ^OFPG)EzVa(VHZem7&#gsR!7To9ygApZbru&(4UD%qL3VnNT#@1N~XDW)YjGikUS z9O0`!m46)ghKQ$w%IwUmC8Sga$Rv*^I8Di^@d z+PK?2mP6RBE3jPi-xbKLyc5erSuz~(Mh-spClXznF!f|r+>$cn^UZZcgPSBrs$W4E z^yVW6gSgbXpl#$gYu4KJuwPE?m=E)0)Z%quYSaEK>o7D%L}Re`2b$~u00i~+JXm~f zky~W5NQzE>G0)b$7ms9IApIfpPWaOZWZkH^$mLuP1u>i;Zm1S5pT&sY-Z>e@7-SYx zwTIGx?2`6D(;uP3PWZ6{5E|ni*dU7RZD3_aM>}7M*3POLaJl*%f2|%jC+HjE%N~Q) zzY!6LXs)6p_9jpEJ*djjXGDhJl+Pm{6@JHd$*=_Lwb_HqPCLQv; zQNC5_Fb<|P*>&QTKqrb&JDvD7INAnP40hdj3y_%!_1(oE<;vJ6Sj}tI5jNf-hnSl4^rmg)R=)S`6 z^-b1F`sl#_0GI<)`7%Y;f^cIKPu-Se)TTV zUWq8+$u$@XkLg^hx|htb-?o`WoYL`Xaj@Txs!7r^h->1Z>y=WE+9{iW81W zXAIW8J*YHUju{y-ka3)fT2&~#_6V$Bq6*l`8N`ZIj~L`vl~VgV*&3(QOJo7NBb=>r zRJ4{4DTCzFqHA-y5yx@`L!-_yqFukpG4v}rScZXEdzJ4&l@XWsAhEV_^uSlW4W-VF zn^ouhqZA47YkR=VIhLpFR=oIOXEGK=WKr8AG@QI_CFpKGLTT(*y!cUg5Sv@pQ|wgn zNz2DLye2gtBNzS147~-_wo?f$uSN$yGUxkLKZ|vKi7r(WM%RO`Y*UoCxmEX4D4lJI z4%Nx&fb|_`s3M1cp``3l-H>rya+kIiF^lxY_3AW`km14XMtf9LzhQnn8fLw6H$gE> z_|JOt-=ax0wk}=^r&eIuKT2LuSqPZFbNI7vP?F2!Vw02{La7SZI(5UjF{uaJ6bBj0 z=wdTVKv^^k+1b@?-J3nt4;2Sg#^H2P3QmLSDK@pOn>hafsN*z+oNJrXEUM;FAMRki zN2EG~PPQ+5rA-uP{7SpO(x~}7J5+ZP`;E?}yhcS~tn|c}bDSZ^klYdb)(4ruxlg@I zXV5r4QW1|^7@t2!PJQrf(5T}^P1m=#pRHe1DOKT=Z-%#|{7-CsijB|>LojL5@ z319_#qR+YH0B`>Q8lMKND&<4aCme(S0F=P-G;_ja-N!srKggPSivr=0E}_u2@@Z2D z8zqKS9B@BcexEHk*t-hb#f_1{OI&Gp7MkPQ2_7sQVAk#&h*?seGE>g0D~DLIuSL>t zH)Y9mJ)0FW`{n92cL+Z@@SWou| zX}Iz2e$y(Y$f-Z>K?`1v)}fFp+fBG1{{V(fN$}fWluk#St9gvWP-uNaXc&kkDdkLN zmX`swj4{RK9KFd9ua2!1yoGHhj%;8tQ$vT2YFhLbUQ!A_SrBB>`i^_1mf~sMPjktu zIB=l9=_}unpS+S2r!R&Bda^Md6!T3kJavRAE_B{=B1OMV>Jk$d;bwgQ0R19stB?6* zAt`e8jD+Io9bRTKCYvk!5QHDFt7@p0Jr(oiL+ys`J|63nL_hs5X9KV)kZIWQr1X%h zW6egBca&#h=i$`B6tvSbQvdUY@hU!6apH9b9LRaaS?H<{pwNT%iAXT8Yf%y zKB$PO`kF#Vm5(&q;>tf@WqM(R>1T@E3yn?WU^!*uH8o#QZf5v2>nlOb?=c*W&CPK| zC+z2D*P>fq#*2g*1NWnUZqe*ELw#881LYro6%OgVlIjkdS8=$RLXP}Va=yXf87{b? zn5>(d$OknSHG*m&`E|J%;d0sc;}j2*0lE-dQk}sYvFvf$qbnK35+hv7&$*cA+PKLh zS$2@&o0^1|U6aX>kSd?2V?u97kB!g`jxp^-k5}yO&p#9oW5-i)o$0m!mmg4-vpCoFAoH z%a-<9z2Mk60MOW zw<{xLcJ>r#+J)USK0K>p+xp z$s|Q^NIk(kj8S5eBxx#GV+5RYkyCj3J@jZ~AmN5RfuZCKvx5*h%K#6!98{A8lV-O; zw*YtMh?*pmJy1U{13rDKe~VcsmW&KwOinU=#Ygcy+XtjD=W$X!k2O3VQpzO_Pf|!y zG`^fhpOrmBii=t~*%P4Zy?)dvOU7j%;c=RdHgmASXYnswg~Gnq1OB2j{phLV=pvIF zY<@4ulL2#YELiT!`?Eu2yA9SK7$6dlPgO9F2_{8BDE`iVKcV|c_|Z5jvFa%K##l-i zk^0ec{{Uc|ApWpewqF`itbHq(EbhKg12i~c^~fWd=46PfApJ4JOZd0b{)8gp#(3Lz z^(D8zTmk<8YYz31%g!lR4EB?Gxm9k#JI=?}iPP~c8%P9xk zb4HEP`vmJ_0(Fh4LGx}TcsQb~QrItzlVj?OSHbnwIPJJ*yzR@$&WtY(xo+e-T&{cY z*r}=LhgKGgRqylf&yr}}i1lFzwKf>}i2ne#x}~x%AviVZ;UCkxmM?9x5mN7!`2*@p zx9S^!?p9-#?~#&fYI!5kAd>YY%trNwL;nC$4r)q7dK-qfXCy%<(_w$}6=DgmHks8K zeKITE>9S6JI9>pIDzG3|GZU#adA`}9AV@Ku2^`nDuD;IYn5-yI5{C!;IjHqW?oHl= zWb&(z7^!vroXH&8Abq<-4<{84i0(}i>GslRbVyIV4phQOnw*e2<3Y5McD=e4J_3W9 z8{@(K6IRWAi&x(c`f~Rku9pEjiQTscpQxa|BqW1Jm27=6Li^zkk1MyLl3S?!yI(l{ z>3711(Awuu?_$m0!RY|ao$Ke>#%X86m(vQltL+O{Uko~q0(}OCU_V1k%Zq9bxpgoN z&qei3v*q-(lO9xz(yE&x!^e?SwUQ#~+Woc_^nieNXU0EqUgAeY_4m%Nj+UJnls@%4KGHGfxwhS1%rU80NEY0uPsa;Zaj@Wf7Bi_$o2UaMpJjxdVfvob~=AZSzHU?qt!O- z4YMf+ba*%ijC1a2{AbRlxx!p$`F-_z5w^|+_d;^yVMpse{{Yk-HjmVL=7kNd$4I55 zyTi?U94FLoAE5sL#Unm9HOKL#{{XHB;m`5)*_Co@^^s0Kjk>qi*)J_8x3=VZg>qDn zI34Pi&R0*u%|G&s*m5edW)e(-+BLws-EU-O&j)&9h5VRx#HE1Far*^oJufo{xVW}^ zUWqZ^k0NXGVVHUwM6r-b_;?w+0zj)6@aj)!LR_0= ztdnHvew+~rp5ENa1PpIu zdM@o5CDX0k`-B|SzlX za^lfb>bT;)FBwBeKcC58X2keK(XoC&ApmiJIig3!@zTm$1o_;C{hP-?=+?27j_MN- z@MESI7MQO?x;3$V zzKycRKD1b+`Xbv2#bs#j43VURJ+YBp>mN-Ja$^mob}JXAmQak2PS9zU7$6et$k$yz zq21)mWg0Q=(eP?At`BVk?Ir1hr0Bg7)R?a(wPV;47z*mH34123o6p;XtoI>)W|BY&?_HJ<`BvILy%AZ0eKIem`4-_TEtA2(Al zQdLM}&I?pNSMBVd!k9L0qPaZdll7>%c6q@sj|4~7E}ww=e2^>7PX{`qL*7XFZ%~j& zBX<h$QOP{uT(Nx-7A=Mvx!#^k|j`*%Q5=h(&lq{%8KGhD}CxhHR?${nd zsVt%o2ip%Ek^0e7`b_4Ht7_~sxRKk6gtwwuHXS-vhzt-u^#vR=osEm5$shzC-u1?N zvNy+}&m^RAk73@ppqt6=$eg_^6RMd@2KrG_!p<^9$SG;lcB;b>20r9wi5M@iZg@X4 zT#%W^A4>eqnRUi=ewzBw8tWw+CnCC~`W2SFu~PmW$MWwVN@_B3^ev2#;Imi%01rQI z)XK5@JfoBpg2((PIPh^nozLhbYgi1$W{ZHsk&bCeSl-xFuuMookUOdHMFX>MOfpOC z`Jzvoa{S&gQtaC&h4e-tN7L^|i)4L!H8D&Roc^?IXd6q}pw6+3pPSrQ63aUr;L#=G z>;Z5-^hBCG+GvcIDr7wJPaM=+Yzs+jo@G%8=R9WuhSZzUH2#?uSuzGV8Q@V=UO`G| z6LhLkv+{d`O(mdBf!f_4ARLVGfm7{<39S1gOJJdJI47LrwF*)=qoO0*pxSvp`SV;- zZ_yb=AWhw{W+VVVwKoYdNkt0!ggatl08{nvS2bi(O9GVO2}#G_CajZUlJ-F$k%CG4 z3Sm3|aZHNkmQ3M?)KS%vUYM-wi}pd9{6vg*HV0ruTvKG4%POs@5Tn7G$xNajf}4nB=tXIg03a1$dZ>^QD{5HMgL+YF;J{zjWGi=K>Xk_(G$c?2-2D4?G+#s_^j z<7JXM?bZD$hhZQo{l#;p9*!wOUdvBL{vdTYZIx~MhGL_Qsd`<0#4*JYHj(EF<@7z- z{C1jmPsXLK>iB7GRAcLv#RbWy>=(gafB72W_`juGY|KIcdo)t81N1q?Pvk&9i~0^* zd`Yr)Qn$|-@AHt^uYAb>d}fC|JK`Oypxb#9XPh&U{xc@~i-LG%?%tU86FwZuKQ*$T%?M zI{l=W#JF#7dODs~NOcN9s>DGaus^MJOAL#PC9UGNHn`8ktyw(pGZHdlL?b@Q3=<%)X;ozKmf#SU4n%Ufu zUfS8*?oe^`p!AM3ce5kQrP|7$@>I~>Y5fvXXcsR`X}1lDZ6ZGF>53DoFX$q&OVa?} zd^qXbwPN~Q41fOsQ09jCwLP>NJgcMWi#J~e`etqpn25jh0tE~BROd)z`PbuY0eSFC zM@TbnrXl33Fh9O&Ir!M+w8tUj=DnZ?{{RRsp=LI>sW9-fp*a0P29f^&hRH9*kH^YJ zU)->3PJ-6$WGZy4Yk)t*k~jOBkMQhEEd+e}pV_fA9ct8Zq?A$IpvbPOWWB_P@?iZ) zl^xEfZP`ge;r;WEN;l5hrknWTQ4irRDk0Pa9Ge__RYll?K`c@g|;>i+=7 zhG_HtSC6G*Yy9j_PlehOUGKG6kmrw827h`DU(uW>yr-Y_3xD-LKFDFQs>h&iY~W|I zxU+Weu^VYWxUJU{#?{4#TGBCB^5=Zpn`Fj=S+E4%THgd1`R&j;{@~T*VI;OzN>OhJ z*&Y3yvW2+5xsAWeHc*`N%e5_+=A5Lm%XYAu9Lt|$X zjiFlyKR-1*A`P(2V#m`Sv=K@@nMNvjNQS}p8c$A2tisdLe+C(LoCD#{L<@a2wDnDoRbfAZ^8a3_nTrvf7y< zxUrqFpG-Lo`euzN+x7vjfRx4 zO&jtRh*6JfGY4=MQ z?5?^00D22^hN6l7686IyefF^JwtFXm5BQskoF^#)l1tG#cbXXFX&IU!%K~^>XXSAJ z0CSxbg{eQ0Tshk745PoNHV^D-IfS?9E*x}tG^nOR*7}Pu@CZ^raBH9F$);$NPiUkc z`sBdx^5UV|UuT;{c1uQT{~DO-*MR1oQNbk^cZJbx^ZSHh;8&=b5_yAFyX1;+Yf(fKv%2XIiih_%5>yk*CoiA}A z20%yH;+R#xK%I*umFZ+t{YE(RpB3d#QV!Bu=nzF7V^(Z^c%mx)$oz!pw0K3n@VIXv z)YWSlBJ5_tr=pO@fGRG&+9Tg)_~U{wM$wv=#*;nSm^_i^xK;O}sHL`hY}D7WK%;8{ z-%8`h(adE0s&+dM7!~uuR*WANLewlUo;idjni21RS9A%@RA&>|x}M9>i}L z_cY>y>UvVc3PmJ-m>`UOX-UTtI-X69c@n9~0R1Q`r#&E^ks4iIAsGtb9~H+;p)53W zx@0ESSJeF3J_({mw$8aV?1giy=00Q_eBjlEbg3?e!nm5IOF4RJ} z*FcR_u-!~oOqe-c74`|AT*4E-2Oj(yH}RzX3;gj*X1i^7GKLalXO#niT>c#2(HF=; z!K{wrKo>mmLv(feC-U}WmDIzwH*t)N(A9W)C*MY!i|mHvHhfV&HgmR2A-YYtJ@dvn zs7f74Cz5M6=!ehGk7`bEdB{%KK)aK(Cx_$3c`Q7ElgI+`zoOm_DX0p_QoY>pl_zOF z)pbmx)#dC$c@^c2gPf@YJRDVwUQnCKq{3GR%`uhej@b_8BCry1&pGy@M;QkpFHmAj zsNL<)nzgOqLda-KxLG2Uwn!(%Sw)DrCT_L9nkjNO435;ondMN;X{{K*S3Dnn;-}n< zs~Ka~<7kyP0DJRNPeO8oK}hbFR2+ssekxf5v`7pym295G4>jhsv!>%1Qb-x&oYa~< zgAk=pDn6CW0(m|taocDfYmY=)G`T8C{JHk+Q`r`gt2t0kGhNGMkFasyx3zgE?CI!6 zV}YF1*JKH_c)ZF6-KXd(YuUzZRRTvC{i=Au!_QB10LngwfYurBXN-q%Tmkm3dStVs z#*Iz@BXIFXSR;&@S`q==1}olSAm-5h-IcjdoqJfd#U%ub z7f$%kYcSr^9jE+{kUwtq=bx~D8fbgdJ}p|xxLeT^9|U%&c6kKo$m3`6Iyc$>0IV(c zqPfX>1Muu}vG|Z!s1t5qtI?H`#zDG<+YgAb02SoH#xfqK8*%~E@-y1?{0C_KSqbpO}65uQ?`lCU0F)GrOHrky-mxg$Gi;Z zk9zK;_D2mHmrz2%N!wDEK93~H4SgFZT#O2el0Ab_ni&w~g?YHNdkpzj4E&fMVO&Wf zTQX#~z~m3TMdC{bHflE3+c#`M?rYr<+_O{J+Q<%32=T>F5k1;Si6)U`?aWF?oTxM> z2>QT9WY^gOewxyzz&237-32W8^vm2(b;-GUlLODtIt=ocYc*Cs=#`SC?_){2}RZ{}u7uS)CqC8S38#~A+AHO03&K>q-hQ!sv-*Hu zf6cWL>*{HDBkCf@`cY%uZJ-UuKFL4NFZOI(3Gt5NGn!}Qo;C@nM=>ASv|jZjudrJ%IsX6<#d<1o zdBM!Zdt`)Orf1q>L~j`xsbX#AkjxKXP3kGs#`g%HLmp_VyCiwpTy%&dqpvPyV{v$= z9sWVyhUj_QIPO`|y5FH=Nj_=Y>$bZdK1n`6QF1So96sFWER*+Myd^KnILb`a>Exr7yEy z%Xr+6Oey!NB)v9y$jC_wrW9Zbb{O-j@N6n?>RLzm!sPwwdw~r zIM1Bdn~FMOhxO0sc}*&p4@M>WDsFR048ve)Y`cB8WO&S$V^8 z_naP!D?VLK)E>9d<-=5R!9~il0m)sWFBPX5rx*n|SX?*%+^5G4>dTTEPpr z1^e?r_+PP<*&u6j32~gCsm>}cwvO$Dt#vKWmT&?0IHlzV5lIH4z6`nCSor3XoLVHL zNH-{9!+g*5G`SW4zPTh22PD%F$O-xYPB#O`KT2gbg(N~-Qq7lcF~I_?A!b&E+)Yzi zfgVEV&OoMAo=$Z@E5%@^E1%QFI|q~nz(&-RZ)|6u7^@h_1gprUDlE|G)WQ2yyF3a?AxnKqWNq8Z zgU%>@v+N73W3$!6GP5}Lz@n*Si>V=zFV&$0usIy_O(A(K8$EFFsaE87KJ-kWSb05m zV-Vg>e*DyZoX*b^b^_oj`uVPV27R%HSgw7sTs+>4_U|KVkGGnd$|Km?s&<2qlzY+F zpnlo$QX4q|v7Np1T}PRqD;Ga5-1pmF_D@|;aLU}C+>uagBu(3QE^(X=Y7K1hhzr0A z&(u`Y&!%ws;{{Id-n;Zfj8OLczf5zie9+mZCfYFlWU%4L16L6E@!9OvZ}Ddc*+Aw|GYdC2cz82cGu`0=k;?EFQ)1oC5_zv*1c z^vNiW8dvc=kc0S$E>mxB>2Cw}p~*!&rXD5}#^TYN%}L4$C(`{IhNAnSi&n0odH3O!-l%Vwat9lnozWUPHl1WLi1U-n~_Ck(cE6`KmuEJ&9VcFE2 zd*Y;<`aRUg`TWZ+HwFW@J*r)#OR6SEuRG&;&(v2tVQk}pyZP*y*k3FC>%Fpbq4)E( zKOy6v2EEyy=tx~=*i9k z`{ugZ_Isl<8j>^qVb5S2HO|@D-loOAT#cv4H9urAgJ$xIk zmq-sBA9G&G19+Vnb|3k!o;ECt$87soe$N}kk>ijksVB3ZjKjyXJ4f1t(wC#AKBBXL z6l2@;MaV3}gG5kHg?D}dlIl!r? z#huGFm@Q8Vst$d-)Lc^k04H+DlG@vD4ACZj)F%a;l2T?V1RH||Q^#yqoFaED^ow$F zum;btsdU1|4mQni6|u_&UEcVpILA9ZmT5>}49su=?gtV0Dh)ylvn82h2F8{V8392! z;<}|4d1QtRVe^rXY9TIBTB1!>eswI;_TF)V zYvD0VEd3P^KzZksuF~fRH22WFwXtUUX;s?}Mmtk6OBodxrjk!mQ@G?~6ng&vxK?0y zmPfd9&Pn6_D#|HfLT%{4vwBbS9y?T8OcZ3>JyKalPI#`bK_uQyP2H&e*2NonAWib1 z#~JVY(PEP(o6t6J0m$+{^H$YHE*S_za#)bZBNQ1Wf_{j&4G1mHJ}?GCN|J?BJ7*h!N*IBl&pmMN*U7B(^E)41cIIz#LVTet^GXP5TnS6OmRC^bL!* z00~A1am^AhWLhyOxg#DkPCyjC$j%1t-YMvn))ANiF93F-w%D=h;G9%jJ%fB)LA-GM zawzcha%p5KXEeDV)NkIIUWDi9KWi+7z$|f^6lX5@$gGmaL(vlOjmJH^)6w<;nXmly z9x+BqWaA|T20W49y$(xcAEQ|LWsI)`ft*xOBuQWlBRum=M3ObI0If~>BK@8a6au3M zKkY;NB)_!DfXjU|Q<6N-i6Y+~C=84AX)wik{ z@ZZ#7k@^}&$;&>=%4n)_U6I(I4*m=LGS(utZBM0Qye-Rmmvi9%0R8nR6w@ksKk}y3 zbat;te+>Ts0rn)1@XJV*#xP|PKmP#q#;&;hS|pQ{bN=kfa(TR{=}RB%zxFy0M*bgu z3R$ZQZ-!b7V;*dQ{{ULE{wEtB+Jt|b%l`oV*yj(y?}d;q=)NE5NPWhgAO0#);_=eL zf&%%Rxjoqb0Padph2IVYMStLZ7i%05{JKB+oOpJ^YSC{{XH30Ns(K_)YN1 z?ZdZ0=w*)t{{SwGf3-pJc+=FNvHpQ$%jGSrAN|+^Q1~hEo@h6}Kxo^Km9z`~l)v$~ z>Ge@q3i-UZzmfj{+^ag5;Ge>jw77WsA5MvaWEj<#2R}nq+>Rd^VJL^IpUZMfyE&7s z{vC8?lQfT~Xsc+$I5FJI$NvD|S$n9esQwH804&whb(Uet{{Z0}-KkyO>H4Ix+1*VF zDEUXK#~-<+ROGaoYU_iJS_)}BL9EFP0rd$SFgeaS$LUU0IW_D;>foEg9c=ZTQ_x5J zY`cl?nsQB|rb#9@TI$-1TZT7oPk$B6w!z^Hwwi_R)qljk?BhA3rpPoLO+xcI{6m6A zisoKOG>~&oytB}IRDcII|D9QLkdp27*G<<`P|cFh_s;Dbc(#@%F(S+R;MOR6R4&2KJ)0qZsi zptjD1+Tw0MsC!qtJmB^Wg!38BWG1|iVG|NbGEVcyZfKuGS~3#I^A%JjQ353N9s3`Ejz&hyBx zWs||=uEr(#jY4hU>ITI;sz?q%-9uVB{gR}S!YK@LPc=5)2$80iK+A?B?OZ1mW9v!j zkDSo+vVTNL<&)J>yyF6*dkY4ST3yHIG=;~Soypk;72P2<)45Y~-EYdk<%Ni4JAtUS$bt9`T p7>;YIPiSEz2A){~Cwa{+DNCqSwm_CyHWu7-p7mKK+=F2s|JgZZVVnQ} literal 0 HcmV?d00001 From f827c342a499f19015ef5203490284a163743476 Mon Sep 17 00:00:00 2001 From: Francesco Venneri Date: Wed, 1 Jul 2020 09:51:06 +0200 Subject: [PATCH 10/31] [RECIPE-PROJECT] Little refactoring --- recipe-hooks-project/src/AppPage.test.js | 32 +++++++-------- recipe-hooks-project/src/Register.test.js | 47 +++++++++++++++-------- 2 files changed, 47 insertions(+), 32 deletions(-) diff --git a/recipe-hooks-project/src/AppPage.test.js b/recipe-hooks-project/src/AppPage.test.js index d0130354..8530d920 100644 --- a/recipe-hooks-project/src/AppPage.test.js +++ b/recipe-hooks-project/src/AppPage.test.js @@ -5,15 +5,13 @@ import {AuthContext, AuthenticationProvider} from "./contexts/AuthenticationProv import axios from "axios"; import AppPage from "./AppPage"; import Login from "./Login"; +import {BrowserRouter} from "react-router-dom"; jest.mock("axios"); test("when not authenticated, renders login", () => { - const {container} = render( - - - - ); + const {container} = renderAppPageWithoutAuthentication(); + expect(container.querySelector("h3")).toHaveTextContent("Login"); }); @@ -28,11 +26,7 @@ test("when authenticated, do not render login", () => { }); test("when not authenticated, an user can login", async () => { - const {container, getByText} = render( - - - - ); + const {container, getByText} = renderAppPageWithoutAuthentication(); axios.post.mockImplementation(() => Promise.resolve({status: 200, data: {token: "myToken"}})); @@ -44,15 +38,21 @@ test("when not authenticated, an user can login", async () => { }); test("login fails", async () => { - const {container} = render( - - - - ); + const {container} = renderAppPageWithoutAuthentication(); axios.post.mockImplementation(() => Promise.reject({status: 400, data: {error: "Login Failed"}})); fireEvent.click(container.querySelector("button[name=loginButton]")); expect(container.querySelector("input[name=email]")).toBeInTheDocument(); -}); \ No newline at end of file +}); + +function renderAppPageWithoutAuthentication() { + return render( + + + + + + ); +} diff --git a/recipe-hooks-project/src/Register.test.js b/recipe-hooks-project/src/Register.test.js index ba00e275..26925186 100644 --- a/recipe-hooks-project/src/Register.test.js +++ b/recipe-hooks-project/src/Register.test.js @@ -9,13 +9,7 @@ import {waitForElement} from "@testing-library/dom"; jest.mock("axios"); test("renders the page", () => { - const {container} = render( - - - - - - ); + const {container} = renderRegisterComponent(); expect(container.querySelector("h3")).toHaveTextContent("Registration"); expect(container.querySelector("input[name=email]")).toBeInTheDocument(); @@ -25,23 +19,44 @@ test("renders the page", () => { }); test("creates an user", async () => { - const {container} = render( + const {container} = renderRegisterComponent(); + + axios.post.mockImplementation(() => Promise.resolve({status: 201, data: {}})); + + fillAndSubmitForm(container); + + setTimeout(async () => { + expect(await waitForElement(() => container.querySelector("h3"), {timeout: 1000})) + .toHaveTextContent("Login"); + }, 500); +}); + +test("creates an user", async () => { + const {container} = renderRegisterComponent(); + + axios.post.mockImplementation(() => Promise.resolve({status: 400, data: {}})); + + fillAndSubmitForm(container); + + setTimeout(async () => { + expect(await waitForElement(() => container.querySelector("h3"), {timeout: 1000})) + .toHaveTextContent("Login"); + }, 500); +}); + +function renderRegisterComponent() { + return render( ); +} - axios.post.mockImplementation(() => Promise.resolve({status: 201, data: {}})); - +function fillAndSubmitForm(container) { fireEvent.change(container.querySelector("input[name=email]"), {target: {value: "test@test.com"}}); fireEvent.change(container.querySelector("input[name=name]"), {target: {value: "test@test.com"}}); fireEvent.change(container.querySelector("input[name=password]"), {target: {value: "testpass"}}); fireEvent.click(container.querySelector("button[name=registrationButton]")); - - setTimeout(async () => { - expect(await waitForElement(() => container.querySelector("h3"), {timeout: 1000})) - .toHaveTextContent("Login"); - }, 500); -}); \ No newline at end of file +} From 71a25835d46d1a39362664d56a0274f9b37d99c0 Mon Sep 17 00:00:00 2001 From: Francesco Venneri Date: Thu, 2 Jul 2020 09:19:56 +0200 Subject: [PATCH 11/31] [RECIPE-PROJECT] Some more tasks --- recipe-hooks-project/package-lock.json | 5 + recipe-hooks-project/package.json | 1 + recipe-hooks-project/src/App.js | 7 +- recipe-hooks-project/src/AppPage.js | 9 +- recipe-hooks-project/src/AppPage.test.js | 110 ++++++++++++++--- recipe-hooks-project/src/Home.js | 2 +- recipe-hooks-project/src/Login.js | 8 +- recipe-hooks-project/src/Navbar.js | 51 ++++++++ recipe-hooks-project/src/Profile.js | 114 ++++++++++++++++++ recipe-hooks-project/src/RecipeApp.js | 8 +- recipe-hooks-project/src/Register.js | 12 +- recipe-hooks-project/src/Register.test.js | 36 +----- .../src/{components => }/Routes.js | 8 +- recipe-hooks-project/src/components/Form.js | 4 +- .../src/components/General.js | 12 ++ .../src/hooks/useInputState.js | 7 +- 16 files changed, 318 insertions(+), 76 deletions(-) create mode 100644 recipe-hooks-project/src/Navbar.js create mode 100644 recipe-hooks-project/src/Profile.js rename recipe-hooks-project/src/{components => }/Routes.js (60%) create mode 100644 recipe-hooks-project/src/components/General.js diff --git a/recipe-hooks-project/package-lock.json b/recipe-hooks-project/package-lock.json index 88276721..a66c08ac 100644 --- a/recipe-hooks-project/package-lock.json +++ b/recipe-hooks-project/package-lock.json @@ -1145,6 +1145,11 @@ "resolved": "https://registry.npmjs.org/@emotion/unitless/-/unitless-0.7.5.tgz", "integrity": "sha512-OWORNpfjMsSSUBVrRBVGECkhWcULOAJz9ZW8uK9qgxD+87M7jHRcvh/A96XXNhXTLmKcoYSQtBEX7lHMO7YRwg==" }, + "@fortawesome/fontawesome-free": { + "version": "5.13.1", + "resolved": "https://registry.npmjs.org/@fortawesome/fontawesome-free/-/fontawesome-free-5.13.1.tgz", + "integrity": "sha512-D819f34FLHeBN/4xvw0HR0u7U2G7RqjPSggXqf7LktsxWQ48VAfGwvMrhcVuaZV2fF069c/619RdgCCms0DHhw==" + }, "@hapi/address": { "version": "2.1.4", "resolved": "https://registry.npmjs.org/@hapi/address/-/address-2.1.4.tgz", diff --git a/recipe-hooks-project/package.json b/recipe-hooks-project/package.json index b2039349..773c4130 100644 --- a/recipe-hooks-project/package.json +++ b/recipe-hooks-project/package.json @@ -3,6 +3,7 @@ "version": "0.1.0", "private": true, "dependencies": { + "@fortawesome/fontawesome-free": "^5.13.1", "@material-ui/core": "^4.10.2", "@testing-library/jest-dom": "^4.2.4", "@testing-library/user-event": "^7.2.1", diff --git a/recipe-hooks-project/src/App.js b/recipe-hooks-project/src/App.js index d53145cc..8ccc9af3 100644 --- a/recipe-hooks-project/src/App.js +++ b/recipe-hooks-project/src/App.js @@ -2,13 +2,17 @@ import React from "react"; import {AuthenticationProvider} from "./contexts/AuthenticationProvider"; import {BrowserRouter, Switch} from "react-router-dom"; import {ThemeProvider} from "styled-components"; -import {Routes} from "./components/Routes"; +import {Routes} from "./Routes"; +import Navbar from "./Navbar"; + +const RECIPE_API_BASE_URL = "http://localhost:8000/api"; function App() { return ( + @@ -19,3 +23,4 @@ function App() { } export default App; +export {RECIPE_API_BASE_URL}; diff --git a/recipe-hooks-project/src/AppPage.js b/recipe-hooks-project/src/AppPage.js index b5c17eb2..12868a73 100644 --- a/recipe-hooks-project/src/AppPage.js +++ b/recipe-hooks-project/src/AppPage.js @@ -1,9 +1,9 @@ -import React, {useContext} from "react"; +import React, {memo, useContext} from "react"; import {AuthContext} from "./contexts/AuthenticationProvider"; import RecipeApp from "./RecipeApp"; import Login from "./Login"; -export default function AppPage(props) { +function AppPage() { const {token} = useContext(AuthContext); return ( @@ -16,6 +16,9 @@ export default function AppPage(props) { } + {/**/} ); -}; \ No newline at end of file +} + +export default memo(AppPage); \ No newline at end of file diff --git a/recipe-hooks-project/src/AppPage.test.js b/recipe-hooks-project/src/AppPage.test.js index 8530d920..23ea5cfa 100644 --- a/recipe-hooks-project/src/AppPage.test.js +++ b/recipe-hooks-project/src/AppPage.test.js @@ -1,32 +1,29 @@ import React from "react"; import {fireEvent, render} from "@testing-library/react"; -import {waitForElement} from "@testing-library/dom"; -import {AuthContext, AuthenticationProvider} from "./contexts/AuthenticationProvider"; +import {BrowserRouter} from "react-router-dom"; import axios from "axios"; +import {AuthContext} from "./contexts/AuthenticationProvider"; import AppPage from "./AppPage"; import Login from "./Login"; -import {BrowserRouter} from "react-router-dom"; +import {waitForElement} from "@testing-library/dom"; jest.mock("axios"); test("when not authenticated, renders login", () => { - const {container} = renderAppPageWithoutAuthentication(); + const {container} = renderAppPageWithToken(null); expect(container.querySelector("h3")).toHaveTextContent("Login"); }); -test("when authenticated, do not render login", () => { - const {container, getByText} = render( - - - - ); - expect(getByText(/Recipe App/i)).toBeInTheDocument(); +test("when authenticated, do not render login and render the app instead", () => { + const {container} = renderAppPageWithToken("myToken"); + expect(container.querySelector("input[name=email]")).toBeNull(); + assertAppIsRenderedProperly(container); }); -test("when not authenticated, an user can login", async () => { - const {container, getByText} = renderAppPageWithoutAuthentication(); +test("when not authenticated, an user can login", () => { + const {container, getByText} = renderAppPageWithToken(null); axios.post.mockImplementation(() => Promise.resolve({status: 200, data: {token: "myToken"}})); @@ -34,11 +31,13 @@ test("when not authenticated, an user can login", async () => { fireEvent.change(container.querySelector("input[name=password]"), {target: {value: "testpass"}}); fireEvent.click(container.querySelector("button[name=loginButton]")); - expect(await waitForElement(() => getByText(/Recipe App/i))).toBeInTheDocument(); + setTimeout(async () => { + assertAppIsRenderedProperly(container); + }, 100); }); -test("login fails", async () => { - const {container} = renderAppPageWithoutAuthentication(); +test("login fails", () => { + const {container} = renderAppPageWithToken(null); axios.post.mockImplementation(() => Promise.reject({status: 400, data: {error: "Login Failed"}})); @@ -47,12 +46,85 @@ test("login fails", async () => { expect(container.querySelector("input[name=email]")).toBeInTheDocument(); }); -function renderAppPageWithoutAuthentication() { +test("an user can logout", () => { + const {container} = renderAppPageWithToken("myToken"); + + fireEvent.click(container.querySelector("div[name=Navbar] a[name=Logout]")); + + setTimeout(async () => { + expect(await waitForElement(() => container.querySelector("form h3"), {timeout: 1000})) + .toHaveTextContent("Login"); + }, 1000); +}); + +test("creates an user and redirects to login", async () => { + const {container, getByText} = renderAppPageWithToken(null); + axios.post.mockImplementation(() => Promise.resolve({status: 201, data: {}})); + + fireEvent.click(getByText(/Register/i)); + + sleep(1000).then(() => { + console.log("1 Form?") + fillAndSubmitRegistrationForm(container); + console.log("2 Form?") + sleep(1000).then(() => { + expect(container.querySelector("h3")).toHaveTextContent("Login"); + }); + }); + + // await expect(sleep).toBeCalledWith(1000); + + // await new Promise(() => setTimeout(() => { + // console.log("Simulate wait to re-render the page after clicking to create an user"); + // }, 100)); + + // await new Promise(() => setTimeout(async () => { + // expect(await waitForElement(() => container.querySelector("h3"), {timeout: 1000})) + // .toHaveTextContent("Login"); + // }, 2000)); + + // setTimeout(async () => { + // console.log("Handler called"); + // expect(await waitForElement(() => container.querySelector("h3"), {timeout: 1000})) + // .toHaveTextContent("Login"); + // }, 1000); +}); + +// test("creates an user fails and stays in the page", () => { +// const {container} = renderRegisterComponent(); +// +// axios.post.mockImplementation(() => { +// console.log("Simulate call to API") +// Promise.resolve({status: 400, data: {}}) +// }); +// +// fillAndSubmitRegistrationForm(container); +// +// expect(container.querySelector("h3")).toHaveTextContent("Registration"); +// }); + +export const sleep = (millis) => new Promise((resolve) => setTimeout(resolve, millis)); + +function fillAndSubmitRegistrationForm(container) { + fireEvent.change(container.querySelector("input[name=email]"), {target: {value: "test@test.com"}}); + fireEvent.change(container.querySelector("input[name=name]"), {target: {value: "test@test.com"}}); + fireEvent.change(container.querySelector("input[name=password]"), {target: {value: "testpass"}}); + fireEvent.click(container.querySelector("button[name=registrationButton]")); +} + +function assertAppIsRenderedProperly(container) { + expect(container.querySelector("div[name=Navbar]")).toHaveTextContent("Recipe App"); + const allLinks = container.querySelectorAll("div[name=Navbar] a"); + expect(allLinks.item(allLinks.length - 2)).toHaveTextContent("Profile"); + expect(allLinks.item(allLinks.length - 1)).toHaveTextContent("Logout"); +} + +function renderAppPageWithToken(token) { return render( - + - + ); } diff --git a/recipe-hooks-project/src/Home.js b/recipe-hooks-project/src/Home.js index 24c58b21..0b609499 100644 --- a/recipe-hooks-project/src/Home.js +++ b/recipe-hooks-project/src/Home.js @@ -19,7 +19,7 @@ const AppDescription = styled.div` margin: 1em; `; -export default function Home(props) { +export default function Home() { return ( Patatas bravas diff --git a/recipe-hooks-project/src/Login.js b/recipe-hooks-project/src/Login.js index 24658589..10ba35f1 100644 --- a/recipe-hooks-project/src/Login.js +++ b/recipe-hooks-project/src/Login.js @@ -1,11 +1,11 @@ -import React, {useContext} from "react"; +import React, {memo, useContext} from "react"; import useInputState from "./hooks/useInputState"; import axios from "axios"; import {Container, Form, FormTitle, Input, SubmitButton} from "./components/Form" import {AuthContext} from "./contexts/AuthenticationProvider"; import {Link} from "react-router-dom"; -export default function Login() { +function Login() { const [email, handleEmailChange] = useInputState(""); const [password, handlePasswordChange] = useInputState(""); const {login} = useContext(AuthContext); @@ -34,4 +34,6 @@ export default function Login() { ); -}; \ No newline at end of file +} + +export default memo(Login); \ No newline at end of file diff --git a/recipe-hooks-project/src/Navbar.js b/recipe-hooks-project/src/Navbar.js new file mode 100644 index 00000000..474d11aa --- /dev/null +++ b/recipe-hooks-project/src/Navbar.js @@ -0,0 +1,51 @@ +import React, {useContext} from "react"; +import {Link} from "react-router-dom"; +import styled from "styled-components"; +import "@fortawesome/fontawesome-free/css/all.css" +import {AuthContext} from "./contexts/AuthenticationProvider"; + +const NavbarContainer = styled.div` + background-color: blue; + padding: 1em; + display: flex; + justify-content: space-between; + align-items: center; +`; + +const AppName = styled.div` + color: white; + font-size: 2em; + font-weight: 500; +`; + +const StyledLink = styled( + styled(Link)` + color: white; + display: block; + margin: 0.5em 0; + font-size: 1em; + + &:hover { + text-decoration: underline; + cursor: pointer; + } + `, + "active" +)` +`; + +export default function Navbar() { + const {logout} = useContext(AuthContext); + + function handleLogout(e) { + logout(); + } + + return ( + + Recipe App + Profile + Logout + + ); +}; \ No newline at end of file diff --git a/recipe-hooks-project/src/Profile.js b/recipe-hooks-project/src/Profile.js new file mode 100644 index 00000000..641f874b --- /dev/null +++ b/recipe-hooks-project/src/Profile.js @@ -0,0 +1,114 @@ +import React, {memo, useEffect} from "react"; +import styled from "styled-components"; +import axios from "axios"; +import "@fortawesome/fontawesome-free/css/all.css" +import {Wrapper} from "./components/General"; +import {RECIPE_API_BASE_URL} from "./App"; +import useInputState from "./hooks/useInputState"; +import useToggle from "./hooks/useToggleState"; + +const ProfileCard = styled.form` + display: flex; + justify-content: center; + align-items: center; + flex-direction: column; + width: 30%; + border: 2px solid lightgray; + box-shadow: 0 19px 38px rgba(0, 0, 0, 0.3), 0 15px 12px rgba(0, 0, 0, 0.1); + margin: auto; +`; +const Section = styled.div` + display: flex; + justify-content: left; + align-items: center; + width: 90%; + padding-bottom: 1.5em; + margin: auto; +`; +const Title = styled(Section)` + height: 1em; + font-size: 1.5em; + font-weight: 500; + margin: auto; + justify-content: center; + padding-top: 1.5em; +`; +const Label = styled.label` + font-size: 1em; + width: 20%; + color: blue; + margin-left: 2.5em; +`; +const Input = styled.input.attrs((props) => ({ + ...props +}))` + font-size: 1em; + padding: 15px; + width: 50%; + border: 2px solid blue; + border-radius: 5px; + + &:hover { + border-color: red; + } +`; +const EditSection = styled(Section)` + margin: auto; + display: flex; + justify-content: center; + align-items: center; + cursor: pointer; +`; + +function Profile() { + const [isEditing, toggleIsEditing] = useToggle(false); + const [email, handleEmailChange, setEmail] = useInputState(""); + const [password, handlePasswordChange] = useInputState(""); + const [name, handleNameChange, setName] = useInputState(""); + + useEffect(() => { + async function fetchData() { + const profile = await axios.get(RECIPE_API_BASE_URL + "/user/me", + {headers: {Authorization: "Token 771588d4be688173e35ffe08caec07ac8a95009e"}}); + setEmail(profile.data.email); + setName(profile.data.name); + + console.log("RERENDER") + } + + fetchData(); + }, []); + + function toggleReadonly(e) { + e.preventDefault(); + toggleIsEditing(); + } + + return ( + + + + Profile + +