From dd0bdd5ab094d60ff94b6ef155296e4cea42224e Mon Sep 17 00:00:00 2001 From: Joseph Bagaric Date: Tue, 15 Jun 2021 16:16:47 +0200 Subject: [PATCH 01/11] chore(issuer): Enable the batchIssue() method in ERC1888 --- common/config/rush/pnpm-lock.yaml | 1756 ++++++++++------- .../issuer/contracts/ERC1888/IERC1888.sol | 42 +- .../traceability/issuer/contracts/Issuer.sol | 92 +- .../issuer/contracts/PrivateIssuer.sol | 8 +- .../issuer/contracts/Registry.sol | 90 +- 5 files changed, 1264 insertions(+), 724 deletions(-) diff --git a/common/config/rush/pnpm-lock.yaml b/common/config/rush/pnpm-lock.yaml index 5131ad8784..231bc22a30 100644 --- a/common/config/rush/pnpm-lock.yaml +++ b/common/config/rush/pnpm-lock.yaml @@ -1,20 +1,20 @@ dependencies: - '@babel/core': 7.14.3 + '@babel/core': 7.14.5 '@date-io/moment': 1.3.13_moment@2.29.1 '@energyweb/energy-api-influxdb': 0.7.0_dc7550b32b1014ff62ea7cebd522ef42 - '@ethersproject/abi': 5.3.0 + '@ethersproject/abi': 5.3.1 '@ethersproject/abstract-provider': 5.3.0 '@ethersproject/contracts': 5.3.0 - '@ethersproject/providers': 5.3.0 - '@hookform/resolvers': 1.3.7_react-hook-form@6.15.7 + '@ethersproject/providers': 5.3.1 + '@hookform/resolvers': 1.3.7_react-hook-form@6.15.8 '@jest/globals': 27.0.3 - '@material-ui/core': 4.11.4_e84af7742d25ac89b84cf59d2816ddf6 - '@material-ui/icons': 4.11.2_083feab47dc0d33e56a0783af158b52a - '@material-ui/lab': 4.0.0-alpha.58_083feab47dc0d33e56a0783af158b52a + '@material-ui/core': 4.11.4_7a759d72fcbc11ce03c9de110c21df82 + '@material-ui/icons': 4.11.2_5e14cec25e1ceef8d08e6ab1e0c4cb05 + '@material-ui/lab': 4.0.0-alpha.58_5e14cec25e1ceef8d08e6ab1e0c4cb05 '@material-ui/pickers': 3.3.10_f543984b3e6c18c2e2e104a9ecbda934 - '@material-ui/styles': 4.11.4_e84af7742d25ac89b84cf59d2816ddf6 + '@material-ui/styles': 4.11.4_7a759d72fcbc11ce03c9de110c21df82 '@nestjs-modules/mailer': 1.5.1_5dbbcc69d5fbb1319985aa8fa09dc406 - '@nestjs/cli': 7.6.0_webpack-cli@4.7.0 + '@nestjs/cli': 7.6.0_webpack-cli@4.7.2 '@nestjs/common': 7.6.17_fbc9982997ba253269f25bdc348cb93c '@nestjs/config': 0.6.3_0ff807c7e0c0946ae4ae01be7385e726 '@nestjs/core': 7.6.17_4abd72a689207fb49212f568a33f7183 @@ -31,57 +31,57 @@ dependencies: '@openzeppelin/cli': 2.8.2 '@openzeppelin/contracts': 4.1.0 '@openzeppelin/contracts-upgradeable': 4.1.0 - '@openzeppelin/truffle-upgrades': 1.7.0_truffle@5.3.9 + '@openzeppelin/truffle-upgrades': 1.7.0_truffle@5.3.10 '@openzeppelin/upgrades': 2.8.0 '@react-google-maps/api': 2.2.0_react-dom@17.0.2+react@17.0.2 - '@reduxjs/toolkit': 1.5.1 + '@reduxjs/toolkit': 1.6.0_react-redux@7.2.4+react@17.0.2 '@rush-temp/device-registry': file:projects/device-registry.tgz - '@rush-temp/exchange': file:projects/exchange.tgz_b8311556de7f9bff62c8dfdc9a67c4f0 + '@rush-temp/exchange': file:projects/exchange.tgz_b835a54eebb571fabedc9112f430fbc7 '@rush-temp/exchange-client': file:projects/exchange-client.tgz_44e5b2290116f96a36a1ccffc3f92c45 '@rush-temp/exchange-core': file:projects/exchange-core.tgz_6a93b27028645614b9c605eaa34987d0 '@rush-temp/exchange-core-irec': file:projects/exchange-core-irec.tgz_6a93b27028645614b9c605eaa34987d0 - '@rush-temp/exchange-io-erc1888': file:projects/exchange-io-erc1888.tgz_c83006d3c5d1c89e9525194050e46052 - '@rush-temp/exchange-irec': file:projects/exchange-irec.tgz_ae8c87991f1134eece172971a909d06b + '@rush-temp/exchange-io-erc1888': file:projects/exchange-io-erc1888.tgz_0a559ecaea81dc0c457947869f989950 + '@rush-temp/exchange-irec': file:projects/exchange-irec.tgz_b9f5874f820ca87d22cbd7e111ab7178 '@rush-temp/exchange-irec-client': file:projects/exchange-irec-client.tgz_44e5b2290116f96a36a1ccffc3f92c45 '@rush-temp/exchange-token-account': file:projects/exchange-token-account.tgz_react@17.0.2 '@rush-temp/exchange-ui-core': file:projects/exchange-ui-core.tgz '@rush-temp/issuer': file:projects/issuer.tgz_react@17.0.2 - '@rush-temp/issuer-api': file:projects/issuer-api.tgz_d0662369d5a3d6440cc250075782d81c + '@rush-temp/issuer-api': file:projects/issuer-api.tgz_9e0c7f53022bc6c9f8b1a908fe517bd5 '@rush-temp/issuer-api-client': file:projects/issuer-api-client.tgz_44e5b2290116f96a36a1ccffc3f92c45 - '@rush-temp/issuer-irec-api': file:projects/issuer-irec-api.tgz_d0662369d5a3d6440cc250075782d81c + '@rush-temp/issuer-irec-api': file:projects/issuer-irec-api.tgz_9e0c7f53022bc6c9f8b1a908fe517bd5 '@rush-temp/issuer-irec-api-client': file:projects/issuer-irec-api-client.tgz_44e5b2290116f96a36a1ccffc3f92c45 '@rush-temp/issuer-irec-api-wrapper': file:projects/issuer-irec-api-wrapper.tgz '@rush-temp/localization': file:projects/localization.tgz '@rush-temp/migrations': file:projects/migrations.tgz '@rush-temp/migrations-irec': file:projects/migrations-irec.tgz - '@rush-temp/origin-backend': file:projects/origin-backend.tgz_f99ba94bd09e1cfcbb3172ba144891d4 - '@rush-temp/origin-backend-app': file:projects/origin-backend-app.tgz_d66b9abd33775cf532aefb2a7d4fbc15 + '@rush-temp/origin-backend': file:projects/origin-backend.tgz_a0ccdd3d67385e8a67482d68dcf16485 + '@rush-temp/origin-backend-app': file:projects/origin-backend-app.tgz_879cfd6b7aaf2151a3f5979480d91d56 '@rush-temp/origin-backend-client': file:projects/origin-backend-client.tgz_a8ce0c06fd32d99f157bb2132dd16aac '@rush-temp/origin-backend-core': file:projects/origin-backend-core.tgz '@rush-temp/origin-backend-irec-app': file:projects/origin-backend-irec-app.tgz_1ea59198d78e334ee4e1bbab81fdb806 '@rush-temp/origin-backend-utils': file:projects/origin-backend-utils.tgz_79b4bd5bbb33370492fb3cbed967f5fb - '@rush-temp/origin-device-registry-api': file:projects/origin-device-registry-api.tgz_3029923eaaa712fb4bc39e688f87bfca + '@rush-temp/origin-device-registry-api': file:projects/origin-device-registry-api.tgz_b9250c49fd3338a3b74124ad0423c05b '@rush-temp/origin-device-registry-api-client': file:projects/origin-device-registry-api-client.tgz_21da09de4c3ed72abc361ba15e3e6617 - '@rush-temp/origin-device-registry-irec-form-api': file:projects/origin-device-registry-irec-form-api.tgz_3029923eaaa712fb4bc39e688f87bfca + '@rush-temp/origin-device-registry-irec-form-api': file:projects/origin-device-registry-irec-form-api.tgz_b9250c49fd3338a3b74124ad0423c05b '@rush-temp/origin-device-registry-irec-form-api-client': file:projects/origin-device-registry-irec-form-api-client.tgz_21da09de4c3ed72abc361ba15e3e6617 - '@rush-temp/origin-device-registry-irec-local-api': file:projects/origin-device-registry-irec-local-api.tgz_3029923eaaa712fb4bc39e688f87bfca + '@rush-temp/origin-device-registry-irec-local-api': file:projects/origin-device-registry-irec-local-api.tgz_b9250c49fd3338a3b74124ad0423c05b '@rush-temp/origin-device-registry-irec-local-api-client': file:projects/origin-device-registry-irec-local-api-client.tgz_21da09de4c3ed72abc361ba15e3e6617 '@rush-temp/origin-energy-api': file:projects/origin-energy-api.tgz_2d0f8769bcba180de6d1bf4f4aa9281f '@rush-temp/origin-energy-api-client': file:projects/origin-energy-api-client.tgz_21da09de4c3ed72abc361ba15e3e6617 - '@rush-temp/origin-organization-irec-api': file:projects/origin-organization-irec-api.tgz_3029923eaaa712fb4bc39e688f87bfca + '@rush-temp/origin-organization-irec-api': file:projects/origin-organization-irec-api.tgz_b9250c49fd3338a3b74124ad0423c05b '@rush-temp/origin-organization-irec-api-client': file:projects/origin-organization-irec-api-client.tgz_61eeae0a9607049ab472c29cd155574c '@rush-temp/origin-ui': file:projects/origin-ui.tgz_jest@27.0.4 - '@rush-temp/origin-ui-core': file:projects/origin-ui-core.tgz_e3b821b9c9fe8795227fb3928da9758c + '@rush-temp/origin-ui-core': file:projects/origin-ui-core.tgz_5a02834750c54fcd43f6628b784fbeb3 '@rush-temp/origin-ui-irec-core': file:projects/origin-ui-irec-core.tgz_ts-node@9.1.1 '@rush-temp/solar-simulator': file:projects/solar-simulator.tgz '@rush-temp/utils-general': file:projects/utils-general.tgz - '@storybook/addon-actions': 6.2.9_e84af7742d25ac89b84cf59d2816ddf6 - '@storybook/addon-essentials': 6.2.9_ea31b9882ac15eede8e67c6721f5683e + '@storybook/addon-actions': 6.2.9_7a759d72fcbc11ce03c9de110c21df82 + '@storybook/addon-essentials': 6.2.9_01d0931451e469ab60d8d92681c8fdb8 '@storybook/addon-links': 6.2.9_react-dom@17.0.2+react@17.0.2 - '@storybook/react': 6.2.9_0073b97e156e04b8acd9f360329c9507 + '@storybook/react': 6.2.9_ea84e963c2420e178a578d3944e78a07 '@svgr/webpack': 5.5.0 '@testing-library/react': 11.2.7_react-dom@17.0.2+react@17.0.2 - '@typechain/ethers-v5': 7.0.0_b59b4be7c4febb6a9dc6ed09ef58a1c9 + '@typechain/ethers-v5': 7.0.1_534a0803dec1c20d83d335d68085cd00 '@types/bcryptjs': 2.4.2 '@types/bn.js': 5.1.0 '@types/body-parser': 1.19.0 @@ -98,15 +98,15 @@ dependencies: '@types/mocha': 8.2.2 '@types/moment-timezone': 0.5.13 '@types/multer': 1.4.5 - '@types/node': 14.17.2 + '@types/node': 14.17.3 '@types/nodemailer': 6.4.2 '@types/passport': 1.0.6 '@types/passport-jwt': 3.0.5 '@types/passport-local': 1.0.33 '@types/pg': 7.14.11 '@types/qs': 6.9.6 - '@types/react': 17.0.9 - '@types/react-dom': 17.0.6 + '@types/react': 17.0.11 + '@types/react-dom': 17.0.7 '@types/react-redux': 7.1.16 '@types/react-router-dom': 5.1.7 '@types/redux-logger': 3.0.8 @@ -117,9 +117,9 @@ dependencies: '@types/ws': 7.4.4 '@types/yup': 0.29.11 '@unicef/material-ui-currency-textfield': 0.8.6_f543984b3e6c18c2e2e104a9ecbda934 - '@vmw/queue-for-redux-saga': 0.3.0_dabc9aab316ba0825f295ac4fdb4520c + '@vmw/queue-for-redux-saga': 0.3.0_048ca475e79921e4b5c7ae691130b6a4 axios: 0.21.1 - babel-loader: 8.2.2_56c0991c8a79bd1374c11f7f6fc4baef + babel-loader: 8.2.2_be4b5a2e27f85c129e0cacc759b45f7c bcryptjs: 2.4.3 bn.js: 5.2.0 body-parser: 1.19.0 @@ -139,9 +139,9 @@ dependencies: cross-env: 7.0.3 crypto-browserify: 3.12.0 css-loader: 5.2.6_webpack@5.38.1 - csv-parse: 4.15.4 - cypress: 7.4.0 - cypress-file-upload: 5.0.7_cypress@7.4.0 + csv-parse: 4.16.0 + cypress: 7.5.0 + cypress-file-upload: 5.0.7_cypress@7.5.0 dayjs: 1.10.5 dotenv: 10.0.0 enzyme: 3.11.0 @@ -150,7 +150,7 @@ dependencies: eslint-plugin-react: 7.24.0 eslint-plugin-react-hooks: 4.2.0 eth-sig-util: 2.5.4 - ethers: 5.3.0 + ethers: 5.3.1 ethlint: 1.2.5 express: 4.17.1 extract-text-webpack-plugin: 4.0.0-beta.0_webpack@5.38.1 @@ -178,7 +178,7 @@ dependencies: lodash: 4.17.21 mandrill-nodemailer-transport: 1.2.1_nodemailer@6.6.1 mini-css-extract-plugin: 1.6.0_webpack@5.38.1 - mocha: 8.4.0 + mocha: 9.0.0 moment: 2.29.1 moment-range: 4.0.2_moment@2.29.1 moment-timezone: 0.5.33 @@ -202,7 +202,7 @@ dependencies: react-dom: 17.0.2_react@17.0.2 react-dropzone: 11.3.2_react@17.0.2 react-error-boundary: 3.1.3_react@17.0.2 - react-hook-form: 6.15.7_react@17.0.2 + react-hook-form: 6.15.8_react@17.0.2 react-i18next: 11.10.0_i18next@20.3.1+react@17.0.2 react-redux: 7.2.4_react-dom@17.0.2+react@17.0.2 react-router-dom: 5.2.0_react@17.0.2 @@ -213,7 +213,7 @@ dependencies: reflect-metadata: 0.1.13 resolve-url-loader: 4.0.0 rxjs: 6.6.7 - sass-loader: 12.0.0_node-sass@6.0.0+webpack@5.38.1 + sass-loader: 12.1.0_node-sass@6.0.0+webpack@5.38.1 shx: 0.3.3 solc: 0.8.4 source-map-loader: 3.0.0_webpack@5.38.1 @@ -225,7 +225,7 @@ dependencies: supertest-capture-error: 1.0.0 swagger-ui-express: 4.1.6_express@4.17.1 toastr: 2.1.4 - truffle: 5.3.9_@types+node@14.17.2+react@17.0.2 + truffle: 5.3.10_@types+node@14.17.3+react@17.0.2 truffle-typings: 1.0.8 ts-jest: 27.0.3_jest@27.0.4+typescript@4.3.2 ts-loader: 9.2.3_typescript@4.3.2+webpack@5.38.1 @@ -241,10 +241,10 @@ dependencies: uuid: 8.3.2 vm-browserify: 1.1.2 wait-on: 5.2.1 - webpack: 5.38.1_webpack-cli@4.7.0 - webpack-cli: 4.7.0_4f38b4f344caeae135cc7debc9aac51b - webpack-dev-server: 3.11.2_webpack-cli@4.7.0+webpack@5.38.1 - webpack-merge: 5.7.3 + webpack: 5.38.1_webpack-cli@4.7.2 + webpack-cli: 4.7.2_4f38b4f344caeae135cc7debc9aac51b + webpack-dev-server: 3.11.2_webpack-cli@4.7.2+webpack@5.38.1 + webpack-merge: 5.8.0 winston: 3.3.3 winston-transport: 4.4.0 write-json-file: 4.3.0 @@ -489,6 +489,28 @@ packages: node: '>=6.9.0' resolution: integrity: sha512-jB5AmTKOCSJIZ72sd78ECEhuPiDMKlQdDI/4QRI6lzYATx5SSogS1oQA2AoPecRCknm30gHi2l+QVvNUu3wZAg== + /@babel/core/7.14.5: + dependencies: + '@babel/code-frame': 7.14.5 + '@babel/generator': 7.14.5 + '@babel/helper-compilation-targets': 7.14.5_@babel+core@7.14.5 + '@babel/helper-module-transforms': 7.14.5 + '@babel/helpers': 7.14.5 + '@babel/parser': 7.14.5 + '@babel/template': 7.14.5 + '@babel/traverse': 7.14.5 + '@babel/types': 7.14.5 + convert-source-map: 1.7.0 + debug: 4.3.1 + gensync: 1.0.0-beta.2 + json5: 2.2.0 + semver: 6.3.0 + source-map: 0.5.7 + dev: false + engines: + node: '>=6.9.0' + resolution: + integrity: sha512-RN/AwP2DJmQTZSfiDaD+JQQ/J99KsIpOCfBE5pL+5jJSt7nI3nYGoAXZu+ffYSQ029NLs2DstZb+eR81uuARgg== /@babel/generator/7.14.5: dependencies: '@babel/types': 7.14.5 @@ -530,6 +552,20 @@ packages: '@babel/core': ^7.0.0 resolution: integrity: sha512-v+QtZqXEiOnpO6EYvlImB6zCD2Lel06RzOPzmkz/D/XgQiUu3C/Jb1LOqSt/AIA34TYi/Q+KlT8vTQrgdxkbLw== + /@babel/helper-compilation-targets/7.14.5_@babel+core@7.14.5: + dependencies: + '@babel/compat-data': 7.14.5 + '@babel/core': 7.14.5 + '@babel/helper-validator-option': 7.14.5 + browserslist: 4.16.6 + semver: 6.3.0 + dev: false + engines: + node: '>=6.9.0' + peerDependencies: + '@babel/core': ^7.0.0 + resolution: + integrity: sha512-v+QtZqXEiOnpO6EYvlImB6zCD2Lel06RzOPzmkz/D/XgQiUu3C/Jb1LOqSt/AIA34TYi/Q+KlT8vTQrgdxkbLw== /@babel/helper-create-class-features-plugin/7.14.5_@babel+core@7.14.3: dependencies: '@babel/core': 7.14.3 @@ -546,6 +582,23 @@ packages: '@babel/core': ^7.0.0 resolution: integrity: sha512-Uq9z2e7ZtcnDMirRqAGLRaLwJn+Lrh388v5ETrR3pALJnElVh2zqQmdbz4W2RUJYohAPh2mtyPUgyMHMzXMncQ== + /@babel/helper-create-class-features-plugin/7.14.5_@babel+core@7.14.5: + dependencies: + '@babel/core': 7.14.5 + '@babel/helper-annotate-as-pure': 7.14.5 + '@babel/helper-function-name': 7.14.5 + '@babel/helper-member-expression-to-functions': 7.14.5 + '@babel/helper-optimise-call-expression': 7.14.5 + '@babel/helper-replace-supers': 7.14.5 + '@babel/helper-split-export-declaration': 7.14.5 + dev: false + engines: + node: '>=6.9.0' + optional: true + peerDependencies: + '@babel/core': ^7.0.0 + resolution: + integrity: sha512-Uq9z2e7ZtcnDMirRqAGLRaLwJn+Lrh388v5ETrR3pALJnElVh2zqQmdbz4W2RUJYohAPh2mtyPUgyMHMzXMncQ== /@babel/helper-create-regexp-features-plugin/7.14.5_@babel+core@7.14.3: dependencies: '@babel/core': 7.14.3 @@ -814,6 +867,19 @@ packages: '@babel/core': ^7.0.0-0 resolution: integrity: sha512-q/PLpv5Ko4dVc1LYMpCY7RVAAO4uk55qPwrIuJ5QJ8c6cVuAmhu7I/49JOppXL6gXf7ZHzpRVEUZdYoPLM04Gg== + /@babel/plugin-proposal-class-properties/7.14.5_@babel+core@7.14.5: + dependencies: + '@babel/core': 7.14.5 + '@babel/helper-create-class-features-plugin': 7.14.5_@babel+core@7.14.5 + '@babel/helper-plugin-utils': 7.14.5 + dev: false + engines: + node: '>=6.9.0' + optional: true + peerDependencies: + '@babel/core': ^7.0.0-0 + resolution: + integrity: sha512-q/PLpv5Ko4dVc1LYMpCY7RVAAO4uk55qPwrIuJ5QJ8c6cVuAmhu7I/49JOppXL6gXf7ZHzpRVEUZdYoPLM04Gg== /@babel/plugin-proposal-class-static-block/7.14.5_@babel+core@7.14.3: dependencies: '@babel/core': 7.14.3 @@ -950,6 +1016,22 @@ packages: '@babel/core': ^7.0.0-0 resolution: integrity: sha512-VzMyY6PWNPPT3pxc5hi9LloKNr4SSrVCg7Yr6aZpW4Ym07r7KqSU/QXYwjXLVxqwSv0t/XSXkFoKBPUkZ8vb2A== + /@babel/plugin-proposal-object-rest-spread/7.14.5_@babel+core@7.14.5: + dependencies: + '@babel/compat-data': 7.14.5 + '@babel/core': 7.14.5 + '@babel/helper-compilation-targets': 7.14.5_@babel+core@7.14.5 + '@babel/helper-plugin-utils': 7.14.5 + '@babel/plugin-syntax-object-rest-spread': 7.8.3_@babel+core@7.14.5 + '@babel/plugin-transform-parameters': 7.14.5_@babel+core@7.14.5 + dev: false + engines: + node: '>=6.9.0' + optional: true + peerDependencies: + '@babel/core': ^7.0.0-0 + resolution: + integrity: sha512-VzMyY6PWNPPT3pxc5hi9LloKNr4SSrVCg7Yr6aZpW4Ym07r7KqSU/QXYwjXLVxqwSv0t/XSXkFoKBPUkZ8vb2A== /@babel/plugin-proposal-optional-catch-binding/7.14.5_@babel+core@7.14.3: dependencies: '@babel/core': 7.14.3 @@ -1040,6 +1122,16 @@ packages: '@babel/core': ^7.0.0-0 resolution: integrity: sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA== + /@babel/plugin-syntax-class-properties/7.12.13_@babel+core@7.14.5: + dependencies: + '@babel/core': 7.14.5 + '@babel/helper-plugin-utils': 7.14.5 + dev: false + optional: true + peerDependencies: + '@babel/core': ^7.0.0-0 + resolution: + integrity: sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA== /@babel/plugin-syntax-class-static-block/7.14.5_@babel+core@7.14.3: dependencies: '@babel/core': 7.14.3 @@ -1091,9 +1183,9 @@ packages: '@babel/core': ^7.0.0-0 resolution: integrity: sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q== - /@babel/plugin-syntax-flow/7.14.5_@babel+core@7.14.3: + /@babel/plugin-syntax-flow/7.14.5_@babel+core@7.14.5: dependencies: - '@babel/core': 7.14.3 + '@babel/core': 7.14.5 '@babel/helper-plugin-utils': 7.14.5 dev: false engines: @@ -1140,6 +1232,17 @@ packages: '@babel/core': ^7.0.0-0 resolution: integrity: sha512-ohuFIsOMXJnbOMRfX7/w7LocdR6R7whhuRD4ax8IipLcLPlZGJKkBxgHp++U4N/vKyU16/YDQr2f5seajD3jIw== + /@babel/plugin-syntax-jsx/7.14.5_@babel+core@7.14.5: + dependencies: + '@babel/core': 7.14.5 + '@babel/helper-plugin-utils': 7.14.5 + dev: false + engines: + node: '>=6.9.0' + peerDependencies: + '@babel/core': ^7.0.0-0 + resolution: + integrity: sha512-ohuFIsOMXJnbOMRfX7/w7LocdR6R7whhuRD4ax8IipLcLPlZGJKkBxgHp++U4N/vKyU16/YDQr2f5seajD3jIw== /@babel/plugin-syntax-logical-assignment-operators/7.10.4_@babel+core@7.14.3: dependencies: '@babel/core': 7.14.3 @@ -1185,6 +1288,16 @@ packages: '@babel/core': ^7.0.0-0 resolution: integrity: sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA== + /@babel/plugin-syntax-object-rest-spread/7.8.3_@babel+core@7.14.5: + dependencies: + '@babel/core': 7.14.5 + '@babel/helper-plugin-utils': 7.14.5 + dev: false + optional: true + peerDependencies: + '@babel/core': ^7.0.0-0 + resolution: + integrity: sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA== /@babel/plugin-syntax-optional-catch-binding/7.8.3_@babel+core@7.14.3: dependencies: '@babel/core': 7.14.3 @@ -1247,6 +1360,18 @@ packages: '@babel/core': ^7.0.0-0 resolution: integrity: sha512-KOnO0l4+tD5IfOdi4x8C1XmEIRWUjNRV8wc6K2vz/3e8yAOoZZvsRXRRIF/yo/MAOFb4QjtAw9xSxMXbSMRy8A== + /@babel/plugin-transform-arrow-functions/7.14.5_@babel+core@7.14.5: + dependencies: + '@babel/core': 7.14.5 + '@babel/helper-plugin-utils': 7.14.5 + dev: false + engines: + node: '>=6.9.0' + optional: true + peerDependencies: + '@babel/core': ^7.0.0-0 + resolution: + integrity: sha512-KOnO0l4+tD5IfOdi4x8C1XmEIRWUjNRV8wc6K2vz/3e8yAOoZZvsRXRRIF/yo/MAOFb4QjtAw9xSxMXbSMRy8A== /@babel/plugin-transform-async-to-generator/7.14.5_@babel+core@7.14.3: dependencies: '@babel/core': 7.14.3 @@ -1271,6 +1396,18 @@ packages: '@babel/core': ^7.0.0-0 resolution: integrity: sha512-dtqWqdWZ5NqBX3KzsVCWfQI3A53Ft5pWFCT2eCVUftWZgjc5DpDponbIF1+c+7cSGk2wN0YK7HGL/ezfRbpKBQ== + /@babel/plugin-transform-block-scoped-functions/7.14.5_@babel+core@7.14.5: + dependencies: + '@babel/core': 7.14.5 + '@babel/helper-plugin-utils': 7.14.5 + dev: false + engines: + node: '>=6.9.0' + optional: true + peerDependencies: + '@babel/core': ^7.0.0-0 + resolution: + integrity: sha512-dtqWqdWZ5NqBX3KzsVCWfQI3A53Ft5pWFCT2eCVUftWZgjc5DpDponbIF1+c+7cSGk2wN0YK7HGL/ezfRbpKBQ== /@babel/plugin-transform-block-scoping/7.14.5_@babel+core@7.14.3: dependencies: '@babel/core': 7.14.3 @@ -1282,6 +1419,18 @@ packages: '@babel/core': ^7.0.0-0 resolution: integrity: sha512-LBYm4ZocNgoCqyxMLoOnwpsmQ18HWTQvql64t3GvMUzLQrNoV1BDG0lNftC8QKYERkZgCCT/7J5xWGObGAyHDw== + /@babel/plugin-transform-block-scoping/7.14.5_@babel+core@7.14.5: + dependencies: + '@babel/core': 7.14.5 + '@babel/helper-plugin-utils': 7.14.5 + dev: false + engines: + node: '>=6.9.0' + optional: true + peerDependencies: + '@babel/core': ^7.0.0-0 + resolution: + integrity: sha512-LBYm4ZocNgoCqyxMLoOnwpsmQ18HWTQvql64t3GvMUzLQrNoV1BDG0lNftC8QKYERkZgCCT/7J5xWGObGAyHDw== /@babel/plugin-transform-classes/7.14.5_@babel+core@7.14.3: dependencies: '@babel/core': 7.14.3 @@ -1299,6 +1448,24 @@ packages: '@babel/core': ^7.0.0-0 resolution: integrity: sha512-J4VxKAMykM06K/64z9rwiL6xnBHgB1+FVspqvlgCdwD1KUbQNfszeKVVOMh59w3sztHYIZDgnhOC4WbdEfHFDA== + /@babel/plugin-transform-classes/7.14.5_@babel+core@7.14.5: + dependencies: + '@babel/core': 7.14.5 + '@babel/helper-annotate-as-pure': 7.14.5 + '@babel/helper-function-name': 7.14.5 + '@babel/helper-optimise-call-expression': 7.14.5 + '@babel/helper-plugin-utils': 7.14.5 + '@babel/helper-replace-supers': 7.14.5 + '@babel/helper-split-export-declaration': 7.14.5 + globals: 11.12.0 + dev: false + engines: + node: '>=6.9.0' + optional: true + peerDependencies: + '@babel/core': ^7.0.0-0 + resolution: + integrity: sha512-J4VxKAMykM06K/64z9rwiL6xnBHgB1+FVspqvlgCdwD1KUbQNfszeKVVOMh59w3sztHYIZDgnhOC4WbdEfHFDA== /@babel/plugin-transform-computed-properties/7.14.5_@babel+core@7.14.3: dependencies: '@babel/core': 7.14.3 @@ -1310,6 +1477,18 @@ packages: '@babel/core': ^7.0.0-0 resolution: integrity: sha512-pWM+E4283UxaVzLb8UBXv4EIxMovU4zxT1OPnpHJcmnvyY9QbPPTKZfEj31EUvG3/EQRbYAGaYEUZ4yWOBC2xg== + /@babel/plugin-transform-computed-properties/7.14.5_@babel+core@7.14.5: + dependencies: + '@babel/core': 7.14.5 + '@babel/helper-plugin-utils': 7.14.5 + dev: false + engines: + node: '>=6.9.0' + optional: true + peerDependencies: + '@babel/core': ^7.0.0-0 + resolution: + integrity: sha512-pWM+E4283UxaVzLb8UBXv4EIxMovU4zxT1OPnpHJcmnvyY9QbPPTKZfEj31EUvG3/EQRbYAGaYEUZ4yWOBC2xg== /@babel/plugin-transform-destructuring/7.14.5_@babel+core@7.14.3: dependencies: '@babel/core': 7.14.3 @@ -1321,6 +1500,18 @@ packages: '@babel/core': ^7.0.0-0 resolution: integrity: sha512-wU9tYisEbRMxqDezKUqC9GleLycCRoUsai9ddlsq54r8QRLaeEhc+d+9DqCG+kV9W2GgQjTZESPTpn5bAFMDww== + /@babel/plugin-transform-destructuring/7.14.5_@babel+core@7.14.5: + dependencies: + '@babel/core': 7.14.5 + '@babel/helper-plugin-utils': 7.14.5 + dev: false + engines: + node: '>=6.9.0' + optional: true + peerDependencies: + '@babel/core': ^7.0.0-0 + resolution: + integrity: sha512-wU9tYisEbRMxqDezKUqC9GleLycCRoUsai9ddlsq54r8QRLaeEhc+d+9DqCG+kV9W2GgQjTZESPTpn5bAFMDww== /@babel/plugin-transform-dotall-regex/7.14.5_@babel+core@7.14.3: dependencies: '@babel/core': 7.14.3 @@ -1356,11 +1547,11 @@ packages: '@babel/core': ^7.0.0-0 resolution: integrity: sha512-jFazJhMBc9D27o9jDnIE5ZErI0R0m7PbKXVq77FFvqFbzvTMuv8jaAwLZ5PviOLSFttqKIW0/wxNSDbjLk0tYA== - /@babel/plugin-transform-flow-strip-types/7.14.5_@babel+core@7.14.3: + /@babel/plugin-transform-flow-strip-types/7.14.5_@babel+core@7.14.5: dependencies: - '@babel/core': 7.14.3 + '@babel/core': 7.14.5 '@babel/helper-plugin-utils': 7.14.5 - '@babel/plugin-syntax-flow': 7.14.5_@babel+core@7.14.3 + '@babel/plugin-syntax-flow': 7.14.5_@babel+core@7.14.5 dev: false engines: node: '>=6.9.0' @@ -1379,6 +1570,18 @@ packages: '@babel/core': ^7.0.0-0 resolution: integrity: sha512-CfmqxSUZzBl0rSjpoQSFoR9UEj3HzbGuGNL21/iFTmjb5gFggJp3ph0xR1YBhexmLoKRHzgxuFvty2xdSt6gTA== + /@babel/plugin-transform-for-of/7.14.5_@babel+core@7.14.5: + dependencies: + '@babel/core': 7.14.5 + '@babel/helper-plugin-utils': 7.14.5 + dev: false + engines: + node: '>=6.9.0' + optional: true + peerDependencies: + '@babel/core': ^7.0.0-0 + resolution: + integrity: sha512-CfmqxSUZzBl0rSjpoQSFoR9UEj3HzbGuGNL21/iFTmjb5gFggJp3ph0xR1YBhexmLoKRHzgxuFvty2xdSt6gTA== /@babel/plugin-transform-function-name/7.14.5_@babel+core@7.14.3: dependencies: '@babel/core': 7.14.3 @@ -1391,6 +1594,19 @@ packages: '@babel/core': ^7.0.0-0 resolution: integrity: sha512-vbO6kv0fIzZ1GpmGQuvbwwm+O4Cbm2NrPzwlup9+/3fdkuzo1YqOZcXw26+YUJB84Ja7j9yURWposEHLYwxUfQ== + /@babel/plugin-transform-function-name/7.14.5_@babel+core@7.14.5: + dependencies: + '@babel/core': 7.14.5 + '@babel/helper-function-name': 7.14.5 + '@babel/helper-plugin-utils': 7.14.5 + dev: false + engines: + node: '>=6.9.0' + optional: true + peerDependencies: + '@babel/core': ^7.0.0-0 + resolution: + integrity: sha512-vbO6kv0fIzZ1GpmGQuvbwwm+O4Cbm2NrPzwlup9+/3fdkuzo1YqOZcXw26+YUJB84Ja7j9yURWposEHLYwxUfQ== /@babel/plugin-transform-literals/7.14.5_@babel+core@7.14.3: dependencies: '@babel/core': 7.14.3 @@ -1402,6 +1618,18 @@ packages: '@babel/core': ^7.0.0-0 resolution: integrity: sha512-ql33+epql2F49bi8aHXxvLURHkxJbSmMKl9J5yHqg4PLtdE6Uc48CH1GS6TQvZ86eoB/ApZXwm7jlA+B3kra7A== + /@babel/plugin-transform-literals/7.14.5_@babel+core@7.14.5: + dependencies: + '@babel/core': 7.14.5 + '@babel/helper-plugin-utils': 7.14.5 + dev: false + engines: + node: '>=6.9.0' + optional: true + peerDependencies: + '@babel/core': ^7.0.0-0 + resolution: + integrity: sha512-ql33+epql2F49bi8aHXxvLURHkxJbSmMKl9J5yHqg4PLtdE6Uc48CH1GS6TQvZ86eoB/ApZXwm7jlA+B3kra7A== /@babel/plugin-transform-member-expression-literals/7.14.5_@babel+core@7.14.3: dependencies: '@babel/core': 7.14.3 @@ -1413,6 +1641,18 @@ packages: '@babel/core': ^7.0.0-0 resolution: integrity: sha512-WkNXxH1VXVTKarWFqmso83xl+2V3Eo28YY5utIkbsmXoItO8Q3aZxN4BTS2k0hz9dGUloHK26mJMyQEYfkn/+Q== + /@babel/plugin-transform-member-expression-literals/7.14.5_@babel+core@7.14.5: + dependencies: + '@babel/core': 7.14.5 + '@babel/helper-plugin-utils': 7.14.5 + dev: false + engines: + node: '>=6.9.0' + optional: true + peerDependencies: + '@babel/core': ^7.0.0-0 + resolution: + integrity: sha512-WkNXxH1VXVTKarWFqmso83xl+2V3Eo28YY5utIkbsmXoItO8Q3aZxN4BTS2k0hz9dGUloHK26mJMyQEYfkn/+Q== /@babel/plugin-transform-modules-amd/7.14.5_@babel+core@7.14.3: dependencies: '@babel/core': 7.14.3 @@ -1440,6 +1680,21 @@ packages: '@babel/core': ^7.0.0-0 resolution: integrity: sha512-en8GfBtgnydoao2PS+87mKyw62k02k7kJ9ltbKe0fXTHrQmG6QZZflYuGI1VVG7sVpx4E1n7KBpNlPb8m78J+A== + /@babel/plugin-transform-modules-commonjs/7.14.5_@babel+core@7.14.5: + dependencies: + '@babel/core': 7.14.5 + '@babel/helper-module-transforms': 7.14.5 + '@babel/helper-plugin-utils': 7.14.5 + '@babel/helper-simple-access': 7.14.5 + babel-plugin-dynamic-import-node: 2.3.3 + dev: false + engines: + node: '>=6.9.0' + optional: true + peerDependencies: + '@babel/core': ^7.0.0-0 + resolution: + integrity: sha512-en8GfBtgnydoao2PS+87mKyw62k02k7kJ9ltbKe0fXTHrQmG6QZZflYuGI1VVG7sVpx4E1n7KBpNlPb8m78J+A== /@babel/plugin-transform-modules-systemjs/7.14.5_@babel+core@7.14.3: dependencies: '@babel/core': 7.14.3 @@ -1501,6 +1756,19 @@ packages: '@babel/core': ^7.0.0-0 resolution: integrity: sha512-MKfOBWzK0pZIrav9z/hkRqIk/2bTv9qvxHzPQc12RcVkMOzpIKnFCNYJip00ssKWYkd8Sf5g0Wr7pqJ+cmtuFg== + /@babel/plugin-transform-object-super/7.14.5_@babel+core@7.14.5: + dependencies: + '@babel/core': 7.14.5 + '@babel/helper-plugin-utils': 7.14.5 + '@babel/helper-replace-supers': 7.14.5 + dev: false + engines: + node: '>=6.9.0' + optional: true + peerDependencies: + '@babel/core': ^7.0.0-0 + resolution: + integrity: sha512-MKfOBWzK0pZIrav9z/hkRqIk/2bTv9qvxHzPQc12RcVkMOzpIKnFCNYJip00ssKWYkd8Sf5g0Wr7pqJ+cmtuFg== /@babel/plugin-transform-parameters/7.14.5_@babel+core@7.12.9: dependencies: '@babel/core': 7.12.9 @@ -1523,6 +1791,18 @@ packages: '@babel/core': ^7.0.0-0 resolution: integrity: sha512-Tl7LWdr6HUxTmzQtzuU14SqbgrSKmaR77M0OKyq4njZLQTPfOvzblNKyNkGwOfEFCEx7KeYHQHDI0P3F02IVkA== + /@babel/plugin-transform-parameters/7.14.5_@babel+core@7.14.5: + dependencies: + '@babel/core': 7.14.5 + '@babel/helper-plugin-utils': 7.14.5 + dev: false + engines: + node: '>=6.9.0' + optional: true + peerDependencies: + '@babel/core': ^7.0.0-0 + resolution: + integrity: sha512-Tl7LWdr6HUxTmzQtzuU14SqbgrSKmaR77M0OKyq4njZLQTPfOvzblNKyNkGwOfEFCEx7KeYHQHDI0P3F02IVkA== /@babel/plugin-transform-property-literals/7.14.5_@babel+core@7.14.3: dependencies: '@babel/core': 7.14.3 @@ -1534,6 +1814,18 @@ packages: '@babel/core': ^7.0.0-0 resolution: integrity: sha512-r1uilDthkgXW8Z1vJz2dKYLV1tuw2xsbrp3MrZmD99Wh9vsfKoob+JTgri5VUb/JqyKRXotlOtwgu4stIYCmnw== + /@babel/plugin-transform-property-literals/7.14.5_@babel+core@7.14.5: + dependencies: + '@babel/core': 7.14.5 + '@babel/helper-plugin-utils': 7.14.5 + dev: false + engines: + node: '>=6.9.0' + optional: true + peerDependencies: + '@babel/core': ^7.0.0-0 + resolution: + integrity: sha512-r1uilDthkgXW8Z1vJz2dKYLV1tuw2xsbrp3MrZmD99Wh9vsfKoob+JTgri5VUb/JqyKRXotlOtwgu4stIYCmnw== /@babel/plugin-transform-react-constant-elements/7.14.5_@babel+core@7.14.3: dependencies: '@babel/core': 7.14.3 @@ -1556,6 +1848,17 @@ packages: '@babel/core': ^7.0.0-0 resolution: integrity: sha512-07aqY1ChoPgIxsuDviptRpVkWCSbXWmzQqcgy65C6YSFOfPFvb/DX3bBRHh7pCd/PMEEYHYWUTSVkCbkVainYQ== + /@babel/plugin-transform-react-display-name/7.14.5_@babel+core@7.14.5: + dependencies: + '@babel/core': 7.14.5 + '@babel/helper-plugin-utils': 7.14.5 + dev: false + engines: + node: '>=6.9.0' + peerDependencies: + '@babel/core': ^7.0.0-0 + resolution: + integrity: sha512-07aqY1ChoPgIxsuDviptRpVkWCSbXWmzQqcgy65C6YSFOfPFvb/DX3bBRHh7pCd/PMEEYHYWUTSVkCbkVainYQ== /@babel/plugin-transform-react-jsx-development/7.14.5_@babel+core@7.14.3: dependencies: '@babel/core': 7.14.3 @@ -1567,6 +1870,17 @@ packages: '@babel/core': ^7.0.0-0 resolution: integrity: sha512-rdwG/9jC6QybWxVe2UVOa7q6cnTpw8JRRHOxntG/h6g/guAOe6AhtQHJuJh5FwmnXIT1bdm5vC2/5huV8ZOorQ== + /@babel/plugin-transform-react-jsx-development/7.14.5_@babel+core@7.14.5: + dependencies: + '@babel/core': 7.14.5 + '@babel/plugin-transform-react-jsx': 7.14.5_@babel+core@7.14.5 + dev: false + engines: + node: '>=6.9.0' + peerDependencies: + '@babel/core': ^7.0.0-0 + resolution: + integrity: sha512-rdwG/9jC6QybWxVe2UVOa7q6cnTpw8JRRHOxntG/h6g/guAOe6AhtQHJuJh5FwmnXIT1bdm5vC2/5huV8ZOorQ== /@babel/plugin-transform-react-jsx/7.14.5_@babel+core@7.14.3: dependencies: '@babel/core': 7.14.3 @@ -1582,6 +1896,21 @@ packages: '@babel/core': ^7.0.0-0 resolution: integrity: sha512-7RylxNeDnxc1OleDm0F5Q/BSL+whYRbOAR+bwgCxIr0L32v7UFh/pz1DLMZideAUxKT6eMoS2zQH6fyODLEi8Q== + /@babel/plugin-transform-react-jsx/7.14.5_@babel+core@7.14.5: + dependencies: + '@babel/core': 7.14.5 + '@babel/helper-annotate-as-pure': 7.14.5 + '@babel/helper-module-imports': 7.14.5 + '@babel/helper-plugin-utils': 7.14.5 + '@babel/plugin-syntax-jsx': 7.14.5_@babel+core@7.14.5 + '@babel/types': 7.14.5 + dev: false + engines: + node: '>=6.9.0' + peerDependencies: + '@babel/core': ^7.0.0-0 + resolution: + integrity: sha512-7RylxNeDnxc1OleDm0F5Q/BSL+whYRbOAR+bwgCxIr0L32v7UFh/pz1DLMZideAUxKT6eMoS2zQH6fyODLEi8Q== /@babel/plugin-transform-react-pure-annotations/7.14.5_@babel+core@7.14.3: dependencies: '@babel/core': 7.14.3 @@ -1594,6 +1923,18 @@ packages: '@babel/core': ^7.0.0-0 resolution: integrity: sha512-3X4HpBJimNxW4rhUy/SONPyNQHp5YRr0HhJdT2OH1BRp0of7u3Dkirc7x9FRJMKMqTBI079VZ1hzv7Ouuz///g== + /@babel/plugin-transform-react-pure-annotations/7.14.5_@babel+core@7.14.5: + dependencies: + '@babel/core': 7.14.5 + '@babel/helper-annotate-as-pure': 7.14.5 + '@babel/helper-plugin-utils': 7.14.5 + dev: false + engines: + node: '>=6.9.0' + peerDependencies: + '@babel/core': ^7.0.0-0 + resolution: + integrity: sha512-3X4HpBJimNxW4rhUy/SONPyNQHp5YRr0HhJdT2OH1BRp0of7u3Dkirc7x9FRJMKMqTBI079VZ1hzv7Ouuz///g== /@babel/plugin-transform-regenerator/7.14.5_@babel+core@7.14.3: dependencies: '@babel/core': 7.14.3 @@ -1627,6 +1968,18 @@ packages: '@babel/core': ^7.0.0-0 resolution: integrity: sha512-xLucks6T1VmGsTB+GWK5Pl9Jl5+nRXD1uoFdA5TSO6xtiNjtXTjKkmPdFXVLGlK5A2/or/wQMKfmQ2Y0XJfn5g== + /@babel/plugin-transform-shorthand-properties/7.14.5_@babel+core@7.14.5: + dependencies: + '@babel/core': 7.14.5 + '@babel/helper-plugin-utils': 7.14.5 + dev: false + engines: + node: '>=6.9.0' + optional: true + peerDependencies: + '@babel/core': ^7.0.0-0 + resolution: + integrity: sha512-xLucks6T1VmGsTB+GWK5Pl9Jl5+nRXD1uoFdA5TSO6xtiNjtXTjKkmPdFXVLGlK5A2/or/wQMKfmQ2Y0XJfn5g== /@babel/plugin-transform-spread/7.14.5_@babel+core@7.14.3: dependencies: '@babel/core': 7.14.3 @@ -1639,6 +1992,19 @@ packages: '@babel/core': ^7.0.0-0 resolution: integrity: sha512-/3iqoQdiWergnShZYl0xACb4ADeYCJ7X/RgmwtXshn6cIvautRPAFzhd58frQlokLO6Jb4/3JXvmm6WNTPtiTw== + /@babel/plugin-transform-spread/7.14.5_@babel+core@7.14.5: + dependencies: + '@babel/core': 7.14.5 + '@babel/helper-plugin-utils': 7.14.5 + '@babel/helper-skip-transparent-expression-wrappers': 7.14.5 + dev: false + engines: + node: '>=6.9.0' + optional: true + peerDependencies: + '@babel/core': ^7.0.0-0 + resolution: + integrity: sha512-/3iqoQdiWergnShZYl0xACb4ADeYCJ7X/RgmwtXshn6cIvautRPAFzhd58frQlokLO6Jb4/3JXvmm6WNTPtiTw== /@babel/plugin-transform-sticky-regex/7.14.5_@babel+core@7.14.3: dependencies: '@babel/core': 7.14.3 @@ -1661,6 +2027,18 @@ packages: '@babel/core': ^7.0.0-0 resolution: integrity: sha512-22btZeURqiepOfuy/VkFr+zStqlujWaarpMErvay7goJS6BWwdd6BY9zQyDLDa4x2S3VugxFb162IZ4m/S/+Gg== + /@babel/plugin-transform-template-literals/7.14.5_@babel+core@7.14.5: + dependencies: + '@babel/core': 7.14.5 + '@babel/helper-plugin-utils': 7.14.5 + dev: false + engines: + node: '>=6.9.0' + optional: true + peerDependencies: + '@babel/core': ^7.0.0-0 + resolution: + integrity: sha512-22btZeURqiepOfuy/VkFr+zStqlujWaarpMErvay7goJS6BWwdd6BY9zQyDLDa4x2S3VugxFb162IZ4m/S/+Gg== /@babel/plugin-transform-typeof-symbol/7.14.5_@babel+core@7.14.3: dependencies: '@babel/core': 7.14.3 @@ -1791,12 +2169,12 @@ packages: '@babel/core': ^7.0.0-0 resolution: integrity: sha512-ci6TsS0bjrdPpWGnQ+m4f+JSSzDKlckqKIJJt9UZ/+g7Zz9k0N8lYU8IeLg/01o2h8LyNZDMLGgRLDTxpudLsA== - /@babel/preset-flow/7.14.5_@babel+core@7.14.3: + /@babel/preset-flow/7.14.5_@babel+core@7.14.5: dependencies: - '@babel/core': 7.14.3 + '@babel/core': 7.14.5 '@babel/helper-plugin-utils': 7.14.5 '@babel/helper-validator-option': 7.14.5 - '@babel/plugin-transform-flow-strip-types': 7.14.5_@babel+core@7.14.3 + '@babel/plugin-transform-flow-strip-types': 7.14.5_@babel+core@7.14.5 dev: false engines: node: '>=6.9.0' @@ -1833,6 +2211,22 @@ packages: '@babel/core': ^7.0.0-0 resolution: integrity: sha512-XFxBkjyObLvBaAvkx1Ie95Iaq4S/GUEIrejyrntQ/VCMKUYvKLoyKxOBzJ2kjA3b6rC9/KL6KXfDC2GqvLiNqQ== + /@babel/preset-react/7.14.5_@babel+core@7.14.5: + dependencies: + '@babel/core': 7.14.5 + '@babel/helper-plugin-utils': 7.14.5 + '@babel/helper-validator-option': 7.14.5 + '@babel/plugin-transform-react-display-name': 7.14.5_@babel+core@7.14.5 + '@babel/plugin-transform-react-jsx': 7.14.5_@babel+core@7.14.5 + '@babel/plugin-transform-react-jsx-development': 7.14.5_@babel+core@7.14.5 + '@babel/plugin-transform-react-pure-annotations': 7.14.5_@babel+core@7.14.5 + dev: false + engines: + node: '>=6.9.0' + peerDependencies: + '@babel/core': ^7.0.0-0 + resolution: + integrity: sha512-XFxBkjyObLvBaAvkx1Ie95Iaq4S/GUEIrejyrntQ/VCMKUYvKLoyKxOBzJ2kjA3b6rC9/KL6KXfDC2GqvLiNqQ== /@babel/preset-typescript/7.14.5_@babel+core@7.14.3: dependencies: '@babel/core': 7.14.3 @@ -1894,8 +2288,8 @@ packages: '@babel/generator': 7.14.5 '@babel/helper-function-name': 7.14.5 '@babel/helper-split-export-declaration': 7.14.5 - '@babel/parser': 7.12.16 - '@babel/types': 7.12.13 + '@babel/parser': 7.14.5 + '@babel/types': 7.14.5 debug: 4.3.1 globals: 11.12.0 lodash: 4.17.21 @@ -2203,6 +2597,20 @@ packages: dev: false resolution: integrity: sha512-NaT4UacjOwca8qCG/gv8k+DgTcWu49xlrvdhr/p8PTFnoS8e3aMWqjI3znFME5Txa/QWXDrg2/heufIUue9rtw== + /@ethersproject/abi/5.3.1: + dependencies: + '@ethersproject/address': 5.3.0 + '@ethersproject/bignumber': 5.3.0 + '@ethersproject/bytes': 5.3.0 + '@ethersproject/constants': 5.3.0 + '@ethersproject/hash': 5.3.0 + '@ethersproject/keccak256': 5.3.0 + '@ethersproject/logger': 5.3.0 + '@ethersproject/properties': 5.3.0 + '@ethersproject/strings': 5.3.0 + dev: false + resolution: + integrity: sha512-F98FWTJG7nWWAQ4DcV6R0cSlrj67MWK3ylahuFbzkumem5cLWg1p7fZ3vIdRoS1c7TEf55Lvyx0w7ICR47IImw== /@ethersproject/abstract-provider/5.3.0: dependencies: '@ethersproject/bignumber': 5.3.0 @@ -2348,6 +2756,12 @@ packages: dev: false resolution: integrity: sha512-XGbD9MMgqrR7SYz8o6xVgdG+25v7YT5vQG8ZdlcLj2I7elOBM7VNeQrnxfSN7rWQNcqu2z80OM29gGbQz+4Low== + /@ethersproject/networks/5.3.1: + dependencies: + '@ethersproject/logger': 5.3.0 + dev: false + resolution: + integrity: sha512-6uQKHkYChlsfeiZhQ8IHIqGE/sQsf25o9ZxAYpMxi15dLPzz3IxOEF5KiSD32aHwsjXVBKBSlo+teAXLlYJybw== /@ethersproject/pbkdf2/5.3.0: dependencies: '@ethersproject/bytes': 5.3.0 @@ -2385,6 +2799,30 @@ packages: dev: false resolution: integrity: sha512-HtL+DEbzPcRyfrkrMay7Rk/4he+NbUpzI/wHXP4Cqtra82nQOnqqCgTQc4HbdDrl75WVxG/JRMFhyneIPIMZaA== + /@ethersproject/providers/5.3.1: + dependencies: + '@ethersproject/abstract-provider': 5.3.0 + '@ethersproject/abstract-signer': 5.3.0 + '@ethersproject/address': 5.3.0 + '@ethersproject/basex': 5.3.0 + '@ethersproject/bignumber': 5.3.0 + '@ethersproject/bytes': 5.3.0 + '@ethersproject/constants': 5.3.0 + '@ethersproject/hash': 5.3.0 + '@ethersproject/logger': 5.3.0 + '@ethersproject/networks': 5.3.0 + '@ethersproject/properties': 5.3.0 + '@ethersproject/random': 5.3.0 + '@ethersproject/rlp': 5.3.0 + '@ethersproject/sha2': 5.3.0 + '@ethersproject/strings': 5.3.0 + '@ethersproject/transactions': 5.3.0 + '@ethersproject/web': 5.3.0 + bech32: 1.1.4 + ws: 7.4.6 + dev: false + resolution: + integrity: sha512-HC63vENTrur6/JKEhcQbA8PRDj1FAesdpX98IW+xAAo3EAkf70ou5fMIA3KCGzJDLNTeYA4C2Bonz849tVLekg== /@ethersproject/random/5.3.0: dependencies: '@ethersproject/bytes': 5.3.0 @@ -3066,7 +3504,7 @@ packages: graphql: ^14.0.0 || ^15.0.0 resolution: integrity: sha512-0C7PNkS7v7iAc001m7c1LPm5FUB0/DYw+s3OyCii6YYYHY8NwdI0roeOyeDGFJkFubWBQfjc3hoSyueKtU73mw== - /@graphql-tools/url-loader/6.10.1_4fb681aa39537ec5a769d863f0257980: + /@graphql-tools/url-loader/6.10.1_f13c9e2093815f5f87900d0957cb36be: dependencies: '@graphql-tools/delegate': 7.1.5_graphql@15.5.0 '@graphql-tools/utils': 7.10.0_graphql@15.5.0 @@ -3082,7 +3520,7 @@ packages: is-promise: 4.0.0 isomorphic-ws: 4.0.1_ws@7.4.5 lodash: 4.17.21 - meros: 1.1.4_@types+node@14.17.2 + meros: 1.1.4_@types+node@14.17.3 subscriptions-transport-ws: 0.9.19_graphql@15.5.0 sync-fetch: 0.3.0 tslib: 2.2.0 @@ -3193,9 +3631,9 @@ packages: dev: false resolution: integrity: sha512-tFJlT47db0kMqVm3H4nQYgn6Pwg10GTZHb1pwmSiv1K4ks6drQOtfEF5ZnPjkvC+y4/bUPHK+bc87QvLcL+WMw== - /@hookform/resolvers/1.3.7_react-hook-form@6.15.7: + /@hookform/resolvers/1.3.7_react-hook-form@6.15.8: dependencies: - react-hook-form: 6.15.7_react@17.0.2 + react-hook-form: 6.15.8_react@17.0.2 dev: false peerDependencies: react-hook-form: '>=6.6.0' @@ -3618,14 +4056,14 @@ packages: optional: true resolution: integrity: sha512-swKHYCOZUGyVt4ge0u8a7AwNcA//h4nx5wIi0sruGye1IJ5Cva0GyK9L2/WdX+kWVTKp92ZiEo1df31lrWGPgA== - /@material-ui/core/4.11.4_e84af7742d25ac89b84cf59d2816ddf6: + /@material-ui/core/4.11.4_7a759d72fcbc11ce03c9de110c21df82: dependencies: '@babel/runtime': 7.14.5 - '@material-ui/styles': 4.11.4_e84af7742d25ac89b84cf59d2816ddf6 - '@material-ui/system': 4.11.3_e84af7742d25ac89b84cf59d2816ddf6 - '@material-ui/types': 5.1.0_@types+react@17.0.9 + '@material-ui/styles': 4.11.4_7a759d72fcbc11ce03c9de110c21df82 + '@material-ui/system': 4.11.3_7a759d72fcbc11ce03c9de110c21df82 + '@material-ui/types': 5.1.0_@types+react@17.0.11 '@material-ui/utils': 4.11.2_react-dom@17.0.2+react@17.0.2 - '@types/react': 17.0.9 + '@types/react': 17.0.11 '@types/react-transition-group': 4.4.1 clsx: 1.1.1 hoist-non-react-statics: 3.3.2 @@ -3647,11 +4085,11 @@ packages: optional: true resolution: integrity: sha512-oqb+lJ2Dl9HXI9orc6/aN8ZIAMkeThufA5iZELf2LQeBn2NtjVilF5D2w7e9RpntAzDb4jK5DsVhkfOvFY/8fg== - /@material-ui/icons/4.11.2_083feab47dc0d33e56a0783af158b52a: + /@material-ui/icons/4.11.2_5e14cec25e1ceef8d08e6ab1e0c4cb05: dependencies: '@babel/runtime': 7.14.5 - '@material-ui/core': 4.11.4_e84af7742d25ac89b84cf59d2816ddf6 - '@types/react': 17.0.9 + '@material-ui/core': 4.11.4_7a759d72fcbc11ce03c9de110c21df82 + '@types/react': 17.0.11 react: 17.0.2 react-dom: 17.0.2_react@17.0.2 dev: false @@ -3667,12 +4105,12 @@ packages: optional: true resolution: integrity: sha512-fQNsKX2TxBmqIGJCSi3tGTO/gZ+eJgWmMJkgDiOfyNaunNaxcklJQFaFogYcFl0qFuaEz1qaXYXboa/bUXVSOQ== - /@material-ui/lab/4.0.0-alpha.58_083feab47dc0d33e56a0783af158b52a: + /@material-ui/lab/4.0.0-alpha.58_5e14cec25e1ceef8d08e6ab1e0c4cb05: dependencies: '@babel/runtime': 7.14.5 - '@material-ui/core': 4.11.4_e84af7742d25ac89b84cf59d2816ddf6 + '@material-ui/core': 4.11.4_7a759d72fcbc11ce03c9de110c21df82 '@material-ui/utils': 4.11.2_react-dom@17.0.2+react@17.0.2 - '@types/react': 17.0.9 + '@types/react': 17.0.11 clsx: 1.1.1 prop-types: 15.7.2 react: 17.0.2 @@ -3695,7 +4133,7 @@ packages: dependencies: '@babel/runtime': 7.14.5 '@date-io/core': 1.3.13 - '@material-ui/core': 4.11.4_e84af7742d25ac89b84cf59d2816ddf6 + '@material-ui/core': 4.11.4_7a759d72fcbc11ce03c9de110c21df82 '@types/styled-jsx': 2.2.8 clsx: 1.1.1 react: 17.0.2 @@ -3710,13 +4148,13 @@ packages: react-dom: ^16.8.0 || ^17.0.0 resolution: integrity: sha512-hS4pxwn1ZGXVkmgD4tpFpaumUaAg2ZzbTrxltfC5yPw4BJV+mGkfnQOB4VpWEYZw2jv65Z0wLwDE/piQiPPZ3w== - /@material-ui/styles/4.11.4_e84af7742d25ac89b84cf59d2816ddf6: + /@material-ui/styles/4.11.4_7a759d72fcbc11ce03c9de110c21df82: dependencies: '@babel/runtime': 7.14.5 '@emotion/hash': 0.8.0 - '@material-ui/types': 5.1.0_@types+react@17.0.9 + '@material-ui/types': 5.1.0_@types+react@17.0.11 '@material-ui/utils': 4.11.2_react-dom@17.0.2+react@17.0.2 - '@types/react': 17.0.9 + '@types/react': 17.0.11 clsx: 1.1.1 csstype: 2.6.17 hoist-non-react-statics: 3.3.2 @@ -3743,11 +4181,11 @@ packages: optional: true resolution: integrity: sha512-KNTIZcnj/zprG5LW0Sao7zw+yG3O35pviHzejMdcSGCdWbiO8qzRgOYL8JAxAsWBKOKYwVZxXtHWaB5T2Kvxew== - /@material-ui/system/4.11.3_e84af7742d25ac89b84cf59d2816ddf6: + /@material-ui/system/4.11.3_7a759d72fcbc11ce03c9de110c21df82: dependencies: '@babel/runtime': 7.14.5 '@material-ui/utils': 4.11.2_react-dom@17.0.2+react@17.0.2 - '@types/react': 17.0.9 + '@types/react': 17.0.11 csstype: 2.6.17 prop-types: 15.7.2 react: 17.0.2 @@ -3764,9 +4202,9 @@ packages: optional: true resolution: integrity: sha512-SY7otguNGol41Mu2Sg6KbBP1ZRFIbFLHGK81y4KYbsV2yIcaEPOmsCK6zwWlp+2yTV3J/VwT6oSBARtGIVdXPw== - /@material-ui/types/5.1.0_@types+react@17.0.9: + /@material-ui/types/5.1.0_@types+react@17.0.11: dependencies: - '@types/react': 17.0.9 + '@types/react': 17.0.11 dev: false peerDependencies: '@types/react': '*' @@ -3876,7 +4314,7 @@ packages: nodemailer: ^6.4.6 resolution: integrity: sha512-Iyt3wEuJW4rNnEU71zKNqVap9qj+q6s21JXlSmhV2j3sq5CQcCRELAnw+itg650UYF4KiYH5O4ZR+TvKgYZyVw== - /@nestjs/cli/7.6.0_webpack-cli@4.7.0: + /@nestjs/cli/7.6.0_webpack-cli@4.7.2: dependencies: '@angular-devkit/core': 11.2.6 '@angular-devkit/schematics': 11.2.6 @@ -3897,7 +4335,7 @@ packages: tsconfig-paths: 3.9.0 tsconfig-paths-webpack-plugin: 3.5.1 typescript: 4.2.3 - webpack: 5.28.0_webpack-cli@4.7.0 + webpack: 5.28.0_webpack-cli@4.7.2 webpack-node-externals: 2.5.2 dev: false engines: @@ -4463,12 +4901,12 @@ packages: dev: false resolution: integrity: sha512-leqEwfs8GlrPDrVcVc8Hv6LJ62ZzR0RgjwQNCkpT6H5jW9RB8YdR0a3inHoricSvw+sKI1b1hOqsCtPPZNnhng== - /@openzeppelin/truffle-upgrades/1.7.0_truffle@5.3.9: + /@openzeppelin/truffle-upgrades/1.7.0_truffle@5.3.10: dependencies: '@openzeppelin/upgrades-core': 1.7.6 '@truffle/contract': 4.3.19 solidity-ast: 0.4.25 - truffle: 5.3.9_@types+node@14.17.2+react@17.0.2 + truffle: 5.3.10_@types+node@14.17.3+react@17.0.2 dev: false hasBin: true peerDependencies: @@ -4518,8 +4956,8 @@ packages: react-refresh: 0.8.3 schema-utils: 2.7.1 source-map: 0.7.3 - webpack: 4.46.0_webpack-cli@4.7.0 - webpack-dev-server: 3.11.2_webpack-cli@4.7.0+webpack@5.38.1 + webpack: 4.46.0_webpack-cli@4.7.2 + webpack-dev-server: 3.11.2_webpack-cli@4.7.2+webpack@5.38.1 dev: false engines: node: '>= 10.x' @@ -4668,15 +5106,25 @@ packages: dev: false resolution: integrity: sha512-afmTuJrylUU/0OtqzaRkbyYFFNgCF73Bvel/sw90pvGrWIZ+vyoIJqA6eMSoA6+nb443kTmulmBtC9NerXboNg== - /@reduxjs/toolkit/1.5.1: + /@reduxjs/toolkit/1.6.0_react-redux@7.2.4+react@17.0.2: dependencies: - immer: 8.0.4 + immer: 9.0.3 + react: 17.0.2 + react-redux: 7.2.4_react-dom@17.0.2+react@17.0.2 redux: 4.1.0 redux-thunk: 2.3.0 reselect: 4.0.0 dev: false + peerDependencies: + react: ^16.14.0 || ^17.0.0 + react-redux: ^7.2.1 + peerDependenciesMeta: + react: + optional: true + react-redux: + optional: true resolution: - integrity: sha512-PngZKuwVZsd+mimnmhiOQzoD0FiMjqVks6ituO1//Ft5UEX5Ca9of13NEjo//pU22Jk7z/mdXVsmDfgsig1osA== + integrity: sha512-eGL50G+Vj5AG5uD0lineb6rRtbs96M8+hxbcwkHpZ8LQcmt0Bm33WyBSnj5AweLkjQ7ZP+KFRDHiLMznljRQ3A== /@repeaterjs/repeater/3.0.4: dev: false optional: true @@ -4712,23 +5160,6 @@ packages: dev: false resolution: integrity: sha512-u5/HUkvo8q34AA+hnxxqqXGfby5swnH0Myw91o3Sm2TETJlNKXibFGSKBavAH+wvWdBi4Z5gS2Odu0PowgVOUg== - /@samverschueren/stream-to-observable/0.3.1_rxjs@6.6.7: - dependencies: - any-observable: 0.3.0 - rxjs: 6.6.7 - dev: false - engines: - node: '>=6' - peerDependencies: - rxjs: '*' - zen-observable: '*' - peerDependenciesMeta: - rxjs: - optional: true - zen-observable: - optional: true - resolution: - integrity: sha512-c/qwwcHyafOQuVQJj0IlBjf5yYgBI7YPJ77k4fOJYesb41jio65eaJODRUmfYKhTOFBrIZ66kgvGPlNbjuoRdQ== /@schematics/schematics/0.1102.6: dependencies: '@angular-devkit/core': 11.2.6 @@ -4798,12 +5229,12 @@ packages: dev: false resolution: integrity: sha512-O3uyB/JbkAEMZaP3YqyHH7TMnex7tWyCbCI4EfJdOCoN6HIhqdJBWTM6aCCiWQ/5f5wxjgU735QAIpJbjDvmzg== - /@storybook/addon-actions/6.2.9_e84af7742d25ac89b84cf59d2816ddf6: + /@storybook/addon-actions/6.2.9_7a759d72fcbc11ce03c9de110c21df82: dependencies: '@storybook/addons': 6.2.9_react-dom@17.0.2+react@17.0.2 '@storybook/api': 6.2.9_react-dom@17.0.2+react@17.0.2 '@storybook/client-api': 6.2.9_react-dom@17.0.2+react@17.0.2 - '@storybook/components': 6.2.9_e84af7742d25ac89b84cf59d2816ddf6 + '@storybook/components': 6.2.9_7a759d72fcbc11ce03c9de110c21df82 '@storybook/core-events': 6.2.9 '@storybook/theming': 6.2.9_react-dom@17.0.2+react@17.0.2 core-js: 3.14.0 @@ -4831,12 +5262,12 @@ packages: optional: true resolution: integrity: sha512-CkUYSMt+fvuHfWvtDzlhhaeQBCWlUo99xdL88JTsTml05P43bIHZNIRv2QJ8DwhHuxdIPeHKLmz9y/ymOagOnw== - /@storybook/addon-backgrounds/6.2.9_e84af7742d25ac89b84cf59d2816ddf6: + /@storybook/addon-backgrounds/6.2.9_7a759d72fcbc11ce03c9de110c21df82: dependencies: '@storybook/addons': 6.2.9_react-dom@17.0.2+react@17.0.2 '@storybook/api': 6.2.9_react-dom@17.0.2+react@17.0.2 '@storybook/client-logger': 6.2.9 - '@storybook/components': 6.2.9_e84af7742d25ac89b84cf59d2816ddf6 + '@storybook/components': 6.2.9_7a759d72fcbc11ce03c9de110c21df82 '@storybook/core-events': 6.2.9 '@storybook/theming': 6.2.9_react-dom@17.0.2+react@17.0.2 core-js: 3.14.0 @@ -4859,12 +5290,12 @@ packages: optional: true resolution: integrity: sha512-oPSdeoUuvaXshY5sQRagbYXpr6ZEVUuLhGYBnZTlvm19QMeNCXQE+rdlgzcgyafq4mc1FI/udE2MpJ1dhfS6pQ== - /@storybook/addon-controls/6.2.9_e84af7742d25ac89b84cf59d2816ddf6: + /@storybook/addon-controls/6.2.9_7a759d72fcbc11ce03c9de110c21df82: dependencies: '@storybook/addons': 6.2.9_react-dom@17.0.2+react@17.0.2 '@storybook/api': 6.2.9_react-dom@17.0.2+react@17.0.2 '@storybook/client-api': 6.2.9_react-dom@17.0.2+react@17.0.2 - '@storybook/components': 6.2.9_e84af7742d25ac89b84cf59d2816ddf6 + '@storybook/components': 6.2.9_7a759d72fcbc11ce03c9de110c21df82 '@storybook/node-logger': 6.2.9 '@storybook/theming': 6.2.9_react-dom@17.0.2+react@17.0.2 core-js: 3.14.0 @@ -4883,7 +5314,7 @@ packages: optional: true resolution: integrity: sha512-NvXAJ7I5U4CLxv4wL3/Ne9rehJlgnSmQlLIG/z6dg5zm7JIb48LT4IY6GzjlUP5LkjmO9KJ8gJC249uRt2iPBQ== - /@storybook/addon-docs/6.2.9_199fb04b2e15bb238d2903937c2906f1: + /@storybook/addon-docs/6.2.9_ca82651a63579ef59a2d81093319fd32: dependencies: '@babel/core': 7.14.3 '@babel/generator': 7.14.5 @@ -4896,11 +5327,11 @@ packages: '@mdx-js/react': 1.6.22_react@17.0.2 '@storybook/addons': 6.2.9_react-dom@17.0.2+react@17.0.2 '@storybook/api': 6.2.9_react-dom@17.0.2+react@17.0.2 - '@storybook/builder-webpack4': 6.2.9_077bdc27ae83b737f7b6bfd0355b9e23 + '@storybook/builder-webpack4': 6.2.9_2210ceb2ee9eb209454cfe6233d4be41 '@storybook/client-api': 6.2.9_react-dom@17.0.2+react@17.0.2 '@storybook/client-logger': 6.2.9 - '@storybook/components': 6.2.9_e84af7742d25ac89b84cf59d2816ddf6 - '@storybook/core': 6.2.9_4817f72850fcbddb2dfa0f2d28a90805 + '@storybook/components': 6.2.9_7a759d72fcbc11ce03c9de110c21df82 + '@storybook/core': 6.2.9_c722effe310988a755ba01470f1ae8b2 '@storybook/core-events': 6.2.9 '@storybook/csf': 0.0.1 '@storybook/node-logger': 6.2.9 @@ -4910,7 +5341,7 @@ packages: acorn: 7.4.1 acorn-jsx: 5.3.1_acorn@7.4.1 acorn-walk: 7.2.0 - babel-loader: 8.2.2_56c0991c8a79bd1374c11f7f6fc4baef + babel-loader: 8.2.2_be4b5a2e27f85c129e0cacc759b45f7c core-js: 3.14.0 doctrine: 3.0.0 escodegen: 2.0.0 @@ -4930,7 +5361,7 @@ packages: remark-slug: 6.0.0 ts-dedent: 2.1.1 util-deprecate: 1.0.2 - webpack: 5.38.1_webpack-cli@4.7.0 + webpack: 5.38.1_webpack-cli@4.7.2 dev: false peerDependencies: '@storybook/angular': 6.2.9 @@ -4967,25 +5398,25 @@ packages: optional: true resolution: integrity: sha512-qOtwgiqI3LMqT0eXYNV6ykp7qSu0LQGeXxy3wOBGuDDqAizfgnAjomYEWGFcyKp5ahV7HCRCjxbixAklFPUmyw== - /@storybook/addon-essentials/6.2.9_ea31b9882ac15eede8e67c6721f5683e: - dependencies: - '@babel/core': 7.14.3 - '@storybook/addon-actions': 6.2.9_e84af7742d25ac89b84cf59d2816ddf6 - '@storybook/addon-backgrounds': 6.2.9_e84af7742d25ac89b84cf59d2816ddf6 - '@storybook/addon-controls': 6.2.9_e84af7742d25ac89b84cf59d2816ddf6 - '@storybook/addon-docs': 6.2.9_199fb04b2e15bb238d2903937c2906f1 - '@storybook/addon-toolbars': 6.2.9_e84af7742d25ac89b84cf59d2816ddf6 - '@storybook/addon-viewport': 6.2.9_e84af7742d25ac89b84cf59d2816ddf6 + /@storybook/addon-essentials/6.2.9_01d0931451e469ab60d8d92681c8fdb8: + dependencies: + '@babel/core': 7.14.5 + '@storybook/addon-actions': 6.2.9_7a759d72fcbc11ce03c9de110c21df82 + '@storybook/addon-backgrounds': 6.2.9_7a759d72fcbc11ce03c9de110c21df82 + '@storybook/addon-controls': 6.2.9_7a759d72fcbc11ce03c9de110c21df82 + '@storybook/addon-docs': 6.2.9_ca82651a63579ef59a2d81093319fd32 + '@storybook/addon-toolbars': 6.2.9_7a759d72fcbc11ce03c9de110c21df82 + '@storybook/addon-viewport': 6.2.9_7a759d72fcbc11ce03c9de110c21df82 '@storybook/addons': 6.2.9_react-dom@17.0.2+react@17.0.2 '@storybook/api': 6.2.9_react-dom@17.0.2+react@17.0.2 '@storybook/node-logger': 6.2.9 - babel-loader: 8.2.2_56c0991c8a79bd1374c11f7f6fc4baef + babel-loader: 8.2.2_be4b5a2e27f85c129e0cacc759b45f7c core-js: 3.14.0 react: 17.0.2 react-dom: 17.0.2_react@17.0.2 regenerator-runtime: 0.13.7 ts-dedent: 2.1.1 - webpack: 5.38.1_webpack-cli@4.7.0 + webpack: 5.38.1_webpack-cli@4.7.2 dev: false peerDependencies: '@babel/core': ^7.9.6 @@ -5035,12 +5466,12 @@ packages: optional: true resolution: integrity: sha512-pBiL6EUZI3c9qtCqnGx3RXF46kAxGMdo4xDC2y3mM132W//DzxkzLZRe4ZhxxGwaLzTNlNrypZ6Li6WyIaPZ/w== - /@storybook/addon-toolbars/6.2.9_e84af7742d25ac89b84cf59d2816ddf6: + /@storybook/addon-toolbars/6.2.9_7a759d72fcbc11ce03c9de110c21df82: dependencies: '@storybook/addons': 6.2.9_react-dom@17.0.2+react@17.0.2 '@storybook/api': 6.2.9_react-dom@17.0.2+react@17.0.2 '@storybook/client-api': 6.2.9_react-dom@17.0.2+react@17.0.2 - '@storybook/components': 6.2.9_e84af7742d25ac89b84cf59d2816ddf6 + '@storybook/components': 6.2.9_7a759d72fcbc11ce03c9de110c21df82 core-js: 3.14.0 react: 17.0.2 react-dom: 17.0.2_react@17.0.2 @@ -5056,12 +5487,12 @@ packages: optional: true resolution: integrity: sha512-4WjIofN5npBPNZ8v1UhzPeATB9RnAWRH/y1AVS1HB+zl6Ku92o7aOMqVxs8zR1oSSmtkHh/rcUcpATFKjuofdw== - /@storybook/addon-viewport/6.2.9_e84af7742d25ac89b84cf59d2816ddf6: + /@storybook/addon-viewport/6.2.9_7a759d72fcbc11ce03c9de110c21df82: dependencies: '@storybook/addons': 6.2.9_react-dom@17.0.2+react@17.0.2 '@storybook/api': 6.2.9_react-dom@17.0.2+react@17.0.2 '@storybook/client-logger': 6.2.9 - '@storybook/components': 6.2.9_e84af7742d25ac89b84cf59d2816ddf6 + '@storybook/components': 6.2.9_7a759d72fcbc11ce03c9de110c21df82 '@storybook/core-events': 6.2.9 '@storybook/theming': 6.2.9_react-dom@17.0.2+react@17.0.2 core-js: 3.14.0 @@ -5132,7 +5563,7 @@ packages: react-dom: ^16.8.0 || ^17.0.0 resolution: integrity: sha512-okkA3HAScE9tGnYBrjTOcgzT+L1lRHNoEh3ZfGgh1u/XNEyHGNkj4grvkd6nX7BzRcYQ/l2VkcKCqmOjUnSkVQ== - /@storybook/builder-webpack4/6.2.9_077bdc27ae83b737f7b6bfd0355b9e23: + /@storybook/builder-webpack4/6.2.9_2210ceb2ee9eb209454cfe6233d4be41: dependencies: '@babel/core': 7.14.3 '@babel/plugin-proposal-class-properties': 7.14.5_@babel+core@7.14.3 @@ -5161,14 +5592,14 @@ packages: '@storybook/channels': 6.2.9 '@storybook/client-api': 6.2.9_react-dom@17.0.2+react@17.0.2 '@storybook/client-logger': 6.2.9 - '@storybook/components': 6.2.9_e84af7742d25ac89b84cf59d2816ddf6 - '@storybook/core-common': 6.2.9_d0989d4d1f7b72012b7b043b706a8fd1 + '@storybook/components': 6.2.9_7a759d72fcbc11ce03c9de110c21df82 + '@storybook/core-common': 6.2.9_a6b6fca0d3ab2e31954006df1d8bec5d '@storybook/core-events': 6.2.9 '@storybook/node-logger': 6.2.9 '@storybook/router': 6.2.9_react-dom@17.0.2+react@17.0.2 '@storybook/semver': 7.3.2 '@storybook/theming': 6.2.9_react-dom@17.0.2+react@17.0.2 - '@storybook/ui': 6.2.9_e84af7742d25ac89b84cf59d2816ddf6 + '@storybook/ui': 6.2.9_7a759d72fcbc11ce03c9de110c21df82 '@types/node': 14.17.2 '@types/webpack': 4.41.29 autoprefixer: 9.8.6 @@ -5202,7 +5633,7 @@ packages: typescript: 4.3.2 url-loader: 4.1.1_file-loader@6.2.0+webpack@4.46.0 util-deprecate: 1.0.2 - webpack: 4.46.0_webpack-cli@4.7.0 + webpack: 4.46.0_webpack-cli@4.7.2 webpack-dev-middleware: 3.7.3_webpack@4.46.0 webpack-filter-warnings-plugin: 1.2.1_webpack@4.46.0 webpack-hot-middleware: 2.25.0 @@ -5274,7 +5705,7 @@ packages: dev: false resolution: integrity: sha512-IfOQZuvpjh66qBInQCJOb9S0dTGpzZ/Cxlcvokp+PYt95KztaWN3mPm+HaDQCeRsrWNe0Bpm1zuickcJ6dBOXg== - /@storybook/components/6.2.9_e84af7742d25ac89b84cf59d2816ddf6: + /@storybook/components/6.2.9_7a759d72fcbc11ce03c9de110c21df82: dependencies: '@popperjs/core': 2.9.2 '@storybook/client-logger': 6.2.9 @@ -5298,7 +5729,7 @@ packages: react-dom: 17.0.2_react@17.0.2 react-popper-tooltip: 3.1.1_react-dom@17.0.2+react@17.0.2 react-syntax-highlighter: 13.5.3_react@17.0.2 - react-textarea-autosize: 8.3.3_@types+react@17.0.9+react@17.0.2 + react-textarea-autosize: 8.3.3_189cc19b8edfe5959338b863f6e5c247 regenerator-runtime: 0.13.7 ts-dedent: 2.1.1 util-deprecate: 1.0.2 @@ -5309,7 +5740,7 @@ packages: react-dom: ^16.8.0 || ^17.0.0 resolution: integrity: sha512-hnV1MI2aB2g1sJ7NJphpxi7TwrMZQ/tpCJeHnkjmzyC6ez1MXqcBXGrEEdSXzRfAxjQTOEpu6H1mnns0xMP0Ag== - /@storybook/core-client/6.2.9_a41a80a32f5956143893a167f8ca26a9: + /@storybook/core-client/6.2.9_0221897efeff7026b5ce0505c69597e2: dependencies: '@storybook/addons': 6.2.9_react-dom@17.0.2+react@17.0.2 '@storybook/channel-postmessage': 6.2.9 @@ -5317,7 +5748,7 @@ packages: '@storybook/client-logger': 6.2.9 '@storybook/core-events': 6.2.9 '@storybook/csf': 0.0.1 - '@storybook/ui': 6.2.9_e84af7742d25ac89b84cf59d2816ddf6 + '@storybook/ui': 6.2.9_7a759d72fcbc11ce03c9de110c21df82 ansi-to-html: 0.6.15 core-js: 3.14.0 global: 4.4.0 @@ -5330,7 +5761,7 @@ packages: typescript: 4.3.2 unfetch: 4.2.0 util-deprecate: 1.0.2 - webpack: 5.38.1_webpack-cli@4.7.0 + webpack: 5.38.1_webpack-cli@4.7.2 dev: false peerDependencies: '@types/react': '*' @@ -5343,7 +5774,7 @@ packages: optional: true resolution: integrity: sha512-jW841J5lCe1Ub5ZMtzYPgCy/OUddFxxVYeHLZyuNxlH5RoiQQxbDpuFlzuZMYGuIzD6eZw+ANE4w5vW/y5oBfA== - /@storybook/core-client/6.2.9_ead067294abb60bdfbe2238dca81eb8b: + /@storybook/core-client/6.2.9_2c36a9d81f5222d356e4427e835e8463: dependencies: '@storybook/addons': 6.2.9_react-dom@17.0.2+react@17.0.2 '@storybook/channel-postmessage': 6.2.9 @@ -5351,7 +5782,7 @@ packages: '@storybook/client-logger': 6.2.9 '@storybook/core-events': 6.2.9 '@storybook/csf': 0.0.1 - '@storybook/ui': 6.2.9_e84af7742d25ac89b84cf59d2816ddf6 + '@storybook/ui': 6.2.9_7a759d72fcbc11ce03c9de110c21df82 ansi-to-html: 0.6.15 core-js: 3.14.0 global: 4.4.0 @@ -5364,7 +5795,7 @@ packages: typescript: 4.3.2 unfetch: 4.2.0 util-deprecate: 1.0.2 - webpack: 4.46.0_webpack-cli@4.7.0 + webpack: 4.46.0_webpack-cli@4.7.2 dev: false peerDependencies: '@types/react': '*' @@ -5377,7 +5808,7 @@ packages: optional: true resolution: integrity: sha512-jW841J5lCe1Ub5ZMtzYPgCy/OUddFxxVYeHLZyuNxlH5RoiQQxbDpuFlzuZMYGuIzD6eZw+ANE4w5vW/y5oBfA== - /@storybook/core-common/6.2.9_d0989d4d1f7b72012b7b043b706a8fd1: + /@storybook/core-common/6.2.9_a6b6fca0d3ab2e31954006df1d8bec5d: dependencies: '@babel/core': 7.14.3 '@babel/plugin-proposal-class-properties': 7.14.5_@babel+core@7.14.3 @@ -5429,7 +5860,7 @@ packages: ts-dedent: 2.1.1 typescript: 4.3.2 util-deprecate: 1.0.2 - webpack: 4.46.0_webpack-cli@4.7.0 + webpack: 4.46.0_webpack-cli@4.7.2 dev: false peerDependencies: react: ^16.8.0 || ^17.0.0 @@ -5447,19 +5878,19 @@ packages: dev: false resolution: integrity: sha512-xQmbX/oYQK1QsAGN8hriXX5SUKOoTUe3L4dVaVHxJqy7MReRWJpprJmCpbAPJzWS6WCbDFfCM5kVEexHLOzJlQ== - /@storybook/core-server/6.2.9_077bdc27ae83b737f7b6bfd0355b9e23: + /@storybook/core-server/6.2.9_2210ceb2ee9eb209454cfe6233d4be41: dependencies: '@babel/core': 7.14.3 '@babel/plugin-transform-template-literals': 7.14.5_@babel+core@7.14.3 '@babel/preset-react': 7.14.5_@babel+core@7.14.3 '@storybook/addons': 6.2.9_react-dom@17.0.2+react@17.0.2 - '@storybook/builder-webpack4': 6.2.9_077bdc27ae83b737f7b6bfd0355b9e23 - '@storybook/core-client': 6.2.9_ead067294abb60bdfbe2238dca81eb8b - '@storybook/core-common': 6.2.9_d0989d4d1f7b72012b7b043b706a8fd1 + '@storybook/builder-webpack4': 6.2.9_2210ceb2ee9eb209454cfe6233d4be41 + '@storybook/core-client': 6.2.9_2c36a9d81f5222d356e4427e835e8463 + '@storybook/core-common': 6.2.9_a6b6fca0d3ab2e31954006df1d8bec5d '@storybook/node-logger': 6.2.9 '@storybook/semver': 7.3.2 '@storybook/theming': 6.2.9_react-dom@17.0.2+react@17.0.2 - '@storybook/ui': 6.2.9_e84af7742d25ac89b84cf59d2816ddf6 + '@storybook/ui': 6.2.9_7a759d72fcbc11ce03c9de110c21df82 '@types/node': 14.17.2 '@types/node-fetch': 2.5.10 '@types/pretty-hrtime': 1.0.0 @@ -5502,7 +5933,7 @@ packages: typescript: 4.3.2 url-loader: 4.1.1_file-loader@6.2.0+webpack@4.46.0 util-deprecate: 1.0.2 - webpack: 4.46.0_webpack-cli@4.7.0 + webpack: 4.46.0_webpack-cli@4.7.2 webpack-dev-middleware: 3.7.3_webpack@4.46.0 webpack-virtual-modules: 0.2.2 dev: false @@ -5520,10 +5951,10 @@ packages: optional: true resolution: integrity: sha512-DzihO73pj1Ro0Y4tq9hjw2mLMUYeSRPrx7CndCOBxcTHCKQ8Kd7Dee3wJ49t5/19V7TW1+4lYR59GAy73FeOAQ== - /@storybook/core/6.2.9_3226d1ba4da67f080ccc99b46cb46346: + /@storybook/core/6.2.9_1bbae5798028cd55b157d38bd4a2ec91: dependencies: - '@storybook/core-client': 6.2.9_ead067294abb60bdfbe2238dca81eb8b - '@storybook/core-server': 6.2.9_077bdc27ae83b737f7b6bfd0355b9e23 + '@storybook/core-client': 6.2.9_2c36a9d81f5222d356e4427e835e8463 + '@storybook/core-server': 6.2.9_2210ceb2ee9eb209454cfe6233d4be41 react: 17.0.2 react-dom: 17.0.2_react@17.0.2 typescript: 4.3.2 @@ -5543,10 +5974,10 @@ packages: optional: true resolution: integrity: sha512-pzbyjWvj0t8m0kR2pC9GQne4sZn7Y/zfcbm6/31CL+yhzOQjfJEj3n4ZFUlxikXqQJPg1aWfypfyaeaLL0QyuA== - /@storybook/core/6.2.9_4817f72850fcbddb2dfa0f2d28a90805: + /@storybook/core/6.2.9_c722effe310988a755ba01470f1ae8b2: dependencies: - '@storybook/core-client': 6.2.9_a41a80a32f5956143893a167f8ca26a9 - '@storybook/core-server': 6.2.9_077bdc27ae83b737f7b6bfd0355b9e23 + '@storybook/core-client': 6.2.9_0221897efeff7026b5ce0505c69597e2 + '@storybook/core-server': 6.2.9_2210ceb2ee9eb209454cfe6233d4be41 react: 17.0.2 react-dom: 17.0.2_react@17.0.2 typescript: 4.3.2 @@ -5588,20 +6019,20 @@ packages: dev: false resolution: integrity: sha512-HjAjXZV+WItonC7lVrfrUsQuRFZNz1g1lE0GgsEK2LdC5rAcD/JwJxjiWREwY+RGxKL9rpWgqyxVQajpIJRjhA== - /@storybook/react/6.2.9_0073b97e156e04b8acd9f360329c9507: + /@storybook/react/6.2.9_ea84e963c2420e178a578d3944e78a07: dependencies: - '@babel/core': 7.14.3 - '@babel/preset-flow': 7.14.5_@babel+core@7.14.3 - '@babel/preset-react': 7.14.5_@babel+core@7.14.3 + '@babel/core': 7.14.5 + '@babel/preset-flow': 7.14.5_@babel+core@7.14.5 + '@babel/preset-react': 7.14.5_@babel+core@7.14.5 '@pmmmwh/react-refresh-webpack-plugin': 0.4.3_70dd929975a49d9c63e8cff6f966a4d3 '@storybook/addons': 6.2.9_react-dom@17.0.2+react@17.0.2 - '@storybook/core': 6.2.9_3226d1ba4da67f080ccc99b46cb46346 - '@storybook/core-common': 6.2.9_d0989d4d1f7b72012b7b043b706a8fd1 + '@storybook/core': 6.2.9_1bbae5798028cd55b157d38bd4a2ec91 + '@storybook/core-common': 6.2.9_a6b6fca0d3ab2e31954006df1d8bec5d '@storybook/node-logger': 6.2.9 '@storybook/semver': 7.3.2 '@types/webpack-env': 1.16.0 babel-plugin-add-react-displayname: 0.0.5 - babel-plugin-named-asset-import: 0.3.7_@babel+core@7.14.3 + babel-plugin-named-asset-import: 0.3.7_@babel+core@7.14.5 babel-plugin-react-docgen: 4.2.1 core-js: 3.14.0 global: 4.4.0 @@ -5616,7 +6047,7 @@ packages: regenerator-runtime: 0.13.7 ts-dedent: 2.1.1 typescript: 4.3.2 - webpack: 4.46.0_webpack-cli@4.7.0 + webpack: 4.46.0_webpack-cli@4.7.2 dev: false engines: node: '>=10.13.0' @@ -5708,14 +6139,14 @@ packages: react-dom: ^16.8.0 || ^17.0.0 resolution: integrity: sha512-183oJW7AD7Fhqg5NT4ct3GJntwteAb9jZnQ6yhf9JSdY+fk8OhxRbPf7ov0au2gYACcGrWDd9K5pYQsvWlP5gA== - /@storybook/ui/6.2.9_e84af7742d25ac89b84cf59d2816ddf6: + /@storybook/ui/6.2.9_7a759d72fcbc11ce03c9de110c21df82: dependencies: '@emotion/core': 10.1.1_react@17.0.2 '@storybook/addons': 6.2.9_react-dom@17.0.2+react@17.0.2 '@storybook/api': 6.2.9_react-dom@17.0.2+react@17.0.2 '@storybook/channels': 6.2.9 '@storybook/client-logger': 6.2.9 - '@storybook/components': 6.2.9_e84af7742d25ac89b84cf59d2816ddf6 + '@storybook/components': 6.2.9_7a759d72fcbc11ce03c9de110c21df82 '@storybook/core-events': 6.2.9 '@storybook/router': 6.2.9_react-dom@17.0.2+react@17.0.2 '@storybook/semver': 7.3.2 @@ -6172,6 +6603,22 @@ packages: dev: false resolution: integrity: sha512-+xBcn1mTAqBhVaFULkMC+pJnUp3prL9QZtE5I4XhlCar3QLkSGR9Oy+Bm5qZwH72rctBRD/lGp2ezUo/oFc2MQ== + /@truffle/codec/0.11.0: + dependencies: + big.js: 5.2.2 + bn.js: 5.2.0 + cbor: 5.2.0 + debug: 4.3.1 + lodash.clonedeep: 4.5.0 + lodash.escaperegexp: 4.1.2 + lodash.partition: 4.6.0 + lodash.sum: 4.0.2 + semver: 7.3.5 + utf8: 3.0.0 + web3-utils: 1.3.6 + dev: false + resolution: + integrity: sha512-iWrd+DhYC4nHAfFzfuuiRK86ebkM4IXH4DFW9owVtWR0esexE96tjFAfwEI/mGaJ+ml430P7ybpuDYmVPVKO9w== /@truffle/config/1.2.42: dependencies: '@truffle/error': 0.0.14 @@ -6213,7 +6660,7 @@ packages: dev: false resolution: integrity: sha512-asBwoxUePLwNAuYfHO/SvyZyqFQ9QMeUieJ6PXD9DBrUdNpjgJvk+WHYnXH4bWHgHakbTpL1MEBa1qmcAL+LMw== - /@truffle/db/0.5.14_@types+node@14.17.2+react@17.0.2: + /@truffle/db/0.5.15_@types+node@14.17.3+react@17.0.2: dependencies: '@truffle/abi-utils': 0.2.1 '@truffle/code-utils': 1.2.27 @@ -6223,7 +6670,7 @@ packages: fs-extra: 9.1.0 graphql: 15.5.0 graphql-tag: 2.12.4_graphql@15.5.0 - graphql-tools: 6.2.6_bf5e6b9f5a52791eced132b286dc3993 + graphql-tools: 6.2.6_68df62f78f9404c5fdf0c10dc6c90922 json-stable-stringify: 1.0.1 jsondown: 1.0.0 pascal-case: 2.0.1 @@ -6240,7 +6687,7 @@ packages: '@types/node': '*' react: '*' resolution: - integrity: sha512-rTRhRqPsG03Lv6y43n5CAZF9q40NK1D2VwqTI9xD7lU/klYYHtKklgWAIgqn4TmVS5tP2MGVNzgdr0tMzJQE0Q== + integrity: sha512-nA+gnWLX0lMFcZVBL4hJiO+YlI+AzQHO1BibneX4Sj/XCvwW+IGKp+koPYKE91cJKyRfdrtYPdsj3VwW/KkhqA== /@truffle/debug-utils/5.0.19: dependencies: '@truffle/codec': 0.10.9 @@ -6253,11 +6700,11 @@ packages: dev: false resolution: integrity: sha512-wCF5fwyJTHGBwQD+m8npRCrUIgSPw9jRiZlvyuE+TDcVNBpV4A1NcdsTJR/E5lAViLDTp9lpelsgA/Mw65kU+w== - /@truffle/debugger/9.0.1: + /@truffle/debugger/9.1.0: dependencies: '@truffle/abi-utils': 0.2.1 - '@truffle/codec': 0.10.9 - '@truffle/source-map-utils': 1.3.43 + '@truffle/codec': 0.11.0 + '@truffle/source-map-utils': 1.3.44 bn.js: 5.2.0 debug: 4.3.1 json-pointer: 0.6.1 @@ -6276,7 +6723,7 @@ packages: web3-eth-abi: 1.3.6 dev: false resolution: - integrity: sha512-1Om8f6LhHOYaYi3oV7+OoP4ZPZ9mkO+sHIsBvSU57Jptc3FnL3gYHV/fAhIih/dMWFDpywOTWKVMiK6vYq3bWw== + integrity: sha512-ByrdPrqDoFDFdpgUq1LLQycbYi4NCRhBFh9PcQXX5gsdVZHCpnkfmEiSJUcT//opyPa/vMgue7RdsT0mKGQkUg== /@truffle/error/0.0.14: dev: false resolution: @@ -6358,17 +6805,17 @@ packages: optional: true resolution: integrity: sha512-dzO7bnCO5iSLfoHH/SIIYQ5dUi9oVxtRE1qJ89dwKuUgtvaWOTPtZK1MLq7Ai+wrgNrYFKBVpxQjkCPXGdMWWw== - /@truffle/source-map-utils/1.3.43: + /@truffle/source-map-utils/1.3.44: dependencies: '@truffle/code-utils': 1.2.27 - '@truffle/codec': 0.10.9 + '@truffle/codec': 0.11.0 debug: 4.3.1 json-pointer: 0.6.1 node-interval-tree: 1.3.3 web3-utils: 1.3.6 dev: false resolution: - integrity: sha512-QDXNnvJO2R/5eTpTgiZFggkqKcDEA0LoxdVGJKCoMY5hCwSoG+ybpmWtsMBW+1hCYewxjvb5yGgYkhnTv/fs0A== + integrity: sha512-WbmbFJ1oTZ3nOqhtGI/B0KbLkh+YA4XCT0B8uJNQyMia9zCixqQez150WCRb4Vokzvc8XU/uwEW5tTjRaVnH1A== /@trufflesuite/chromafi/2.2.2: dependencies: ansi-mark: 1.0.4 @@ -6405,11 +6852,11 @@ packages: dev: false resolution: integrity: sha512-2OFOi9p+QOrcIMySEnr+WlOiKaFZ1bY56jA98YyECewJHfhPFWUBZEhc4nWGRT0ahK08Vus9+gcuBX8QIpCIIw== - /@typechain/ethers-v5/7.0.0_b59b4be7c4febb6a9dc6ed09ef58a1c9: + /@typechain/ethers-v5/7.0.1_534a0803dec1c20d83d335d68085cd00: dependencies: - '@ethersproject/abi': 5.3.0 - '@ethersproject/providers': 5.3.0 - ethers: 5.3.0 + '@ethersproject/abi': 5.3.1 + '@ethersproject/providers': 5.3.1 + ethers: 5.3.1 typechain: 5.0.0_typescript@4.3.2 typescript: 4.3.2 dev: false @@ -6421,10 +6868,10 @@ packages: typechain: ^5.0.0 typescript: '>=4.0.0' resolution: - integrity: sha512-ykNaqYcQ1yC928x8bogL9LECUg0osfqqHCKBhP7qbGlNfvC/bvTiIfnjQUgXUYWEJRx5r0Y78vcKMo8F3sJTBA== + integrity: sha512-mXEJ7LG0pOYO+MRPkHtbf30Ey9X2KAsU0wkeoVvjQIn7iAY6tB3k3s+82bbmJAUMyENbQ04RDOZit36CgSG6Gg== /@types/accepts/1.3.5: dependencies: - '@types/node': 14.17.2 + '@types/node': 14.17.3 dev: false optional: true resolution: @@ -6545,7 +6992,7 @@ packages: '@types/connect': 3.4.34 '@types/express': 4.17.12 '@types/keygrip': 1.0.2 - '@types/node': 14.17.2 + '@types/node': 14.17.3 dev: false optional: true resolution: @@ -6616,7 +7063,7 @@ packages: integrity: sha512-GWX0s/FFGWl6lO2nbd9nq3fh1x47vmLL/p4yDG1+VgCqrip1ErQrbHlTZThtEc6JrcmwCKB2H1de32Hdo3JdJg== /@types/express-serve-static-core/4.17.19: dependencies: - '@types/node': 14.17.2 + '@types/node': 14.17.3 '@types/qs': 6.9.6 '@types/range-parser': 1.2.3 dev: false @@ -6634,7 +7081,7 @@ packages: /@types/express/4.17.11: dependencies: '@types/body-parser': 1.19.0 - '@types/express-serve-static-core': 4.17.19 + '@types/express-serve-static-core': 4.17.21 '@types/qs': 6.9.6 '@types/serve-static': 1.13.9 dev: false @@ -6652,7 +7099,7 @@ packages: integrity: sha512-pTYas6FrP15B1Oa0bkN5tQMNqOcVXa9j4FTFtO8DWI9kppKib+6NJtfTOOLcwxuuYvcX2+dVG6et1SxW/Kc17Q== /@types/fs-capacitor/2.0.0: dependencies: - '@types/node': 14.17.2 + '@types/node': 14.17.3 dev: false optional: true resolution: @@ -6791,7 +7238,7 @@ packages: '@types/http-errors': 1.8.0 '@types/keygrip': 1.0.2 '@types/koa-compose': 3.2.5 - '@types/node': 14.17.2 + '@types/node': 14.17.3 dev: false optional: true resolution: @@ -6885,6 +7332,10 @@ packages: dev: false resolution: integrity: sha512-sld7b/xmFum66AAKuz/rp/CUO8+98fMpyQ3SBfzzBNGMd/1iHBTAg9oyAvcYlAj46bpc74r91jSw2iFdnx29nw== + /@types/node/14.17.3: + dev: false + resolution: + integrity: sha512-e6ZowgGJmTuXa3GyaPbTGxX17tnThl2aSSizrFthQ7m9uLGZBXiGhgE55cjRZTF5kjZvYn9EOPOMljdjwbflxw== /@types/nodemailer/6.4.2: dependencies: '@types/node': 14.17.2 @@ -6999,12 +7450,12 @@ packages: dev: false resolution: integrity: sha512-cjjT0FPdwuvhLWpCDt2WCh4sdBqNzJe3XhxXmRQGsY3IvT58M8sE4E7A0QaFYuJs3ar+McSJTiJxdYKWAXbBhw== - /@types/react-dom/17.0.6: + /@types/react-dom/17.0.7: dependencies: - '@types/react': 17.0.9 + '@types/react': 17.0.11 dev: false resolution: - integrity: sha512-MGTI+TudxAnGTj8aco8mogaPSJGK2Whje7OZh1CxNLRyhJpTZg/pGQpIbCT0eCVFQyH7UFpdvCqQEThHIp/gsA== + integrity: sha512-Wd5xvZRlccOrCTej8jZkoFZuZRKHzanDDv1xglI33oBNFMWrqOSzrvWFw7ngSiZjrpJAzPKFtX7JvuXpkNmQHA== /@types/react-redux/7.1.16: dependencies: '@types/hoist-non-react-statics': 3.3.1 @@ -7041,6 +7492,14 @@ packages: dev: false resolution: integrity: sha512-vIo69qKKcYoJ8wKCJjwSgCTM+z3chw3g18dkrDfVX665tMH7tmbDxEAnPdey4gTlwZz5QuHGzd+hul0OVZDqqQ== + /@types/react/17.0.11: + dependencies: + '@types/prop-types': 15.7.3 + '@types/scheduler': 0.16.1 + csstype: 3.0.8 + dev: false + resolution: + integrity: sha512-yFRQbD+whVonItSk7ZzP/L+gPTJVBkL/7shLEF+i9GC/1cV3JmUxEQz6+9ylhUpWSDuqo1N9qEvqS6vTj4USUA== /@types/react/17.0.9: dependencies: '@types/prop-types': 15.7.3 @@ -7233,7 +7692,7 @@ packages: integrity: sha512-YlFfTGS+zqCgXuXNV26rOIeETOkXnGQXP/pjjL9P0gO/EP9jTmc7pUBhx+jVEIxpq41RX33GQ7N3DzOSfZoglQ== /@types/yauzl/2.9.1: dependencies: - '@types/node': 14.17.2 + '@types/node': 14.17.3 dev: false optional: true resolution: @@ -7312,7 +7771,7 @@ packages: integrity: sha512-sL/cEvJWAnClXw0wHk85/2L0G6Sj8UB0Ctc1TEMbKSsmpRosqhwj9gWgFRZSrBr2f9tiXISwNhCPmlfqUqyb9Q== /@unicef/material-ui-currency-textfield/0.8.6_f543984b3e6c18c2e2e104a9ecbda934: dependencies: - '@material-ui/core': 4.11.4_e84af7742d25ac89b84cf59d2816ddf6 + '@material-ui/core': 4.11.4_7a759d72fcbc11ce03c9de110c21df82 autonumeric: 4.6.0 react: 17.0.2 react-dom: 17.0.2_react@17.0.2 @@ -7324,9 +7783,9 @@ packages: react-dom: ^16.8.6 resolution: integrity: sha512-zXhwJbz8mRa4xVZ6zkkyn9UyXHT4CXFn1JuvkVhDFqtqPkjQXBg+/dWMlJAfX6m1CvwfxwiF9giJxJqFEsTUqg== - /@vmw/queue-for-redux-saga/0.3.0_dabc9aab316ba0825f295ac4fdb4520c: + /@vmw/queue-for-redux-saga/0.3.0_048ca475e79921e4b5c7ae691130b6a4: dependencies: - '@reduxjs/toolkit': 1.5.1 + '@reduxjs/toolkit': 1.6.0_react-redux@7.2.4+react@17.0.2 redux-saga: 1.1.3 dev: false peerDependencies: @@ -7567,29 +8026,29 @@ packages: dev: false resolution: integrity: sha512-2J0nE95rHXHyQ24cWjMKJ1tqB/ds8z/cyeOZxJhcb+rW+SQASVjuznUSmdz5GpVJTzU8JkhYut0D3siFDD6wsA== - /@webpack-cli/configtest/1.0.4_webpack-cli@4.7.0+webpack@5.38.1: + /@webpack-cli/configtest/1.0.4_webpack-cli@4.7.2+webpack@5.38.1: dependencies: - webpack: 5.38.1_webpack-cli@4.7.0 - webpack-cli: 4.7.0_4f38b4f344caeae135cc7debc9aac51b + webpack: 5.38.1_webpack-cli@4.7.2 + webpack-cli: 4.7.2_4f38b4f344caeae135cc7debc9aac51b dev: false peerDependencies: webpack: 4.x.x || 5.x.x webpack-cli: 4.x.x resolution: integrity: sha512-cs3XLy+UcxiP6bj0A6u7MLLuwdXJ1c3Dtc0RkKg+wiI1g/Ti1om8+/2hc2A2B60NbBNAbMgyBMHvyymWm/j4wQ== - /@webpack-cli/info/1.3.0_webpack-cli@4.7.0: + /@webpack-cli/info/1.3.0_webpack-cli@4.7.2: dependencies: envinfo: 7.8.1 - webpack-cli: 4.7.0_4f38b4f344caeae135cc7debc9aac51b + webpack-cli: 4.7.2_4f38b4f344caeae135cc7debc9aac51b dev: false peerDependencies: webpack-cli: 4.x.x resolution: integrity: sha512-ASiVB3t9LOKHs5DyVUcxpraBXDOKubYu/ihHhU+t1UPpxsivg6Od2E2qU4gJCekfEddzRBzHhzA/Acyw/mlK/w== - /@webpack-cli/serve/1.5.1_7cbb6369db867e7782bcc6ed9d7442a1: + /@webpack-cli/serve/1.5.1_8f539f003d3f73da23f531c906cfc201: dependencies: - webpack-cli: 4.7.0_4f38b4f344caeae135cc7debc9aac51b - webpack-dev-server: 3.11.2_webpack-cli@4.7.0+webpack@5.38.1 + webpack-cli: 4.7.2_4f38b4f344caeae135cc7debc9aac51b + webpack-dev-server: 3.11.2_webpack-cli@4.7.2+webpack@5.38.1 dev: false peerDependencies: webpack-cli: 4.x.x @@ -7726,7 +8185,7 @@ packages: /abstract-leveldown/6.3.0: dependencies: buffer: 5.7.1 - immediate: 3.2.3 + immediate: 3.3.0 level-concat-iterator: 2.0.1 level-supports: 1.0.1 xtend: 4.0.2 @@ -8075,12 +8534,6 @@ packages: hasBin: true resolution: integrity: sha512-28ijx2aHJGdzbs+O5SNQF65r6rrKYnkuwTYm8lZlChuoJ9P1vVzIpWO20sQTqTPDXYp6NFwk326vApTtLVFXpQ== - /any-observable/0.3.0: - dev: false - engines: - node: '>=6' - resolution: - integrity: sha512-/FQM1EDkTsf63Ub2C6O7GuYFDsSXUwsaZDurV0np41ocwq0jthUAYCmhBX9f+KwlaCgIuWyr/4WlUQUBfKfZog== /any-promise/1.3.0: dev: false resolution: @@ -8647,6 +9100,12 @@ packages: node: '>=4' resolution: integrity: sha512-O0yuUDnZeQDL+ncNGlJ78BiO4jnYI3bvMsD5prT0/nsgijG/LpNBIr63gTjVTNsiGkgQhiyCShTgxt8oXOrklA== + /astral-regex/2.0.0: + dev: false + engines: + node: '>=8' + resolution: + integrity: sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ== /async-each/1.0.3: dev: false resolution: @@ -8945,7 +9404,7 @@ packages: loader-utils: 1.4.0 make-dir: 3.1.0 schema-utils: 2.7.1 - webpack: 4.46.0_webpack-cli@4.7.0 + webpack: 4.46.0_webpack-cli@4.7.2 dev: false engines: node: '>= 8.9' @@ -8954,14 +9413,14 @@ packages: webpack: '>=2' resolution: integrity: sha512-JvTd0/D889PQBtUXJ2PXaKU/pjZDMtHA9V2ecm+eNRmmBCMR09a+fmpGTNwnJtFmFl5Ei7Vy47LjBb+L0wQ99g== - /babel-loader/8.2.2_56c0991c8a79bd1374c11f7f6fc4baef: + /babel-loader/8.2.2_be4b5a2e27f85c129e0cacc759b45f7c: dependencies: - '@babel/core': 7.14.3 + '@babel/core': 7.14.5 find-cache-dir: 3.3.1 loader-utils: 1.4.0 make-dir: 3.1.0 schema-utils: 2.7.1 - webpack: 5.38.1_webpack-cli@4.7.0 + webpack: 5.38.1_webpack-cli@4.7.2 dev: false engines: node: '>= 8.9' @@ -9076,9 +9535,9 @@ packages: npm: '>=6' resolution: integrity: sha512-Cg7TFGpIr01vOQNODXOOaGz2NpCU5gl8x1qJFbb6hbZxR7XrcE2vtbAsTAbJ7/xwJtUuJEw8K8Zr/AE0LHlesg== - /babel-plugin-named-asset-import/0.3.7_@babel+core@7.14.3: + /babel-plugin-named-asset-import/0.3.7_@babel+core@7.14.5: dependencies: - '@babel/core': 7.14.3 + '@babel/core': 7.14.5 dev: false peerDependencies: '@babel/core': ^7.1.0 @@ -9405,35 +9864,35 @@ packages: dev: false resolution: integrity: sha512-9OR2afuKDneX2/q2EurSftUYM0xGu4O2D9adAhVfADDhrYDaxXV0rBbevVYoY9n6nyX1PmQW/0jtpJvUNr9CHg== - /babel-preset-fbjs/3.4.0_@babel+core@7.14.3: - dependencies: - '@babel/core': 7.14.3 - '@babel/plugin-proposal-class-properties': 7.14.5_@babel+core@7.14.3 - '@babel/plugin-proposal-object-rest-spread': 7.14.5_@babel+core@7.14.3 - '@babel/plugin-syntax-class-properties': 7.12.13_@babel+core@7.14.3 - '@babel/plugin-syntax-flow': 7.14.5_@babel+core@7.14.3 - '@babel/plugin-syntax-jsx': 7.14.5_@babel+core@7.14.3 - '@babel/plugin-syntax-object-rest-spread': 7.8.3_@babel+core@7.14.3 - '@babel/plugin-transform-arrow-functions': 7.14.5_@babel+core@7.14.3 - '@babel/plugin-transform-block-scoped-functions': 7.14.5_@babel+core@7.14.3 - '@babel/plugin-transform-block-scoping': 7.14.5_@babel+core@7.14.3 - '@babel/plugin-transform-classes': 7.14.5_@babel+core@7.14.3 - '@babel/plugin-transform-computed-properties': 7.14.5_@babel+core@7.14.3 - '@babel/plugin-transform-destructuring': 7.14.5_@babel+core@7.14.3 - '@babel/plugin-transform-flow-strip-types': 7.14.5_@babel+core@7.14.3 - '@babel/plugin-transform-for-of': 7.14.5_@babel+core@7.14.3 - '@babel/plugin-transform-function-name': 7.14.5_@babel+core@7.14.3 - '@babel/plugin-transform-literals': 7.14.5_@babel+core@7.14.3 - '@babel/plugin-transform-member-expression-literals': 7.14.5_@babel+core@7.14.3 - '@babel/plugin-transform-modules-commonjs': 7.14.5_@babel+core@7.14.3 - '@babel/plugin-transform-object-super': 7.14.5_@babel+core@7.14.3 - '@babel/plugin-transform-parameters': 7.14.5_@babel+core@7.14.3 - '@babel/plugin-transform-property-literals': 7.14.5_@babel+core@7.14.3 - '@babel/plugin-transform-react-display-name': 7.14.5_@babel+core@7.14.3 - '@babel/plugin-transform-react-jsx': 7.14.5_@babel+core@7.14.3 - '@babel/plugin-transform-shorthand-properties': 7.14.5_@babel+core@7.14.3 - '@babel/plugin-transform-spread': 7.14.5_@babel+core@7.14.3 - '@babel/plugin-transform-template-literals': 7.14.5_@babel+core@7.14.3 + /babel-preset-fbjs/3.4.0_@babel+core@7.14.5: + dependencies: + '@babel/core': 7.14.5 + '@babel/plugin-proposal-class-properties': 7.14.5_@babel+core@7.14.5 + '@babel/plugin-proposal-object-rest-spread': 7.14.5_@babel+core@7.14.5 + '@babel/plugin-syntax-class-properties': 7.12.13_@babel+core@7.14.5 + '@babel/plugin-syntax-flow': 7.14.5_@babel+core@7.14.5 + '@babel/plugin-syntax-jsx': 7.14.5_@babel+core@7.14.5 + '@babel/plugin-syntax-object-rest-spread': 7.8.3_@babel+core@7.14.5 + '@babel/plugin-transform-arrow-functions': 7.14.5_@babel+core@7.14.5 + '@babel/plugin-transform-block-scoped-functions': 7.14.5_@babel+core@7.14.5 + '@babel/plugin-transform-block-scoping': 7.14.5_@babel+core@7.14.5 + '@babel/plugin-transform-classes': 7.14.5_@babel+core@7.14.5 + '@babel/plugin-transform-computed-properties': 7.14.5_@babel+core@7.14.5 + '@babel/plugin-transform-destructuring': 7.14.5_@babel+core@7.14.5 + '@babel/plugin-transform-flow-strip-types': 7.14.5_@babel+core@7.14.5 + '@babel/plugin-transform-for-of': 7.14.5_@babel+core@7.14.5 + '@babel/plugin-transform-function-name': 7.14.5_@babel+core@7.14.5 + '@babel/plugin-transform-literals': 7.14.5_@babel+core@7.14.5 + '@babel/plugin-transform-member-expression-literals': 7.14.5_@babel+core@7.14.5 + '@babel/plugin-transform-modules-commonjs': 7.14.5_@babel+core@7.14.5 + '@babel/plugin-transform-object-super': 7.14.5_@babel+core@7.14.5 + '@babel/plugin-transform-parameters': 7.14.5_@babel+core@7.14.5 + '@babel/plugin-transform-property-literals': 7.14.5_@babel+core@7.14.5 + '@babel/plugin-transform-react-display-name': 7.14.5_@babel+core@7.14.5 + '@babel/plugin-transform-react-jsx': 7.14.5_@babel+core@7.14.5 + '@babel/plugin-transform-shorthand-properties': 7.14.5_@babel+core@7.14.5 + '@babel/plugin-transform-spread': 7.14.5_@babel+core@7.14.5 + '@babel/plugin-transform-template-literals': 7.14.5_@babel+core@7.14.5 babel-plugin-syntax-trailing-function-commas: 7.0.0-beta.0 dev: false optional: true @@ -10919,15 +11378,15 @@ packages: colors: 1.4.0 resolution: integrity: sha512-gnB85c3MGC7Nm9I/FkiasNBOKjOiO1RNuXXarQms37q4QMpWdlbBgD/VnOStA2faG1dpXMv31RFApjX1/QdgWQ== - /cli-truncate/0.2.1: + /cli-truncate/2.1.0: dependencies: - slice-ansi: 0.0.4 - string-width: 1.0.2 + slice-ansi: 3.0.0 + string-width: 4.2.2 dev: false engines: - node: '>=0.10.0' + node: '>=8' resolution: - integrity: sha1-nxXPuwcFAFNpIWxiasfQWrkN1XQ= + integrity: sha512-n8fOixwDD6b/ObinzTrp1ZKFzbgvKZvuz/TvejnLn1aQfC6r52XEx85FmuC+3HI+JM7coBRXUvNqEU2PHVrHpg== /cli-width/2.2.1: dev: false resolution: @@ -11471,7 +11930,7 @@ packages: p-limit: 3.1.0 schema-utils: 3.0.0 serialize-javascript: 5.0.1 - webpack: 5.38.1_webpack-cli@4.7.0 + webpack: 5.38.1_webpack-cli@4.7.2 dev: false engines: node: '>= 12.13.0' @@ -11724,7 +12183,7 @@ packages: postcss-value-parser: 4.1.0 schema-utils: 2.7.1 semver: 6.3.0 - webpack: 4.46.0_webpack-cli@4.7.0 + webpack: 4.46.0_webpack-cli@4.7.2 dev: false engines: node: '>= 8.9.0' @@ -11744,7 +12203,7 @@ packages: postcss-value-parser: 4.1.0 schema-utils: 3.0.0 semver: 7.3.5 - webpack: 5.38.1_webpack-cli@4.7.0 + webpack: 5.38.1_webpack-cli@4.7.2 dev: false engines: node: '>= 10.13.0' @@ -11897,10 +12356,10 @@ packages: dev: false resolution: integrity: sha512-jXKhWqXPmlUeoQnF/EhTtTl4C9SnrxSH/jZUih3jmO6lBKr99rP3/+FmrMj4EFpOXzMtXHAZkd3x0E6h6Fgflw== - /csv-parse/4.15.4: + /csv-parse/4.16.0: dev: false resolution: - integrity: sha512-OdBbFc0yZhOm17lSxqkirrHlFFVpKRT0wp4DAGoJelsP3LbGzV9LNr7XmM/lrr0uGkCtaqac9UhP8PDHXOAbMg== + integrity: sha512-Zb4tGPANH4SW0LgC9+s9Mnequs9aqn7N3/pCqNbVjs2XhEF6yWNU2Vm4OGl1v2Go9nw8rXt87Cm2QN/o6Vpqgg== /currently-unhandled/0.4.1: dependencies: array-find-index: 1.0.2 @@ -11913,9 +12372,9 @@ packages: dev: false resolution: integrity: sha1-WW6WmP0MgOEgOMK4LW6xs1tiJNk= - /cypress-file-upload/5.0.7_cypress@7.4.0: + /cypress-file-upload/5.0.7_cypress@7.5.0: dependencies: - cypress: 7.4.0 + cypress: 7.5.0 dev: false engines: node: '>=8.2.1' @@ -11923,12 +12382,12 @@ packages: cypress: '>3.0.0' resolution: integrity: sha512-cgWsWx7igxjyyVm9/VJ9ukdy69jL00I7z0lrwUWtXXLPvX4neO+8JAZ054Ax8Xf+mdV9OerenXzb9nqRoafjHA== - /cypress/7.4.0: + /cypress/7.5.0: dependencies: '@cypress/listr-verbose-renderer': 0.4.1 '@cypress/request': 2.88.5 '@cypress/xvfb': 1.2.4 - '@types/node': 14.17.2 + '@types/node': 14.17.3 '@types/sinonjs__fake-timers': 6.0.2 '@types/sizzle': 2.3.3 arch: 2.2.0 @@ -11951,7 +12410,7 @@ packages: is-ci: 3.0.0 is-installed-globally: 0.4.0 lazy-ass: 1.6.0 - listr: 0.14.3 + listr2: 3.10.0 lodash: 4.17.21 log-symbols: 4.1.0 minimist: 1.2.5 @@ -11970,7 +12429,7 @@ packages: hasBin: true requiresBuild: true resolution: - integrity: sha512-+CmSoT5DS88e92YDfc6aDA3Zf3uCBRKVB92caWsjXMilz0tf6NpByFvIbLLVWXiYOwrhtWV0m/k93+rzodYwRQ== + integrity: sha512-tw3v6nrTJoEzT37+Nf6RK+DvdTfhMb8EJYskZx7oskZ+J9qQ1QHWA4dH8Eoe/Mr/wE47o+7PK6O9tgqhRy6IHg== /d/1.0.1: dependencies: es5-ext: 0.10.53 @@ -12065,7 +12524,7 @@ packages: integrity: sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ== /debug/4.1.1: dependencies: - ms: 2.1.2 + ms: 2.1.3 deprecated: Debug versions >=3.2.0 <3.2.7 || >=4 <4.3.1 have a low-severity ReDos regression when used in a Node.js environment. It is recommended you upgrade to 3.2.7 or 4.3.1. (https://github.com/visionmedia/debug/issues/797) dev: false resolution: @@ -12315,7 +12774,7 @@ packages: /deferred-leveldown/5.0.1: dependencies: abstract-leveldown: 6.0.3 - inherits: 2.0.3 + inherits: 2.0.4 dev: false engines: node: '>=6' @@ -12789,7 +13248,7 @@ packages: /dotenv-webpack/1.8.0_webpack@4.46.0: dependencies: dotenv-defaults: 1.1.1 - webpack: 4.46.0_webpack-cli@4.7.0 + webpack: 4.46.0_webpack-cli@4.7.2 dev: false peerDependencies: webpack: ^1 || ^2 || ^3 || ^4 @@ -12907,12 +13366,6 @@ packages: dev: false resolution: integrity: sha512-2Tg+7jSl3oPxgsBsWKh5H83QazTkmWG/cnNwJplmyZc7KcN61+I10oUgaXSVk/NwfvN3BdkKDR4FYuRBQQ2v0A== - /elegant-spinner/1.0.1: - dev: false - engines: - node: '>=0.10.0' - resolution: - integrity: sha1-2wQ1IcldfjA/2PNFvtwzSc+wcp4= /element-resize-detector/1.2.2: dependencies: batch-processor: 1.0.0 @@ -13022,7 +13475,7 @@ packages: dependencies: abstract-leveldown: 6.3.0 inherits: 2.0.4 - level-codec: 9.0.1 + level-codec: 9.0.2 level-errors: 2.0.1 dev: false engines: @@ -13937,9 +14390,9 @@ packages: dev: false resolution: integrity: sha512-1Zu9s+z4BgsDAZcGIYACJdWBB6mVtCCmUonj68Njul7STcSdgwOyj0sCAxCUr2Nsmsamckr4E12q3ecvZPGAUw== - /ethers/5.3.0: + /ethers/5.3.1: dependencies: - '@ethersproject/abi': 5.3.0 + '@ethersproject/abi': 5.3.1 '@ethersproject/abstract-provider': 5.3.0 '@ethersproject/abstract-signer': 5.3.0 '@ethersproject/address': 5.3.0 @@ -13954,10 +14407,10 @@ packages: '@ethersproject/json-wallets': 5.3.0 '@ethersproject/keccak256': 5.3.0 '@ethersproject/logger': 5.3.0 - '@ethersproject/networks': 5.3.0 + '@ethersproject/networks': 5.3.1 '@ethersproject/pbkdf2': 5.3.0 '@ethersproject/properties': 5.3.0 - '@ethersproject/providers': 5.3.0 + '@ethersproject/providers': 5.3.1 '@ethersproject/random': 5.3.0 '@ethersproject/rlp': 5.3.0 '@ethersproject/sha2': 5.3.0 @@ -13971,7 +14424,7 @@ packages: '@ethersproject/wordlists': 5.3.0 dev: false resolution: - integrity: sha512-myN+338S4sFQZvQ9trii7xit8Hu/LnUtjA0ROFOHpUreQc3fgLZEMNVqF3vM1u2D78DIIeG1TbuozVCVlXQWvQ== + integrity: sha512-xCKmC0gsZ9gks89ZfK3B1y6LlPdvX5fxDtu9SytnpdDJR1M7pmJI+4H0AxQPMgUYr7GtQdmECLR0gWdJQ+lZYw== /ethjs-unit/0.1.6: dependencies: bn.js: 4.11.6 @@ -14310,7 +14763,7 @@ packages: async: 2.6.3 loader-utils: 1.4.0 schema-utils: 0.4.7 - webpack: 5.38.1_webpack-cli@4.7.0 + webpack: 5.38.1_webpack-cli@4.7.2 webpack-sources: 1.4.3 dev: false engines: @@ -14321,7 +14774,7 @@ packages: integrity: sha512-Hypkn9jUTnFr0DpekNam53X47tXn3ucY08BQumv7kdGgeVUBLq3DJHJTi6HNxv4jl9W+Skxjz9+RnK0sJyqqjA== /extract-zip/2.0.1_supports-color@8.1.1: dependencies: - debug: 4.3.2_supports-color@8.1.1 + debug: 4.3.1_supports-color@8.1.1 get-stream: 5.2.0 yauzl: 2.10.0 dev: false @@ -14556,7 +15009,7 @@ packages: dependencies: loader-utils: 2.0.0 schema-utils: 3.0.0 - webpack: 4.46.0_webpack-cli@4.7.0 + webpack: 4.46.0_webpack-cli@4.7.2 dev: false engines: node: '>= 10.13.0' @@ -14568,7 +15021,7 @@ packages: dependencies: loader-utils: 2.0.0 schema-utils: 3.0.0 - webpack: 5.38.1_webpack-cli@4.7.0 + webpack: 5.38.1_webpack-cli@4.7.2 dev: false engines: node: '>= 10.13.0' @@ -15040,7 +15493,7 @@ packages: integrity: sha512-V8gLm+41I/8kguQ4/o1D3RIHRmhYFG4pnNyonvua+40rqcEmT4+V71yaZ3B457xbbgCsCfjSPi65u/W6vK1U5Q== /formik-material-ui-pickers/0.0.12_08032a4b4e82050abfb7dc276cf451f4: dependencies: - '@material-ui/core': 4.11.4_e84af7742d25ac89b84cf59d2816ddf6 + '@material-ui/core': 4.11.4_7a759d72fcbc11ce03c9de110c21df82 '@material-ui/pickers': 3.3.10_f543984b3e6c18c2e2e104a9ecbda934 formik: 2.2.9_react@17.0.2 react: 17.0.2 @@ -15054,7 +15507,7 @@ packages: integrity: sha512-Xac992DrLW7MWn+L7Qcc8R4VkJjevaXU7iM3byLbnvM+pIWYGbUWIJrhejGevRgPAZn9Nj17Q8aH1peA33tpng== /formik-material-ui/3.0.1_8c8510503ff976740e1d76ab6c6427c3: dependencies: - '@material-ui/core': 4.11.4_e84af7742d25ac89b84cf59d2816ddf6 + '@material-ui/core': 4.11.4_7a759d72fcbc11ce03c9de110c21df82 formik: 2.2.9_react@17.0.2 react: 17.0.2 dev: false @@ -15848,7 +16301,7 @@ packages: graphql: ^0.13.0 || ^14.0.0 || ^15.0.0 resolution: integrity: sha512-MW+ioleBrwhRjalKjYaLQbr+920pHBgy9vM/n47sswtns8+96sRn5M/G+J1eu7IMeKWiN/9p6tmwCHU7552VJg== - /graphql-tools/6.2.6_bf5e6b9f5a52791eced132b286dc3993: + /graphql-tools/6.2.6_68df62f78f9404c5fdf0c10dc6c90922: dependencies: '@graphql-tools/batch-delegate': 6.2.6_graphql@15.5.0 '@graphql-tools/code-file-loader': 6.3.1_graphql@15.5.0 @@ -15869,7 +16322,7 @@ packages: '@graphql-tools/resolvers-composition': 6.2.8_graphql@15.5.0 '@graphql-tools/schema': 6.2.4_graphql@15.5.0 '@graphql-tools/stitch': 6.2.4_graphql@15.5.0 - '@graphql-tools/url-loader': 6.10.1_4fb681aa39537ec5a769d863f0257980 + '@graphql-tools/url-loader': 6.10.1_f13c9e2093815f5f87900d0957cb36be '@graphql-tools/utils': 6.2.4_graphql@15.5.0 '@graphql-tools/wrap': 6.2.4_graphql@15.5.0 graphql: 15.5.0 @@ -16330,7 +16783,7 @@ packages: pretty-error: 2.1.2 tapable: 1.1.3 util.promisify: 1.0.0 - webpack: 4.46.0_webpack-cli@4.7.0 + webpack: 4.46.0_webpack-cli@4.7.2 dev: false engines: node: '>=6.9' @@ -16345,7 +16798,7 @@ packages: lodash: 4.17.21 pretty-error: 2.1.2 tapable: 2.2.0 - webpack: 5.38.1_webpack-cli@4.7.0 + webpack: 5.38.1_webpack-cli@4.7.2 dev: false engines: node: '>=10.13.0' @@ -16647,10 +17100,10 @@ packages: dev: false resolution: integrity: sha512-aqXhGP7//Gui2+UrEtvxZxSquQVXTpZ7KDxfCcKAF3Vysvw0CViVaW9RZ1j1xlIYqaaaipBoqdqeibkc18PNvA== - /immer/8.0.4: + /immer/9.0.3: dev: false resolution: - integrity: sha512-jMfL18P+/6P6epANRvRk6q8t+3gGhqsJ9EuJ25AXE+9bNTYtssvzeYbEd0mXRYWCmmXSIbnlpz6vd6iJlmGGGQ== + integrity: sha512-mONgeNSMuyjIe0lkQPa9YhdmTv8P19IeHV0biYhcXhbd5dhdB9HSK93zBpyKjp6wersSUgT5QyU0skmejUVP2A== /immutable/3.7.6: dev: false engines: @@ -16720,12 +17173,6 @@ packages: node: '>=0.10.0' resolution: integrity: sha1-ji1INIdCEhtKghi3oTfppSBJ3IA= - /indent-string/3.2.0: - dev: false - engines: - node: '>=4' - resolution: - integrity: sha1-Sl/W0nzDMvN+VBmlBNu4NxBckok= /indent-string/4.0.0: dev: false engines: @@ -17479,14 +17926,6 @@ packages: dev: false resolution: integrity: sha512-2rRIahhZr2UWb45fIOuvZGpFtz0TyOZLf32KxBbSoUCeZR495zCKlWUKKUByk3geS2eAs7ZAABt0Y/Rx0GiQGA== - /is-observable/1.1.0: - dependencies: - symbol-observable: 1.2.0 - dev: false - engines: - node: '>=4' - resolution: - integrity: sha512-NqCa4Sa2d+u7BWc6CukaObG3Fh+CU9bvixbpcXYhy2VvYS7vVGIdAgnIS5Ks3A/cqk4rebLJ9s8zBstT2aKnIA== /is-path-cwd/2.2.0: dev: false engines: @@ -18682,13 +19121,6 @@ packages: hasBin: true resolution: integrity: sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g== - /js-yaml/4.0.0: - dependencies: - argparse: 2.0.1 - dev: false - hasBin: true - resolution: - integrity: sha512-pqon0s+4ScYUvX30wxQi3PogGFAlUyH0awepWvwkj4jD4v+ova3RiYw8bmA6x2rDrEaj8i/oWKoRxpVNW+Re8Q== /js-yaml/4.1.0: dependencies: argparse: 2.0.1 @@ -19601,57 +20033,22 @@ packages: dev: false resolution: integrity: sha512-d0Mlv8tlsstnwW8yIJLPRBoXczmQj4uh66lp8pWn1/aiyVXb3tBS8flUuYsgvKfJdKJBiHJ5m8PLDcx5EikDOg== - /listr-silent-renderer/1.1.1: - dev: false - engines: - node: '>=4' - resolution: - integrity: sha1-kktaN1cVN3C/Go4/v3S4u/P5JC4= - /listr-update-renderer/0.5.0_listr@0.14.3: + /listr2/3.10.0: dependencies: - chalk: 1.1.3 - cli-truncate: 0.2.1 - elegant-spinner: 1.0.1 - figures: 1.7.0 - indent-string: 3.2.0 - listr: 0.14.3 - log-symbols: 1.0.2 - log-update: 2.3.0 - strip-ansi: 3.0.1 - dev: false - engines: - node: '>=6' - peerDependencies: - listr: ^0.14.2 - resolution: - integrity: sha512-tKRsZpKz8GSGqoI/+caPmfrypiaq+OQCbd+CovEC24uk1h952lVj5sC7SqyFUm+OaJ5HN/a1YLt5cit2FMNsFA== - /listr-verbose-renderer/0.5.0: - dependencies: - chalk: 2.4.2 - cli-cursor: 2.1.0 - date-fns: 1.30.1 - figures: 2.0.0 - dev: false - engines: - node: '>=4' - resolution: - integrity: sha512-04PDPqSlsqIOaaaGZ+41vq5FejI9auqTInicFRndCBgE3bXG8D6W1I+mWhk+1nqbHmyhla/6BUrd5OSiHwKRXw== - /listr/0.14.3: - dependencies: - '@samverschueren/stream-to-observable': 0.3.1_rxjs@6.6.7 - is-observable: 1.1.0 - is-promise: 2.2.2 - is-stream: 1.1.0 - listr-silent-renderer: 1.1.1 - listr-update-renderer: 0.5.0_listr@0.14.3 - listr-verbose-renderer: 0.5.0 - p-map: 2.1.0 + cli-truncate: 2.1.0 + colorette: 1.2.2 + log-update: 4.0.0 + p-map: 4.0.0 rxjs: 6.6.7 + through: 2.3.8 + wrap-ansi: 7.0.0 dev: false engines: - node: '>=6' + node: '>=10.0.0' + peerDependencies: + enquirer: '>= 2.3.0 < 3' resolution: - integrity: sha512-RmAl7su35BFd/xoMamRjpIE4j3v+L28o8CT5YhAXQJm1fD+1l9ngXY8JAQRJ+tFK2i5njvi0iRUKV09vPwA0iA== + integrity: sha512-eP40ZHihu70sSmqFNbNy2NL1YwImmlMmPh9WO5sLmPDleurMHt3n+SwEWNu2kzKScexZnkyFtc1VI0z/TGlmpw== /load-json-file/1.1.0: dependencies: graceful-fs: 4.2.6 @@ -19967,14 +20364,6 @@ packages: dev: false resolution: integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== - /log-symbols/1.0.2: - dependencies: - chalk: 1.1.3 - dev: false - engines: - node: '>=0.10.0' - resolution: - integrity: sha1-N2/3tY6jCGoPCfrMdGF+ylAeGhg= /log-symbols/2.2.0: dependencies: chalk: 2.4.2 @@ -20001,16 +20390,17 @@ packages: node: '>=10' resolution: integrity: sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg== - /log-update/2.3.0: + /log-update/4.0.0: dependencies: - ansi-escapes: 3.2.0 - cli-cursor: 2.1.0 - wrap-ansi: 3.0.1 + ansi-escapes: 4.3.2 + cli-cursor: 3.1.0 + slice-ansi: 4.0.0 + wrap-ansi: 6.2.0 dev: false engines: - node: '>=4' + node: '>=10' resolution: - integrity: sha1-iDKP19HOeTiykoN0bwsbwSayRwg= + integrity: sha512-9fkkDevMefjg0mmzWFBW8YkFP91OrizzkW3diF7CpG+S2EYdy4+TVfGwz1zeF8x7hCx1ovSPTOE9Ngib74qqUg== /logform/2.2.0: dependencies: colors: 1.4.0 @@ -20493,9 +20883,9 @@ packages: dev: false resolution: integrity: sha512-soRaMuNf/ILmw3KWbybaCjhx86EYeBbD8ph0edQCTed0JN/rxDt1EBN52Ajre3VyGo+91f8+/rfPIRQnnGMqmQ== - /meros/1.1.4_@types+node@14.17.2: + /meros/1.1.4_@types+node@14.17.3: dependencies: - '@types/node': 14.17.2 + '@types/node': 14.17.3 dev: false engines: node: '>=12' @@ -20648,7 +21038,7 @@ packages: dependencies: loader-utils: 2.0.0 schema-utils: 3.0.0 - webpack: 5.38.1_webpack-cli@4.7.0 + webpack: 5.38.1_webpack-cli@4.7.2 webpack-sources: 1.4.3 dev: false engines: @@ -20845,7 +21235,7 @@ packages: hasBin: true resolution: integrity: sha512-I8FRAcuACNMLQn3lS4qeWLxXqLvGf6r2CaLstDpZmMUUSmvW6Cnm1AuHxgbc7ctZVRcfwspCRbDHymPsi3dkJw== - /mocha/8.4.0: + /mocha/9.0.0: dependencies: '@ungap/promise-all-settled': 1.1.2 ansi-colors: 4.1.1 @@ -20855,29 +21245,29 @@ packages: diff: 5.0.0 escape-string-regexp: 4.0.0 find-up: 5.0.0 - glob: 7.1.6 + glob: 7.1.7 growl: 1.10.5 he: 1.2.0 - js-yaml: 4.0.0 - log-symbols: 4.0.0 + js-yaml: 4.1.0 + log-symbols: 4.1.0 minimatch: 3.0.4 ms: 2.1.3 - nanoid: 3.1.20 + nanoid: 3.1.23 serialize-javascript: 5.0.1 strip-json-comments: 3.1.1 supports-color: 8.1.1 which: 2.0.2 wide-align: 1.1.3 - workerpool: 6.1.0 + workerpool: 6.1.4 yargs: 16.2.0 yargs-parser: 20.2.4 yargs-unparser: 2.0.0 dev: false engines: - node: '>= 10.12.0' + node: '>= 12.0.0' hasBin: true resolution: - integrity: sha512-hJaO0mwDXmZS4ghXsvPVriOhsxQ7ofcpQdm8dE+jISUOKopitvnXFQmpRR7jd2K6VBG6E26gU3IAbXXGIbu4sQ== + integrity: sha512-GRGG/q9bIaUkHJB9NL+KZNjDhMBHB30zW3bZW9qOiYr+QChyLjPzswaxFWkI1q6lGlSL28EQYzAi2vKWNkPx+g== /mock-fs/4.14.0: dev: false resolution: @@ -21151,13 +21541,6 @@ packages: dev: false resolution: integrity: sha512-s/snB+WGm6uwi0WjsZdaVcuf3KJXlfGl2LcxgwkEwJF0D/BWzVWAZW/XY4bFaiR7s0Jk3FPvlnepg1H1b1UwlA== - /nanoid/3.1.20: - dev: false - engines: - node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1 - hasBin: true - resolution: - integrity: sha512-a1cQNyczgKbLX9jwbS/+d7W8fX/RfgYR7lVWwWOGIPNgK2m0MWvrGF6/m4kk6U3QcFMnZf3RIhL0v2Jgh/0Uxw== /nanoid/3.1.23: dev: false engines: @@ -22437,7 +22820,7 @@ packages: integrity: sha1-m387DeMr543CQBsXVzzK8Pb1nZQ= /parse5/3.0.3: dependencies: - '@types/node': 14.17.2 + '@types/node': 14.17.3 dev: false resolution: integrity: sha512-rgO9Zg5LLLkfJF9E6CCmXlSE4UVceloys8JrFqCcHloC3usd/kJCyPDwH2SOlzix2j3xaP9sUX3e8+kvkuleAA== @@ -22928,7 +23311,7 @@ packages: postcss: 7.0.35 schema-utils: 3.0.0 semver: 7.3.5 - webpack: 4.46.0_webpack-cli@4.7.0 + webpack: 4.46.0_webpack-cli@4.7.2 dev: false engines: node: '>= 10.13.0' @@ -24038,7 +24421,7 @@ packages: dependencies: loader-utils: 2.0.0 schema-utils: 3.0.0 - webpack: 4.46.0_webpack-cli@4.7.0 + webpack: 4.46.0_webpack-cli@4.7.2 dev: false engines: node: '>= 10.13.0' @@ -24233,14 +24616,14 @@ packages: react-dom: ^16.6.0 || ^17.0.0 resolution: integrity: sha512-N+iUlo9WR3/u9qGMmP4jiYfaD6pe9IvDTapZLFJz2D3xlTlCM1Bzy4Ab3g72Nbajo/0ZyW+W9hdz8Hbe4l97pQ== - /react-hook-form/6.15.7_react@17.0.2: + /react-hook-form/6.15.8_react@17.0.2: dependencies: react: 17.0.2 dev: false peerDependencies: react: ^16.8.0 || ^17 resolution: - integrity: sha512-cfJoBCF/hEjrgfto+70pLDi/F5IBWr5hQhYDFklxb+zyttQORVs+y70OaY4Z4V3IZFeY5oN3ECzEwBaiO1tT1A== + integrity: sha512-prq82ofMbnRyj5wqDe8hsTRcdR25jQ+B8KtCS7BLCzjFHAwNuCjRwzPuP4eYLsEBjEIeYd6try+pdLdw0kPkpg== /react-i18next/11.10.0_i18next@20.3.1+react@17.0.2: dependencies: '@babel/runtime': 7.14.5 @@ -24401,12 +24784,12 @@ packages: react: ^16.14.0 resolution: integrity: sha512-L8yPjqPE5CZO6rKsKXRO/rVPiaCOy0tQQJbC+UjPNlobl5mad59lvPjwFsQHTvL03caVDIVr9x9/OSgDe6I5Eg== - /react-textarea-autosize/8.3.3_@types+react@17.0.9+react@17.0.2: + /react-textarea-autosize/8.3.3_189cc19b8edfe5959338b863f6e5c247: dependencies: '@babel/runtime': 7.14.5 react: 17.0.2 use-composed-ref: 1.1.0_react@17.0.2 - use-latest: 1.2.0_@types+react@17.0.9+react@17.0.2 + use-latest: 1.2.0_189cc19b8edfe5959338b863f6e5c247 dev: false engines: node: '>=10' @@ -24505,7 +24888,7 @@ packages: /readable-stream/1.0.33: dependencies: core-util-is: 1.0.2 - inherits: 2.0.3 + inherits: 2.0.4 isarray: 0.0.1 string_decoder: 0.10.31 dev: false @@ -24842,13 +25225,13 @@ packages: integrity: sha1-VNvzd+UUQKypCkzSdGANP/LYiKk= /relay-compiler/10.1.0_graphql@15.5.0: dependencies: - '@babel/core': 7.14.3 + '@babel/core': 7.14.5 '@babel/generator': 7.14.5 '@babel/parser': 7.14.5 '@babel/runtime': 7.14.5 '@babel/traverse': 7.14.5 '@babel/types': 7.14.5 - babel-preset-fbjs: 3.4.0_@babel+core@7.14.3 + babel-preset-fbjs: 3.4.0_@babel+core@7.14.5 chalk: 4.1.1 fb-watchman: 2.0.1 fbjs: 3.0.0 @@ -25454,12 +25837,12 @@ packages: hasBin: true resolution: integrity: sha512-VFWDAHOe6mRuT4mZRd4eKE+d8Uedrk6Xnh7Sh9b4NGufQLQjOrvf/MQoOdx+0s92L89FeyUUNfU597j/3uNpag== - /sass-loader/12.0.0_node-sass@6.0.0+webpack@5.38.1: + /sass-loader/12.1.0_node-sass@6.0.0+webpack@5.38.1: dependencies: klona: 2.0.4 neo-async: 2.6.2 node-sass: 6.0.0 - webpack: 5.38.1_webpack-cli@4.7.0 + webpack: 5.38.1_webpack-cli@4.7.2 dev: false engines: node: '>= 12.13.0' @@ -25476,7 +25859,7 @@ packages: sass: optional: true resolution: - integrity: sha512-LJQMyDdNdhcvoO2gJFw7KpTaioVFDeRJOuatRDUNgCIqyu4s4kgDsNofdGzAZB1zFOgo/p3fy+aR/uGXamcJBg== + integrity: sha512-FVJZ9kxVRYNZTIe2xhw93n3xJNYZADr+q69/s98l9nTCrWASo+DR2Ot0s5xTKQDDEosUkatsGeHxcH4QBp5bSg== /sax/1.2.4: dev: false resolution: @@ -25999,12 +26382,26 @@ packages: node: '>=8' resolution: integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q== - /slice-ansi/0.0.4: + /slice-ansi/3.0.0: + dependencies: + ansi-styles: 4.3.0 + astral-regex: 2.0.0 + is-fullwidth-code-point: 3.0.0 dev: false engines: - node: '>=0.10.0' + node: '>=8' + resolution: + integrity: sha512-pSyv7bSTC7ig9Dcgbw9AuRNUb5k5V6oDudjZoMBSr13qpLBG7tB+zgCkARjq7xIUgdz5P1Qe8u+rSGdouOOIyQ== + /slice-ansi/4.0.0: + dependencies: + ansi-styles: 4.3.0 + astral-regex: 2.0.0 + is-fullwidth-code-point: 3.0.0 + dev: false + engines: + node: '>=10' resolution: - integrity: sha1-7b+JA/ZvfOL46v1s7tZeJkyDGzU= + integrity: sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ== /slice-source/0.4.1: dev: false resolution: @@ -26194,7 +26591,7 @@ packages: abab: 2.0.5 iconv-lite: 0.6.3 source-map-js: 0.6.2 - webpack: 5.38.1_webpack-cli@4.7.0 + webpack: 5.38.1_webpack-cli@4.7.2 dev: false engines: node: '>= 12.13.0' @@ -26841,7 +27238,7 @@ packages: dependencies: loader-utils: 2.0.0 schema-utils: 2.7.1 - webpack: 4.46.0_webpack-cli@4.7.0 + webpack: 4.46.0_webpack-cli@4.7.2 dev: false engines: node: '>= 8.9.0' @@ -26853,7 +27250,7 @@ packages: dependencies: loader-utils: 2.0.0 schema-utils: 3.0.0 - webpack: 5.38.1_webpack-cli@4.7.0 + webpack: 5.38.1_webpack-cli@4.7.2 dev: false engines: node: '>= 10.13.0' @@ -27278,7 +27675,7 @@ packages: serialize-javascript: 4.0.0 source-map: 0.6.1 terser: 4.8.0 - webpack: 4.46.0_webpack-cli@4.7.0 + webpack: 4.46.0_webpack-cli@4.7.2 webpack-sources: 1.4.3 worker-farm: 1.7.0 dev: false @@ -27298,7 +27695,7 @@ packages: serialize-javascript: 4.0.0 source-map: 0.6.1 terser: 4.8.0 - webpack: 4.46.0_webpack-cli@4.7.0 + webpack: 4.46.0_webpack-cli@4.7.2 webpack-sources: 1.4.3 dev: false engines: @@ -27315,7 +27712,7 @@ packages: serialize-javascript: 5.0.1 source-map: 0.6.1 terser: 5.7.0 - webpack: 5.28.0_webpack-cli@4.7.0 + webpack: 5.28.0_webpack-cli@4.7.2 dev: false engines: node: '>= 10.13.0' @@ -27331,7 +27728,7 @@ packages: serialize-javascript: 5.0.1 source-map: 0.6.1 terser: 5.7.0 - webpack: 5.38.1_webpack-cli@4.7.0 + webpack: 5.38.1_webpack-cli@4.7.2 dev: false engines: node: '>= 10.13.0' @@ -27855,16 +28252,16 @@ packages: dev: false resolution: integrity: sha512-75yFYNt0ws1TTehrGxhOqH3tutvBCAs+RG2SrhVIqQvU72kLAb4ercl32dES8yKbXBVHjzv3OXNg5gsbak+3Dg== - /truffle/5.3.9_@types+node@14.17.2+react@17.0.2: + /truffle/5.3.10_@types+node@14.17.3+react@17.0.2: dependencies: - '@truffle/debugger': 9.0.1 + '@truffle/debugger': 9.1.0 app-module-path: 2.2.0 mocha: 8.1.2 original-require: 1.0.1 dev: false hasBin: true optionalDependencies: - '@truffle/db': 0.5.14_@types+node@14.17.2+react@17.0.2 + '@truffle/db': 0.5.15_@types+node@14.17.3+react@17.0.2 '@truffle/preserve-fs': 0.2.2 '@truffle/preserve-to-buckets': 0.2.2 '@truffle/preserve-to-filecoin': 0.2.2 @@ -27874,7 +28271,7 @@ packages: react: '*' requiresBuild: true resolution: - integrity: sha512-heKtYqUmYCtMxIn1ho/MgeLMYeoqeUrf0f4J7nQnSrMaPz0L5YXdtYI5UP4fFkc6XKLZWHfvyx/3ccz05OS63Q== + integrity: sha512-1dc3CT18rYRiOLFO9f6AVnNLpk4sGGGE/3ybM07WeoMeSLnwpll/I3r3ZBfX0vgj8nbDp79I4EecMu+gORGBZA== /ts-dedent/2.1.1: dev: false engines: @@ -27958,7 +28355,7 @@ packages: micromatch: 4.0.4 semver: 7.3.5 typescript: 4.3.2 - webpack: 5.38.1_webpack-cli@4.7.0 + webpack: 5.38.1_webpack-cli@4.7.2 dev: false engines: node: '>=12.0.0' @@ -28618,7 +29015,7 @@ packages: loader-utils: 2.0.0 mime-types: 2.1.31 schema-utils: 3.0.0 - webpack: 4.46.0_webpack-cli@4.7.0 + webpack: 4.46.0_webpack-cli@4.7.2 dev: false engines: node: '>= 10.13.0' @@ -28636,7 +29033,7 @@ packages: loader-utils: 2.0.0 mime-types: 2.1.31 schema-utils: 3.0.0 - webpack: 5.38.1_webpack-cli@4.7.0 + webpack: 5.38.1_webpack-cli@4.7.2 dev: false engines: node: '>= 10.13.0' @@ -28708,9 +29105,9 @@ packages: react: ^16.8.0 || ^17.0.0 resolution: integrity: sha512-my1lNHGWsSDAhhVAT4MKs6IjBUtG6ZG11uUqexPH9PptiIZDQOzaF4f5tEbJ2+7qvNbtXNBbU3SfmN+fXlWDhg== - /use-isomorphic-layout-effect/1.1.1_@types+react@17.0.9+react@17.0.2: + /use-isomorphic-layout-effect/1.1.1_189cc19b8edfe5959338b863f6e5c247: dependencies: - '@types/react': 17.0.9 + '@types/react': 17.0.11 react: 17.0.2 dev: false peerDependencies: @@ -28721,11 +29118,11 @@ packages: optional: true resolution: integrity: sha512-L7Evj8FGcwo/wpbv/qvSfrkHFtOpCzvM5yl2KVyDJoylVuSvzphiiasmjgQPttIGBAy2WKiBNR98q8w7PiNgKQ== - /use-latest/1.2.0_@types+react@17.0.9+react@17.0.2: + /use-latest/1.2.0_189cc19b8edfe5959338b863f6e5c247: dependencies: - '@types/react': 17.0.9 + '@types/react': 17.0.11 react: 17.0.2 - use-isomorphic-layout-effect: 1.1.1_@types+react@17.0.9+react@17.0.2 + use-isomorphic-layout-effect: 1.1.1_189cc19b8edfe5959338b863f6e5c247 dev: false peerDependencies: '@types/react': '*' @@ -30236,12 +30633,12 @@ packages: node: '>=10.4' resolution: integrity: sha512-qBIvFLGiBpLjfwmYAaHPXsn+ho5xZnGvyGvsarywGNc8VyQJUMHJ8OBKGGrPER0okBeMDaan4mNBlgBROxuI8w== - /webpack-cli/4.7.0_4f38b4f344caeae135cc7debc9aac51b: + /webpack-cli/4.7.2_4f38b4f344caeae135cc7debc9aac51b: dependencies: '@discoveryjs/json-ext': 0.5.3 - '@webpack-cli/configtest': 1.0.4_webpack-cli@4.7.0+webpack@5.38.1 - '@webpack-cli/info': 1.3.0_webpack-cli@4.7.0 - '@webpack-cli/serve': 1.5.1_7cbb6369db867e7782bcc6ed9d7442a1 + '@webpack-cli/configtest': 1.0.4_webpack-cli@4.7.2+webpack@5.38.1 + '@webpack-cli/info': 1.3.0_webpack-cli@4.7.2 + '@webpack-cli/serve': 1.5.1_8f539f003d3f73da23f531c906cfc201 colorette: 1.2.2 commander: 7.2.0 execa: 5.1.1 @@ -30250,9 +30647,9 @@ packages: interpret: 2.2.0 rechoir: 0.7.0 v8-compile-cache: 2.3.0 - webpack: 5.38.1_webpack-cli@4.7.0 - webpack-dev-server: 3.11.2_webpack-cli@4.7.0+webpack@5.38.1 - webpack-merge: 5.7.3 + webpack: 5.38.1_webpack-cli@4.7.2 + webpack-dev-server: 3.11.2_webpack-cli@4.7.2+webpack@5.38.1 + webpack-merge: 5.8.0 dev: false engines: node: '>=10.13.0' @@ -30273,14 +30670,14 @@ packages: webpack-dev-server: optional: true resolution: - integrity: sha512-7bKr9182/sGfjFm+xdZSwgQuFjgEcy0iCTIBxRUeteJ2Kr8/Wz0qNJX+jw60LU36jApt4nmMkep6+W5AKhok6g== + integrity: sha512-mEoLmnmOIZQNiRl0ebnjzQ74Hk0iKS5SiEEnpq3dRezoyR3yPaeQZCMCe+db4524pj1Pd5ghZXjT41KLzIhSLw== /webpack-dev-middleware/3.7.3_webpack@4.46.0: dependencies: memory-fs: 0.4.1 mime: 2.5.2 mkdirp: 0.5.5 range-parser: 1.2.1 - webpack: 4.46.0_webpack-cli@4.7.0 + webpack: 4.46.0_webpack-cli@4.7.2 webpack-log: 2.0.0 dev: false engines: @@ -30295,7 +30692,7 @@ packages: mime: 2.5.2 mkdirp: 0.5.5 range-parser: 1.2.1 - webpack: 5.38.1_webpack-cli@4.7.0 + webpack: 5.38.1_webpack-cli@4.7.2 webpack-log: 2.0.0 dev: false engines: @@ -30304,7 +30701,7 @@ packages: webpack: ^4.0.0 || ^5.0.0 resolution: integrity: sha512-djelc/zGiz9nZj/U7PTBi2ViorGJXEWo/3ltkPbDyxCXhhEXkW0ce99falaok4TPj+AsxLiXJR0EBOb0zh9fKQ== - /webpack-dev-server/3.11.2_webpack-cli@4.7.0+webpack@5.38.1: + /webpack-dev-server/3.11.2_webpack-cli@4.7.2+webpack@5.38.1: dependencies: ansi-html: 0.0.7 bonjour: 3.5.0 @@ -30335,8 +30732,8 @@ packages: strip-ansi: 3.0.1 supports-color: 6.1.0 url: 0.11.0 - webpack: 5.38.1_webpack-cli@4.7.0 - webpack-cli: 4.7.0_4f38b4f344caeae135cc7debc9aac51b + webpack: 5.38.1_webpack-cli@4.7.2 + webpack-cli: 4.7.2_4f38b4f344caeae135cc7debc9aac51b webpack-dev-middleware: 3.7.3_webpack@5.38.1 webpack-log: 2.0.0 ws: 6.2.2 @@ -30355,7 +30752,7 @@ packages: integrity: sha512-A80BkuHRQfCiNtGBS1EMf2ChTUs0x+B3wGDFmOeT4rmJOHhHTCH2naNxIHhmkr0/UillP4U3yeIyv1pNp+QDLQ== /webpack-filter-warnings-plugin/1.2.1_webpack@4.46.0: dependencies: - webpack: 4.46.0_webpack-cli@4.7.0 + webpack: 4.46.0_webpack-cli@4.7.2 dev: false engines: node: '>= 4.3 < 5.0.0 || >= 5.10' @@ -30381,7 +30778,7 @@ packages: node: '>= 6' resolution: integrity: sha512-cX8G2vR/85UYG59FgkoMamwHUIkSSlV3bBMRsbxVXVUk2j6NleCKjQ/WE9eYg9WY4w25O9w8wKP4rzNZFmUcUg== - /webpack-merge/5.7.3: + /webpack-merge/5.8.0: dependencies: clone-deep: 4.0.1 wildcard: 2.0.0 @@ -30389,7 +30786,7 @@ packages: engines: node: '>=10.0.0' resolution: - integrity: sha512-6/JUQv0ELQ1igjGDzHkXbVDRxkfA57Zw7PfiupdLFJYrgFqY5ZP8xxbpp2lU3EPwYx89ht5Z/aDkD40hFCm5AA== + integrity: sha512-/SaI7xY0831XwP6kzuwhKWVKDP9t1QY1h65lAFLbZqMPIuYcD9QAW4u9STIbU9kaJbPBB/geU/gLr1wDjOhQ+Q== /webpack-node-externals/2.5.2: dev: false resolution: @@ -30416,7 +30813,7 @@ packages: dev: false resolution: integrity: sha512-kDUmfm3BZrei0y+1NTHJInejzxfhtU8eDj2M7OKb2IWrPFAeO1SOH2KuQ68MSZu9IGEHcxbkKKR1v18FrUSOmA== - /webpack/4.46.0_webpack-cli@4.7.0: + /webpack/4.46.0_webpack-cli@4.7.2: dependencies: '@webassemblyjs/ast': 1.9.0 '@webassemblyjs/helper-module-context': 1.9.0 @@ -30440,7 +30837,7 @@ packages: tapable: 1.1.3 terser-webpack-plugin: 1.4.5_webpack@4.46.0 watchpack: 1.7.5 - webpack-cli: 4.7.0_4f38b4f344caeae135cc7debc9aac51b + webpack-cli: 4.7.2_4f38b4f344caeae135cc7debc9aac51b webpack-sources: 1.4.3 dev: false engines: @@ -30456,7 +30853,7 @@ packages: optional: true resolution: integrity: sha512-6jJuJjg8znb/xRItk7bkT0+Q7AHCYjjFnvKIWQPkNIOyRqoCGvkOs0ipeQzrqz4l5FtN5ZI/ukEHroeX/o1/5Q== - /webpack/5.28.0_webpack-cli@4.7.0: + /webpack/5.28.0_webpack-cli@4.7.2: dependencies: '@types/eslint-scope': 3.7.0 '@types/estree': 0.0.46 @@ -30480,7 +30877,7 @@ packages: tapable: 2.2.0 terser-webpack-plugin: 5.1.3_webpack@5.28.0 watchpack: 2.2.0 - webpack-cli: 4.7.0_4f38b4f344caeae135cc7debc9aac51b + webpack-cli: 4.7.2_4f38b4f344caeae135cc7debc9aac51b webpack-sources: 2.3.0 dev: false engines: @@ -30493,7 +30890,7 @@ packages: optional: true resolution: integrity: sha512-1xllYVmA4dIvRjHzwELgW4KjIU1fW4PEuEnjsylz7k7H5HgPOctIq7W1jrt3sKH9yG5d72//XWzsHhfoWvsQVg== - /webpack/5.38.1_webpack-cli@4.7.0: + /webpack/5.38.1_webpack-cli@4.7.2: dependencies: '@types/eslint-scope': 3.7.0 '@types/estree': 0.0.47 @@ -30517,7 +30914,7 @@ packages: tapable: 2.2.0 terser-webpack-plugin: 5.1.3_webpack@5.38.1 watchpack: 2.2.0 - webpack-cli: 4.7.0_4f38b4f344caeae135cc7debc9aac51b + webpack-cli: 4.7.2_4f38b4f344caeae135cc7debc9aac51b webpack-sources: 2.3.0 dev: false engines: @@ -30777,10 +31174,10 @@ packages: dev: false resolution: integrity: sha512-fU2OcNA/GVAJLLyKUoHkAgIhKb0JoCpSjLC/G2vYKxUjVmQwGbRVeoPJ1a8U4pnVofz4AQV5Y/NEw8oKqxEBtA== - /workerpool/6.1.0: + /workerpool/6.1.4: dev: false resolution: - integrity: sha512-toV7q9rWNYha963Pl/qyeZ6wG+3nnsyvolaNUS8+R5Wtw6qJPTxIlOP1ZSvcGhEJw+l3HMMmtiNo9Gl61G4GVg== + integrity: sha512-jGWPzsUqzkow8HoAvqaPWTUPCrlPJaJ5tY8Iz7n1uCz3tTp6s3CDG0FF1NsX42WNlkRSW6Mr+CDZGnNoSsKa7g== /wrap-ansi/2.1.0: dependencies: string-width: 1.0.2 @@ -30790,15 +31187,6 @@ packages: node: '>=0.10.0' resolution: integrity: sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU= - /wrap-ansi/3.0.1: - dependencies: - string-width: 2.1.1 - strip-ansi: 4.0.0 - dev: false - engines: - node: '>=4' - resolution: - integrity: sha1-KIoE2H7aXChuBg3+jxNc6NAH+Lo= /wrap-ansi/5.1.0: dependencies: ansi-styles: 3.2.1 @@ -30817,7 +31205,6 @@ packages: dev: false engines: node: '>=8' - optional: true resolution: integrity: sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA== /wrap-ansi/7.0.0: @@ -31343,12 +31730,12 @@ packages: '@types/chai': 4.2.15 '@types/dotenv': 6.1.1 '@types/mocha': 8.2.2 - '@types/node': 14.17.2 + '@types/node': 14.17.3 chai: 4.3.0 dotenv: 10.0.0 - ethers: 5.3.0 + ethers: 5.3.1 ethlint: 1.2.5 - mocha: 8.4.0 + mocha: 9.0.0 moment: 2.29.1 ts-node: 9.1.1_typescript@4.3.2 typescript: 4.3.2 @@ -31357,7 +31744,7 @@ packages: dev: false name: '@rush-temp/device-registry' resolution: - integrity: sha512-7VpbdWl0ARZhpt5q032oOGHowB+5/gPrqeEUIvtvJz13SDuGIq5hyROyGBLh8yqgFNVsRIC57bLUUxROI7e61A== + integrity: sha512-LTkjt1Rn2tUMpwSGWQBulDQXfBUomh97li5MKs/p7fCM3NzV8TichEnVjBw2qaPol+gHRADTz1eGisKRJmVA0w== tarball: file:projects/device-registry.tgz version: 0.0.0 file:projects/exchange-client.tgz_44e5b2290116f96a36a1ccffc3f92c45: @@ -31367,10 +31754,10 @@ packages: '@nestjs/typeorm': 7.1.5_ea0bce67b09d33ed79e6ce416945d83f '@openapitools/openapi-generator-cli': 2.3.3_eb344851c67507785243f1ab4a9e62e0 '@types/mocha': 8.2.2 - '@types/node': 14.17.2 + '@types/node': 14.17.3 axios: 0.21.1 json-to-pretty-yaml: 1.2.2 - mocha: 8.4.0 + mocha: 9.0.0 prettier: 2.3.1 ts-node: 9.1.1_typescript@4.3.2 typescript: 4.3.2 @@ -31388,7 +31775,7 @@ packages: swagger-ui-express: '*' typeorm: '*' resolution: - integrity: sha512-LT5jiLld1FwvpkcU/5c4Pu9mbo06E4tzwZQRCwMBxzCeqX/w1gHSQdbWeonNijufxG+NbihGMDtZg1a/VGkTmA== + integrity: sha512-VX1AdYb0V5foplCgx427Xqc1gOcF7LcLaPj/IpXqmgFiKDSaUoRtM4oOa/lIWzL1d4YqKxJX8FE0mpmpgfS0gg== tarball: file:projects/exchange-client.tgz version: 0.0.0 file:projects/exchange-core-irec.tgz_6a93b27028645614b9c605eaa34987d0: @@ -31397,11 +31784,11 @@ packages: '@types/bn.js': 5.1.0 '@types/chai': 4.2.15 '@types/mocha': 8.2.2 - '@types/node': 14.17.2 + '@types/node': 14.17.3 bn.js: 5.2.0 chai: 4.3.0 immutable: 4.0.0-rc.12 - mocha: 8.4.0 + mocha: 9.0.0 moment: 2.29.1 moment-range: 4.0.2_moment@2.29.1 rxjs: 6.6.7 @@ -31415,7 +31802,7 @@ packages: class-validator: '*' reflect-metadata: '*' resolution: - integrity: sha512-zYGGTQWgUNtC+uSH8VgWGxRNPK2wlYICDxGxzbzEqNs12rk3i+xdNNNpoyIWBVMJnvbeKVkevIamH+PELTGG+Q== + integrity: sha512-yVwGXgC07PBTm9fRs8n+PKt6NkAgWI+S6Ijau+1W3UahaYtA3TGmKfSK2Yy0Z763i9pOOg7rPIeg04WCwqQg0g== tarball: file:projects/exchange-core-irec.tgz version: 0.0.0 file:projects/exchange-core.tgz_6a93b27028645614b9c605eaa34987d0: @@ -31424,11 +31811,11 @@ packages: '@types/bn.js': 5.1.0 '@types/chai': 4.2.15 '@types/mocha': 8.2.2 - '@types/node': 14.17.2 + '@types/node': 14.17.3 bn.js: 5.2.0 chai: 4.3.0 immutable: 4.0.0-rc.12 - mocha: 8.4.0 + mocha: 9.0.0 moment: 2.29.1 rxjs: 6.6.7 ts-node: 9.1.1_typescript@4.3.2 @@ -31441,16 +31828,16 @@ packages: class-validator: '*' reflect-metadata: '*' resolution: - integrity: sha512-+WEIgRSsfz4hKB31dV3Nfbuyg1irTBQ/FY4oWZAmei+vYWkXVh0hQ8lnaH5Pc1XV8jx288sPJ9Knk1WfewumDQ== + integrity: sha512-DX5d0UgGn0NzACbueDoCiVLHMSlV3m71rsBtHZ0+diTG3o6T5uYjNjObt0fHYKgKz7nXCIFLZn84bfgxLkrnkA== tarball: file:projects/exchange-core.tgz version: 0.0.0 - file:projects/exchange-io-erc1888.tgz_c83006d3c5d1c89e9525194050e46052: + file:projects/exchange-io-erc1888.tgz_0a559ecaea81dc0c457947869f989950: dependencies: - '@ethersproject/abi': 5.3.0 + '@ethersproject/abi': 5.3.1 '@ethersproject/abstract-provider': 5.3.0 '@ethersproject/contracts': 5.3.0 - '@ethersproject/providers': 5.3.0 - '@nestjs/cli': 7.6.0_webpack-cli@4.7.0 + '@ethersproject/providers': 5.3.1 + '@nestjs/cli': 7.6.0_webpack-cli@4.7.2 '@nestjs/common': 7.6.17_fbc9982997ba253269f25bdc348cb93c '@nestjs/config': 0.6.3_0ff807c7e0c0946ae4ae01be7385e726 '@nestjs/core': 7.6.17_4abd72a689207fb49212f568a33f7183 @@ -31459,15 +31846,15 @@ packages: '@nestjs/typeorm': 7.1.5_ea0bce67b09d33ed79e6ce416945d83f '@types/chai': 4.2.15 '@types/mocha': 8.2.2 - '@types/node': 14.17.2 + '@types/node': 14.17.3 '@types/superagent': 4.1.11 '@types/supertest': 2.0.11 chai: 4.3.0 class-validator: 0.13.1 eslint-plugin-jest: 24.3.6_typescript@4.3.2 - ethers: 5.3.0 + ethers: 5.3.1 jest: 27.0.4_ts-node@9.1.1 - mocha: 8.4.0 + mocha: 9.0.0 moment: 2.29.1 polly-js: 1.8.2 prettier: 2.3.1 @@ -31486,7 +31873,7 @@ packages: reflect-metadata: '*' webpack-cli: '*' resolution: - integrity: sha512-azKDeOxz/G1aUMwFkR21uxDlIOjbpHT3eKWawy7oN7bACeKGMyNGPTpOExGBFHKK4nJA1PWHVaWWxiqriaU50w== + integrity: sha512-XcTxxrUmO0UTfKOmEEoGaQO9v0b6jXN8IvTjB0QPfLdHdDvc30oLhYTRE6A89h4MspvIXxj/u3+zjTdZ6HmtJw== tarball: file:projects/exchange-io-erc1888.tgz version: 0.0.0 file:projects/exchange-irec-client.tgz_44e5b2290116f96a36a1ccffc3f92c45: @@ -31496,10 +31883,10 @@ packages: '@nestjs/typeorm': 7.1.5_ea0bce67b09d33ed79e6ce416945d83f '@openapitools/openapi-generator-cli': 2.3.3_eb344851c67507785243f1ab4a9e62e0 '@types/mocha': 8.2.2 - '@types/node': 14.17.2 + '@types/node': 14.17.3 axios: 0.21.1 json-to-pretty-yaml: 1.2.2 - mocha: 8.4.0 + mocha: 9.0.0 prettier: 2.3.1 ts-node: 9.1.1_typescript@4.3.2 typescript: 4.3.2 @@ -31517,12 +31904,12 @@ packages: swagger-ui-express: '*' typeorm: '*' resolution: - integrity: sha512-UJl7W4/707ck/0eHshJNmZU6iSkCbEzgZhfj74OloqGF5DhbQGZvbdoYjKghvRentumlrQSxdC3qBv4jXAozAg== + integrity: sha512-egnvgf+E1hwanTqbq7HVsNgC4BcDMYnSAsROUl9uY6MjbqqIHxH2gmUW68LaJdCi72qOBHhZ9fQwW750xz62EA== tarball: file:projects/exchange-irec-client.tgz version: 0.0.0 - file:projects/exchange-irec.tgz_ae8c87991f1134eece172971a909d06b: + file:projects/exchange-irec.tgz_b9f5874f820ca87d22cbd7e111ab7178: dependencies: - '@nestjs/cli': 7.6.0_webpack-cli@4.7.0 + '@nestjs/cli': 7.6.0_webpack-cli@4.7.2 '@nestjs/common': 7.6.17_fbc9982997ba253269f25bdc348cb93c '@nestjs/config': 0.6.3_0ff807c7e0c0946ae4ae01be7385e726 '@nestjs/core': 7.6.17_4abd72a689207fb49212f568a33f7183 @@ -31537,7 +31924,7 @@ packages: '@types/express': 4.17.12 '@types/jest': 26.0.23 '@types/mocha': 8.2.2 - '@types/node': 14.17.2 + '@types/node': 14.17.3 '@types/superagent': 4.1.11 '@types/supertest': 2.0.11 chai: 4.3.0 @@ -31545,7 +31932,7 @@ packages: class-validator: 0.13.1 eslint-plugin-jest: 24.3.6_typescript@4.3.2 jest: 27.0.4_ts-node@9.1.1 - mocha: 8.4.0 + mocha: 9.0.0 moment: 2.29.1 pg: 8.6.0 polly-js: 1.8.2 @@ -31564,26 +31951,26 @@ packages: swagger-ui-express: '*' webpack-cli: '*' resolution: - integrity: sha512-r3VaWz4/CahlHbyJFsVA9F+Jek3/mkgdaRHpvxvMQzicgB6z1tHV45mRH4PKAxqFpscozegzn5X0VAdOW++yiQ== + integrity: sha512-yWbf03/XwP5mVcETo5y8hdxzn89R/BYK66oXFhOsAeCR1/NOEv3vfqcFWfAaV3+JE5ba478TcBP1yIl+GHI/Ug== tarball: file:projects/exchange-irec.tgz version: 0.0.0 file:projects/exchange-token-account.tgz_react@17.0.2: dependencies: - '@ethersproject/abi': 5.3.0 + '@ethersproject/abi': 5.3.1 '@ethersproject/contracts': 5.3.0 - '@ethersproject/providers': 5.3.0 + '@ethersproject/providers': 5.3.1 '@openzeppelin/cli': 2.8.2 '@openzeppelin/contracts': 4.1.0 '@openzeppelin/contracts-upgradeable': 4.1.0 '@openzeppelin/upgrades': 2.8.0 - '@typechain/ethers-v5': 7.0.0_b59b4be7c4febb6a9dc6ed09ef58a1c9 + '@typechain/ethers-v5': 7.0.1_534a0803dec1c20d83d335d68085cd00 '@types/mocha': 8.2.2 - '@types/node': 14.17.2 + '@types/node': 14.17.3 chai: 4.3.0 - ethers: 5.3.0 - mocha: 8.4.0 + ethers: 5.3.1 + mocha: 9.0.0 solc: 0.8.4 - truffle: 5.3.9_@types+node@14.17.2+react@17.0.2 + truffle: 5.3.10_@types+node@14.17.3+react@17.0.2 truffle-typings: 1.0.8 typechain: 5.0.0_typescript@4.3.2 typescript: 4.3.2 @@ -31593,20 +31980,20 @@ packages: peerDependencies: react: '*' resolution: - integrity: sha512-vCNc63HVO0ViEk/DBSzEAg9ihWxjqUb/4icBZze4XtOwgWljOxZngTmGX4nXe4nKsh9IcQcFUhOmT/IS/CsM8g== + integrity: sha512-TmejUOdisxT8AfqjTRGvcp6UUo1OYw4rNkKlFE+DI+o+n1AFN8CkADuz4m/gwkEEIL7k75SQ1jznWv/wmhTAjQ== tarball: file:projects/exchange-token-account.tgz version: 0.0.0 file:projects/exchange-ui-core.tgz: dependencies: '@date-io/moment': 1.3.13_moment@2.29.1 - '@material-ui/core': 4.11.4_e84af7742d25ac89b84cf59d2816ddf6 - '@material-ui/icons': 4.11.2_083feab47dc0d33e56a0783af158b52a - '@material-ui/lab': 4.0.0-alpha.58_083feab47dc0d33e56a0783af158b52a + '@material-ui/core': 4.11.4_7a759d72fcbc11ce03c9de110c21df82 + '@material-ui/icons': 4.11.2_5e14cec25e1ceef8d08e6ab1e0c4cb05 + '@material-ui/lab': 4.0.0-alpha.58_5e14cec25e1ceef8d08e6ab1e0c4cb05 '@material-ui/pickers': 3.3.10_f543984b3e6c18c2e2e104a9ecbda934 '@types/lodash': 4.14.170 '@types/mocha': 8.2.2 - '@types/node': 14.17.2 - '@types/react': 17.0.9 + '@types/node': 14.17.3 + '@types/react': 17.0.11 '@types/react-redux': 7.1.16 '@types/react-router-dom': 5.1.7 '@types/yup': 0.29.11 @@ -31615,14 +32002,14 @@ packages: connected-react-router: 6.9.1_7e4552cdc026a4bda18e398cb3ee29b8 dayjs: 1.10.5 eslint-plugin-react: 7.24.0 - ethers: 5.3.0 + ethers: 5.3.1 formik: 2.2.9_react@17.0.2 formik-material-ui: 3.0.1_8c8510503ff976740e1d76ab6c6427c3 formik-material-ui-pickers: 0.0.12_08032a4b4e82050abfb7dc276cf451f4 history: 4.10.1 i18next: 20.3.1 lodash: 4.17.21 - mocha: 8.4.0 + mocha: 9.0.0 moment: 2.29.1 moment-timezone: 0.5.33 react: 17.0.2 @@ -31638,13 +32025,13 @@ packages: dev: false name: '@rush-temp/exchange-ui-core' resolution: - integrity: sha512-OcKmRoocAxFP7HUJa04SY+5ZBgOWdqK6jGf4aWUElXAeYpHp4PMLCaExUXiLZwziXLjZHqrqW0jtjTqHccaOcQ== + integrity: sha512-Ur3aw6Rfml9eowAzVlKAp2OAx0MQ4M+KiGidbpSsbbk7i1HTcSeOvhL6mfbATIIWPdeswdB1TkwtHhGOU3aZng== tarball: file:projects/exchange-ui-core.tgz version: 0.0.0 - file:projects/exchange.tgz_b8311556de7f9bff62c8dfdc9a67c4f0: + file:projects/exchange.tgz_b835a54eebb571fabedc9112f430fbc7: dependencies: '@jest/globals': 27.0.3 - '@nestjs/cli': 7.6.0_webpack-cli@4.7.0 + '@nestjs/cli': 7.6.0_webpack-cli@4.7.2 '@nestjs/common': 7.6.17_fbc9982997ba253269f25bdc348cb93c '@nestjs/config': 0.6.3_0ff807c7e0c0946ae4ae01be7385e726 '@nestjs/core': 7.6.17_4abd72a689207fb49212f568a33f7183 @@ -31661,7 +32048,7 @@ packages: '@types/express': 4.17.12 '@types/jest': 26.0.23 '@types/mocha': 8.2.2 - '@types/node': 14.17.2 + '@types/node': 14.17.3 '@types/superagent': 4.1.11 '@types/supertest': 2.0.11 bn.js: 5.2.0 @@ -31669,11 +32056,11 @@ packages: class-transformer: 0.3.1 class-validator: 0.13.1 eslint-plugin-jest: 24.3.6_typescript@4.3.2 - ethers: 5.3.0 + ethers: 5.3.1 ganache-cli: 6.12.2 immutable: 4.0.0-rc.12 jest: 27.0.4_ts-node@9.1.1 - mocha: 8.4.0 + mocha: 9.0.0 moment: 2.29.1 moment-range: 4.0.2_moment@2.29.1 pg: 8.6.0 @@ -31695,7 +32082,7 @@ packages: passport: '*' webpack-cli: '*' resolution: - integrity: sha512-TCVF1oHmnenqDnB8GSqTwaa/cgFS+RYwu48X1RVjPPgQ5Q0mmb5lcGB8vdZh0hRnx9RET+gG7Mn13CEPcSudAQ== + integrity: sha512-g2qZfT3/5gZrL3AX+PAT8AsXRWtxdjSB5bgiKJ3Etr639Pn9L5C7pwVdz6zGqxL7wYhTL9JmLOa8UFRVz0G/IQ== tarball: file:projects/exchange.tgz version: 0.0.0 file:projects/issuer-api-client.tgz_44e5b2290116f96a36a1ccffc3f92c45: @@ -31705,10 +32092,10 @@ packages: '@nestjs/typeorm': 7.1.5_ea0bce67b09d33ed79e6ce416945d83f '@openapitools/openapi-generator-cli': 2.3.3_eb344851c67507785243f1ab4a9e62e0 '@types/mocha': 8.2.2 - '@types/node': 14.17.2 + '@types/node': 14.17.3 axios: 0.21.1 json-to-pretty-yaml: 1.2.2 - mocha: 8.4.0 + mocha: 9.0.0 prettier: 2.3.1 ts-node: 9.1.1_typescript@4.3.2 typescript: 4.3.2 @@ -31726,12 +32113,12 @@ packages: swagger-ui-express: '*' typeorm: '*' resolution: - integrity: sha512-sW2DynTfhyvm3JVeP8t/C6DDeeVICwACtKXoeLgg/V/u/Mb8D5W9ppLDTMVcN0wz4PMwmGkBQncRt1r+O1QSNw== + integrity: sha512-yTaoyxkIFf8NajsdyRxfEDz7MTlTHqc+t8aRkgVbpbItga7TAuHx3Q0d4Vy8W+IvccHKRJcIt85FDM/fLnRcvg== tarball: file:projects/issuer-api-client.tgz version: 0.0.0 - file:projects/issuer-api.tgz_d0662369d5a3d6440cc250075782d81c: + file:projects/issuer-api.tgz_9e0c7f53022bc6c9f8b1a908fe517bd5: dependencies: - '@nestjs/cli': 7.6.0_webpack-cli@4.7.0 + '@nestjs/cli': 7.6.0_webpack-cli@4.7.2 '@nestjs/common': 7.6.17_fbc9982997ba253269f25bdc348cb93c '@nestjs/config': 0.6.3_0ff807c7e0c0946ae4ae01be7385e726 '@nestjs/core': 7.6.17_4abd72a689207fb49212f568a33f7183 @@ -31746,16 +32133,16 @@ packages: '@types/express': 4.17.12 '@types/jest': 26.0.23 '@types/mocha': 8.2.2 - '@types/node': 14.17.2 + '@types/node': 14.17.3 '@types/superagent': 4.1.11 '@types/supertest': 2.0.11 chai: 4.3.0 class-validator: 0.13.1 eslint-plugin-jest: 24.3.6_typescript@4.3.2 - ethers: 5.3.0 + ethers: 5.3.1 ganache-cli: 6.12.2 jest: 27.0.4_ts-node@9.1.1 - mocha: 8.4.0 + mocha: 9.0.0 moment: 2.29.1 moment-range: 4.0.2_moment@2.29.1 pg: 8.6.0 @@ -31779,7 +32166,7 @@ packages: reflect-metadata: '*' webpack-cli: '*' resolution: - integrity: sha512-8QU2OObnXDXfXXeh86B5rP94oxVcw+S6ov4TMoJBmMGk+sHXBdGgxUsKNMPcdVfHMSzIU1aVBjY4ofS+4akYBg== + integrity: sha512-8SQ4lJ3P72Gdk60EoJwXTMVQdd8HeXsxsAe6OxlmuPdeI5ZLTkzduMEqWfMlS0nQuty3YS1y20dLDwj/U1I4Ag== tarball: file:projects/issuer-api.tgz version: 0.0.0 file:projects/issuer-irec-api-client.tgz_44e5b2290116f96a36a1ccffc3f92c45: @@ -31789,10 +32176,10 @@ packages: '@nestjs/typeorm': 7.1.5_ea0bce67b09d33ed79e6ce416945d83f '@openapitools/openapi-generator-cli': 2.3.3_eb344851c67507785243f1ab4a9e62e0 '@types/mocha': 8.2.2 - '@types/node': 14.17.2 + '@types/node': 14.17.3 axios: 0.21.1 json-to-pretty-yaml: 1.2.2 - mocha: 8.4.0 + mocha: 9.0.0 prettier: 2.3.1 ts-node: 9.1.1_typescript@4.3.2 typescript: 4.3.2 @@ -31810,7 +32197,7 @@ packages: swagger-ui-express: '*' typeorm: '*' resolution: - integrity: sha512-ThEWcxwUDhar02hE6UcvXnlR2yjGTMhmfDddMFwzuQuT+K39k0HvkHnL1L2gd3R+GL80CUhnXwf1onsP0eIG7A== + integrity: sha512-YUWUrFHXPZBMkmWxWJ2qm4rB/hPoGUBFCWyolzbR0+03EOaSIra1T5zKhF0gXE5Ce1zfMBm3s0w6wVtJfWosrQ== tarball: file:projects/issuer-irec-api-client.tgz version: 0.0.0 file:projects/issuer-irec-api-wrapper.tgz: @@ -31818,7 +32205,7 @@ packages: '@types/chai': 4.2.15 '@types/dotenv': 6.1.1 '@types/mocha': 8.2.2 - '@types/node': 14.17.2 + '@types/node': 14.17.3 '@types/qs': 6.9.6 axios: 0.21.1 chai: 4.3.0 @@ -31826,7 +32213,7 @@ packages: class-validator: 0.13.1 dotenv: 10.0.0 form-data: 4.0.0 - mocha: 8.4.0 + mocha: 9.0.0 moment: 2.29.1 moment-timezone: 0.5.33 qs: 6.10.1 @@ -31838,12 +32225,12 @@ packages: dev: false name: '@rush-temp/issuer-irec-api-wrapper' resolution: - integrity: sha512-GZaSwRuqMPKg1DprNS9snWgQwFvJu19FLfK0kuzCauPlze1zcAnH3ASITdotz3/KwLJ1AxwzmUSoIzMyo57FUg== + integrity: sha512-xqnlAV/jRHpD+4vDAhB2yxCjSqPr0yQRgoeHh29zrC4MHDIxY33rX/ArLtltCrD03JuS8YGvQhenfFnDJlSW1g== tarball: file:projects/issuer-irec-api-wrapper.tgz version: 0.0.0 - file:projects/issuer-irec-api.tgz_d0662369d5a3d6440cc250075782d81c: + file:projects/issuer-irec-api.tgz_9e0c7f53022bc6c9f8b1a908fe517bd5: dependencies: - '@nestjs/cli': 7.6.0_webpack-cli@4.7.0 + '@nestjs/cli': 7.6.0_webpack-cli@4.7.2 '@nestjs/common': 7.6.17_fbc9982997ba253269f25bdc348cb93c '@nestjs/config': 0.6.3_0ff807c7e0c0946ae4ae01be7385e726 '@nestjs/core': 7.6.17_4abd72a689207fb49212f568a33f7183 @@ -31857,14 +32244,14 @@ packages: '@types/chai': 4.2.15 '@types/express': 4.17.12 '@types/mocha': 8.2.2 - '@types/node': 14.17.2 + '@types/node': 14.17.3 '@types/superagent': 4.1.11 '@types/supertest': 2.0.11 chai: 4.3.0 class-validator: 0.13.1 - ethers: 5.3.0 + ethers: 5.3.1 ganache-cli: 6.12.2 - mocha: 8.4.0 + mocha: 9.0.0 moment: 2.29.1 moment-range: 4.0.2_moment@2.29.1 pg: 8.6.0 @@ -31888,34 +32275,34 @@ packages: reflect-metadata: '*' webpack-cli: '*' resolution: - integrity: sha512-hPdj1NOyopLRyrbTvARhMJ5YyWa7HUtKw0oUQIrhrP5GKIS5d3mg14ywU9ULoP/+4L5Neiy9XIZqAZ6yAs6gGA== + integrity: sha512-Z6aUwYyzB+S0Nr1E3u1jBVkms6UuVlz2PtcMaUDFd5NTWaakdR8L51CKMizPMzlWt6Q4wwa99/kkhVRUP/HIsg== tarball: file:projects/issuer-irec-api.tgz version: 0.0.0 file:projects/issuer.tgz_react@17.0.2: dependencies: - '@ethersproject/abi': 5.3.0 + '@ethersproject/abi': 5.3.1 '@ethersproject/contracts': 5.3.0 - '@ethersproject/providers': 5.3.0 + '@ethersproject/providers': 5.3.1 '@openzeppelin/contracts': 4.1.0 '@openzeppelin/contracts-upgradeable': 4.1.0 - '@openzeppelin/truffle-upgrades': 1.7.0_truffle@5.3.9 - '@typechain/ethers-v5': 7.0.0_b59b4be7c4febb6a9dc6ed09ef58a1c9 + '@openzeppelin/truffle-upgrades': 1.7.0_truffle@5.3.10 + '@typechain/ethers-v5': 7.0.1_534a0803dec1c20d83d335d68085cd00 '@types/chai': 4.2.15 '@types/dotenv': 6.1.1 '@types/mocha': 8.2.2 - '@types/node': 14.17.2 + '@types/node': 14.17.3 '@types/supertest': 2.0.11 chai: 4.3.0 dotenv: 10.0.0 - ethers: 5.3.0 + ethers: 5.3.1 ethlint: 1.2.5 ganache-cli: 6.12.2 - mocha: 8.4.0 + mocha: 9.0.0 moment: 2.29.1 precise-proofs-js: 1.2.0 shx: 0.3.3 solc: 0.8.4 - truffle: 5.3.9_@types+node@14.17.2+react@17.0.2 + truffle: 5.3.10_@types+node@14.17.3+react@17.0.2 truffle-typings: 1.0.8 ts-node: 9.1.1_typescript@4.3.2 typechain: 5.0.0_typescript@4.3.2 @@ -31928,30 +32315,30 @@ packages: peerDependencies: react: '*' resolution: - integrity: sha512-7TdxSXYsFi6eFVn4ri73keQ3DOXS2GrAtpPeUVxoSYfUqVo6a3DK7qV7QQy8lrECPVGgJiYjl6xwHcxDlGHJpA== + integrity: sha512-2P9pKFgnKE6SkR2fSXU5JUg0t29U+uutYA0myUYCHHVUGEiQkMrZ7FRLULO03ZO7M2I6lyLXl6qNOsHDmVYT6A== tarball: file:projects/issuer.tgz version: 0.0.0 file:projects/localization.tgz: dependencies: '@types/mocha': 8.2.2 - '@types/node': 14.17.2 - mocha: 8.4.0 + '@types/node': 14.17.3 + mocha: 9.0.0 typescript: 4.3.2 dev: false name: '@rush-temp/localization' resolution: - integrity: sha512-yTW7ElfXm35wCvsheSYYMHvkKOSq/YFPOYhubLP0/EZ/ajKGX+fMO2HQZj/Vs26vHXhch7NqiJ92jOUWSlRoQw== + integrity: sha512-BR8BhPJL6tHFwSzt1yhPO0uXeMPVq1SHNYxwXtIpCZEB7XUYfy3lvc9dIe588RJjBTwxKEaVbxZ4hTCMbwXejQ== tarball: file:projects/localization.tgz version: 0.0.0 file:projects/migrations-irec.tgz: dependencies: '@types/mocha': 8.2.2 - '@types/node': 14.17.2 + '@types/node': 14.17.3 '@types/pg': 7.14.11 commander: 6.2.1 dotenv: 10.0.0 - ethers: 5.3.0 - mocha: 8.4.0 + ethers: 5.3.1 + mocha: 9.0.0 pg: 8.6.0 typescript: 4.3.2 winston: 3.3.3 @@ -31961,18 +32348,18 @@ packages: dev: false name: '@rush-temp/migrations-irec' resolution: - integrity: sha512-28TiVIhNuQr7s0YURcFy1Bh/Eoc31jZle2I+zHEr1ua2425fMiB4VVpXwrrjh0cBmi8elNBvPJRXDPE1o0lf6w== + integrity: sha512-RW3j/2IXgqo7GLEQVtGt5ZFrO7oqARfQbb41hvterqP9jSvitTsKf/fVajaBcvO8fY3UTH4ZGERIgyJ1/LNuBw== tarball: file:projects/migrations-irec.tgz version: 0.0.0 file:projects/migrations.tgz: dependencies: '@types/mocha': 8.2.2 - '@types/node': 14.17.2 + '@types/node': 14.17.3 '@types/pg': 7.14.11 commander: 6.2.1 dotenv: 10.0.0 - ethers: 5.3.0 - mocha: 8.4.0 + ethers: 5.3.1 + mocha: 9.0.0 pg: 8.6.0 typescript: 4.3.2 winston: 3.3.3 @@ -31982,13 +32369,13 @@ packages: dev: false name: '@rush-temp/migrations' resolution: - integrity: sha512-cGwDEb9Ed+eBQrxKlxqyRsZ5YSOyJPinf8sW2HrEoaFxznkonQKLYbwOxL4DkmhBpxlME3vfuZ4X0hfZYjoImg== + integrity: sha512-JZohTQbZciz/O3SGROMfrEV35lbjk+zktILyzIK1MJU3RVWQTPuaxLKdq4JT6ElDdE5pEDXfMpvgI5IfWia9WQ== tarball: file:projects/migrations.tgz version: 0.0.0 - file:projects/origin-backend-app.tgz_d66b9abd33775cf532aefb2a7d4fbc15: + file:projects/origin-backend-app.tgz_879cfd6b7aaf2151a3f5979480d91d56: dependencies: '@nestjs-modules/mailer': 1.5.1_5dbbcc69d5fbb1319985aa8fa09dc406 - '@nestjs/cli': 7.6.0_webpack-cli@4.7.0 + '@nestjs/cli': 7.6.0_webpack-cli@4.7.2 '@nestjs/common': 7.6.17_fbc9982997ba253269f25bdc348cb93c '@nestjs/config': 0.6.3_0ff807c7e0c0946ae4ae01be7385e726 '@nestjs/core': 7.6.17_4abd72a689207fb49212f568a33f7183 @@ -31998,15 +32385,15 @@ packages: '@nestjs/testing': 7.6.17_e6e96ca856e7f50a9c42371caf77b7ae '@nestjs/typeorm': 7.1.5_ea0bce67b09d33ed79e6ce416945d83f '@types/mocha': 8.2.2 - '@types/node': 14.17.2 + '@types/node': 14.17.3 '@types/supertest': 2.0.11 body-parser: 1.19.0 class-validator: 0.13.1 cors: 2.8.5 - ethers: 5.3.0 + ethers: 5.3.1 ganache-core: 2.13.2 mandrill-nodemailer-transport: 1.2.1_nodemailer@6.6.1 - mocha: 8.4.0 + mocha: 9.0.0 moment: 2.29.1 superagent-use: 0.1.0 supertest: 6.1.3 @@ -32028,7 +32415,7 @@ packages: rxjs: '*' webpack-cli: '*' resolution: - integrity: sha512-+DZFr3WS7YfLouyD2S7Quo4TiDyMeMa7HoDCqVUOFjTV3vZyLInrfyEKcNzXlroE4KYAmL55JfWitLZKwO8CFg== + integrity: sha512-h3U1ZH/cQ2TbkmffRnoRKw+c45NiV4LzMPNpyn0c80IwdsANy5oSG32BQBxNxbovVeMQlEgGNKUENo727hfg0Q== tarball: file:projects/origin-backend-app.tgz version: 0.0.0 file:projects/origin-backend-client.tgz_a8ce0c06fd32d99f157bb2132dd16aac: @@ -32038,10 +32425,10 @@ packages: '@nestjs/typeorm': 7.1.5_ea0bce67b09d33ed79e6ce416945d83f '@openapitools/openapi-generator-cli': 2.3.3_eb344851c67507785243f1ab4a9e62e0 '@types/mocha': 8.2.2 - '@types/node': 14.17.2 + '@types/node': 14.17.3 axios: 0.21.1 json-to-pretty-yaml: 1.2.2 - mocha: 8.4.0 + mocha: 9.0.0 prettier: 2.3.1 ts-node: 9.1.1_typescript@4.3.2 typeorm: 0.2.34 @@ -32059,22 +32446,22 @@ packages: rxjs: '*' swagger-ui-express: '*' resolution: - integrity: sha512-+GjB/E7kta0oAwlzNhKLAjYLhoLBqdQRX5VUJjatQ2UtF4FmrRJovWJO8AKfN+araMrQslFnv3mp8g8hZzpt1g== + integrity: sha512-hly/LpvgXCsfY4OiMF13/6svGyMJSFRjwNcWqkPrfC33+AB9THzdmKcdYG6O+JlxOCHH5psyf/kAM/Pqb1P6Bw== tarball: file:projects/origin-backend-client.tgz version: 0.0.0 file:projects/origin-backend-core.tgz: dependencies: '@types/mocha': 8.2.2 - '@types/node': 14.17.2 + '@types/node': 14.17.3 class-transformer: 0.3.1 class-validator: 0.13.1 - ethers: 5.3.0 - mocha: 8.4.0 + ethers: 5.3.1 + mocha: 9.0.0 typescript: 4.3.2 dev: false name: '@rush-temp/origin-backend-core' resolution: - integrity: sha512-Aoz8qst3CAyvaTg3/aOvIQeH8DDSIdqKjhbMRiaWwcmvm3VpiiQ+Ndo/FFta7lsvtGmXSpfLuGDJyKJ/hkhmrg== + integrity: sha512-B4n3w662JTSim205QY03OQUSxVy3WToTWy1X/suiuQarGr4XwvIii3zhnNeJUwOGfZtMz06Wlqfz9CKHMUTktw== tarball: file:projects/origin-backend-core.tgz version: 0.0.0 file:projects/origin-backend-irec-app.tgz_1ea59198d78e334ee4e1bbab81fdb806: @@ -32091,14 +32478,14 @@ packages: '@nestjs/typeorm': 7.1.5_ea0bce67b09d33ed79e6ce416945d83f '@types/cron': 1.7.2 '@types/mocha': 8.2.2 - '@types/node': 14.17.2 + '@types/node': 14.17.3 '@types/supertest': 2.0.11 body-parser: 1.19.0 class-validator: 0.13.1 cors: 2.8.5 ganache-core: 2.13.2 mandrill-nodemailer-transport: 1.2.1_nodemailer@6.6.1 - mocha: 8.4.0 + mocha: 9.0.0 supertest: 6.1.3 swagger-ui-express: 4.1.6_express@4.17.1 ts-node: 9.1.1_typescript@4.3.2 @@ -32116,7 +32503,7 @@ packages: reflect-metadata: '*' rxjs: '*' resolution: - integrity: sha512-5ypAYwZNV391GQahrY8bXbRaefFXfUscT3OYKGn/Gj3Dt69cFVQDzy5HL0dWwD0duUXjGNFoUZzRHGRtuqLrdA== + integrity: sha512-21hj7fTzwSFf2o6rv8uzSfSr8A6Vw6gIDiB560ZRkA36ItUA4aVOJBzX2ua5w8MBqjgxXrx5ydcYqjnhxu5WDQ== tarball: file:projects/origin-backend-irec-app.tgz version: 0.0.0 file:projects/origin-backend-utils.tgz_79b4bd5bbb33370492fb3cbed967f5fb: @@ -32127,10 +32514,10 @@ packages: '@nestjs/swagger': 4.8.0_911f9382138fdf5430a6d90caa6e082c '@types/bn.js': 5.1.0 '@types/mocha': 8.2.2 - '@types/node': 14.17.2 + '@types/node': 14.17.3 bn.js: 5.2.0 class-validator: 0.13.1 - mocha: 8.4.0 + mocha: 9.0.0 polly-js: 1.8.2 rxjs: 6.6.7 ts-node: 9.1.1_typescript@4.3.2 @@ -32145,12 +32532,12 @@ packages: reflect-metadata: '*' swagger-ui-express: '*' resolution: - integrity: sha512-BVby5bN7ye2UcZU+/2e585Th1qYAp1RCdZtuKtbI30RjTgjHNFbMLGyeatuXXVH7ZewaHPOb4TIelfg+iVcMiQ== + integrity: sha512-SWNYP1hvX4VMb+3uOL89bMDP3t7J8g4FjgsybXsEZAMY654k3UGcL47x8wXD8gNnFYCtoMXHqjdLbVtXeMSqwA== tarball: file:projects/origin-backend-utils.tgz version: 0.0.0 - file:projects/origin-backend.tgz_f99ba94bd09e1cfcbb3172ba144891d4: + file:projects/origin-backend.tgz_a0ccdd3d67385e8a67482d68dcf16485: dependencies: - '@nestjs/cli': 7.6.0_webpack-cli@4.7.0 + '@nestjs/cli': 7.6.0_webpack-cli@4.7.2 '@nestjs/common': 7.6.17_fbc9982997ba253269f25bdc348cb93c '@nestjs/config': 0.6.3_0ff807c7e0c0946ae4ae01be7385e726 '@nestjs/core': 7.6.17_4abd72a689207fb49212f568a33f7183 @@ -32171,7 +32558,7 @@ packages: '@types/jsonwebtoken': 8.5.1 '@types/mocha': 8.2.2 '@types/multer': 1.4.5 - '@types/node': 14.17.2 + '@types/node': 14.17.3 '@types/nodemailer': 6.4.2 '@types/passport': 1.0.6 '@types/passport-jwt': 3.0.5 @@ -32187,10 +32574,10 @@ packages: class-transformer: 0.3.1 class-validator: 0.13.1 dotenv: 10.0.0 - ethers: 5.3.0 + ethers: 5.3.1 express: 4.17.1 jest: 27.0.4_ts-node@9.1.1 - mocha: 8.4.0 + mocha: 9.0.0 moment: 2.29.1 multer: 1.4.2 nodemailer: 6.6.1 @@ -32213,7 +32600,7 @@ packages: swagger-ui-express: '*' webpack-cli: '*' resolution: - integrity: sha512-RKfai7nEgY/Lsl53wsShvedtFd/sja4upLTk+axxlCptAjCXDoW79P59fhiqi0532IScC0WJjE/sTl/7kaaKqQ== + integrity: sha512-JQ8Rs3A9cBqw8fVpFFOQekcJ1gOFBR9gkWGFPNIOq8J4ZXrLkBIhgpdqLVMaWVjOLq+aoaPMe8ZNk75BXT2KLw== tarball: file:projects/origin-backend.tgz version: 0.0.0 file:projects/origin-device-registry-api-client.tgz_21da09de4c3ed72abc361ba15e3e6617: @@ -32225,11 +32612,11 @@ packages: '@openapitools/openapi-generator-cli': 2.3.3_eb344851c67507785243f1ab4a9e62e0 '@types/chai': 4.2.15 '@types/mocha': 8.2.2 - '@types/node': 14.17.2 + '@types/node': 14.17.3 axios: 0.21.1 chai: 4.3.0 json-to-pretty-yaml: 1.2.2 - mocha: 8.4.0 + mocha: 9.0.0 prettier: 2.3.1 ts-node: 9.1.1_typescript@4.3.2 typescript: 4.3.2 @@ -32248,12 +32635,12 @@ packages: swagger-ui-express: '*' typeorm: '*' resolution: - integrity: sha512-OPfDUOmSoyZnhi5wJGvdZvxGGon49W0fyKZqesF2tEKV4xGNTsFd0uEtxOhe8A+QgpeeX2ocVf29FHLA2HTpIQ== + integrity: sha512-0bpC5UdR6rhjSRHYiXt8IBb2x+vE4gtyutTJrLBDvQzO2zIhthsZQ6DLGbhIPgnEF8KOF71SwJM4BGMvmx9KMg== tarball: file:projects/origin-device-registry-api-client.tgz version: 0.0.0 - file:projects/origin-device-registry-api.tgz_3029923eaaa712fb4bc39e688f87bfca: + file:projects/origin-device-registry-api.tgz_b9250c49fd3338a3b74124ad0423c05b: dependencies: - '@nestjs/cli': 7.6.0_webpack-cli@4.7.0 + '@nestjs/cli': 7.6.0_webpack-cli@4.7.2 '@nestjs/common': 7.6.17_fbc9982997ba253269f25bdc348cb93c '@nestjs/config': 0.6.3_0ff807c7e0c0946ae4ae01be7385e726 '@nestjs/core': 7.6.17_4abd72a689207fb49212f568a33f7183 @@ -32266,14 +32653,14 @@ packages: '@types/chai': 4.2.15 '@types/express': 4.17.12 '@types/mocha': 8.2.2 - '@types/node': 14.17.2 + '@types/node': 14.17.3 '@types/superagent': 4.1.11 '@types/supertest': 2.0.11 chai: 4.3.0 class-sanitizer: 1.0.1 class-transformer: 0.3.1 class-validator: 0.13.1 - mocha: 8.4.0 + mocha: 9.0.0 reflect-metadata: 0.1.13 rxjs: 6.6.7 superagent-use: 0.1.0 @@ -32292,7 +32679,7 @@ packages: swagger-ui-express: '*' webpack-cli: '*' resolution: - integrity: sha512-Rj5QBcLVM1BBEHLFVH9MWLo+BsW2aBrJM4X8ouxgEtnffKl6sldVHrMM6cq+UzmvFfV1c/9HMPnUgx7J9lsHog== + integrity: sha512-qQaPCfnYRIMIJWfY877xdaIvO03ZSEjRM3cCwxZlBF6UxHAo70QsN8KqbwU+LvppqfliZNSCq6dcKZdi6Ksjkg== tarball: file:projects/origin-device-registry-api.tgz version: 0.0.0 file:projects/origin-device-registry-irec-form-api-client.tgz_21da09de4c3ed72abc361ba15e3e6617: @@ -32303,10 +32690,10 @@ packages: '@nestjs/typeorm': 7.1.5_ea0bce67b09d33ed79e6ce416945d83f '@openapitools/openapi-generator-cli': 2.3.3_eb344851c67507785243f1ab4a9e62e0 '@types/mocha': 8.2.2 - '@types/node': 14.17.2 + '@types/node': 14.17.3 axios: 0.21.1 json-to-pretty-yaml: 1.2.2 - mocha: 8.4.0 + mocha: 9.0.0 prettier: 2.3.1 ts-node: 9.1.1_typescript@4.3.2 typescript: 4.3.2 @@ -32325,12 +32712,12 @@ packages: swagger-ui-express: '*' typeorm: '*' resolution: - integrity: sha512-It7QFTINwFMrTKxZsTFBPdCs3Q/9x8FyIJNRxkITPdgyBSt6V01x7Wgnplgwkd9IQzPMIDkda/4Y3CCZEj6eUA== + integrity: sha512-/Adi4UVHSIEihQ48PM0haI24tn+1+SzYUDWC0JCEzcikw03j77/FbTxWYZGh7vUnwoNpHtjuChhf0qt5vwLQLQ== tarball: file:projects/origin-device-registry-irec-form-api-client.tgz version: 0.0.0 - file:projects/origin-device-registry-irec-form-api.tgz_3029923eaaa712fb4bc39e688f87bfca: + file:projects/origin-device-registry-irec-form-api.tgz_b9250c49fd3338a3b74124ad0423c05b: dependencies: - '@nestjs/cli': 7.6.0_webpack-cli@4.7.0 + '@nestjs/cli': 7.6.0_webpack-cli@4.7.2 '@nestjs/common': 7.6.17_fbc9982997ba253269f25bdc348cb93c '@nestjs/config': 0.6.3_0ff807c7e0c0946ae4ae01be7385e726 '@nestjs/core': 7.6.17_4abd72a689207fb49212f568a33f7183 @@ -32343,7 +32730,7 @@ packages: '@types/dotenv': 6.1.1 '@types/express': 4.17.12 '@types/mocha': 8.2.2 - '@types/node': 14.17.2 + '@types/node': 14.17.3 '@types/superagent': 4.1.11 '@types/supertest': 2.0.11 '@types/uuid': 8.3.0 @@ -32351,8 +32738,8 @@ packages: class-transformer: 0.3.1 class-validator: 0.13.1 dotenv: 10.0.0 - ethers: 5.3.0 - mocha: 8.4.0 + ethers: 5.3.1 + mocha: 9.0.0 moment: 2.29.1 reflect-metadata: 0.1.13 rxjs: 6.6.7 @@ -32372,7 +32759,7 @@ packages: swagger-ui-express: '*' webpack-cli: '*' resolution: - integrity: sha512-BQYwEPuyQhkdJuOl0z+iYJ8ww1IaIDLujUAWjSi+s45dnYdaf1FdPNxWBJut4sS5wVPIaXOE7wvXMWzzbhleeA== + integrity: sha512-ORYhR+8Mw4w1to+erDZTusFTDvLpPLe5eMV6Hol67GM0St3/uMyaSyhMv5us9sTp5zMaWfRuWH5khQ1tOj5WEA== tarball: file:projects/origin-device-registry-irec-form-api.tgz version: 0.0.0 file:projects/origin-device-registry-irec-local-api-client.tgz_21da09de4c3ed72abc361ba15e3e6617: @@ -32383,10 +32770,10 @@ packages: '@nestjs/typeorm': 7.1.5_ea0bce67b09d33ed79e6ce416945d83f '@openapitools/openapi-generator-cli': 2.3.3_eb344851c67507785243f1ab4a9e62e0 '@types/mocha': 8.2.2 - '@types/node': 14.17.2 + '@types/node': 14.17.3 axios: 0.21.1 json-to-pretty-yaml: 1.2.2 - mocha: 8.4.0 + mocha: 9.0.0 prettier: 2.3.1 ts-node: 9.1.1_typescript@4.3.2 typescript: 4.3.2 @@ -32405,12 +32792,12 @@ packages: swagger-ui-express: '*' typeorm: '*' resolution: - integrity: sha512-eFXRD4xD5fv5Y4e7LngHKFcsYgJC9jgMA0W9zDltPUzTzbswd/GCovdjd3/5ys6fRVpFT7oANYI6fPHU35FctQ== + integrity: sha512-9OKt/Xy9+2SUYDxb3eIMmYN1kKsknOKV/4SG88zQg9FaNCBrGtLjCAB4xTKg520Jll71WpoY47LHFKHdqRYZ+A== tarball: file:projects/origin-device-registry-irec-local-api-client.tgz version: 0.0.0 - file:projects/origin-device-registry-irec-local-api.tgz_3029923eaaa712fb4bc39e688f87bfca: + file:projects/origin-device-registry-irec-local-api.tgz_b9250c49fd3338a3b74124ad0423c05b: dependencies: - '@nestjs/cli': 7.6.0_webpack-cli@4.7.0 + '@nestjs/cli': 7.6.0_webpack-cli@4.7.2 '@nestjs/common': 7.6.17_fbc9982997ba253269f25bdc348cb93c '@nestjs/config': 0.6.3_0ff807c7e0c0946ae4ae01be7385e726 '@nestjs/core': 7.6.17_4abd72a689207fb49212f568a33f7183 @@ -32424,7 +32811,7 @@ packages: '@types/dotenv': 6.1.1 '@types/express': 4.17.12 '@types/mocha': 8.2.2 - '@types/node': 14.17.2 + '@types/node': 14.17.3 '@types/superagent': 4.1.11 '@types/supertest': 2.0.11 chai: 4.3.0 @@ -32432,7 +32819,7 @@ packages: class-transformer: 0.3.1 class-validator: 0.13.1 dotenv: 10.0.0 - mocha: 8.4.0 + mocha: 9.0.0 reflect-metadata: 0.1.13 rxjs: 6.6.7 superagent-use: 0.1.0 @@ -32450,7 +32837,7 @@ packages: swagger-ui-express: '*' webpack-cli: '*' resolution: - integrity: sha512-t6nq7ouaZngi/h3XnWVO+TwQxOmPmldsn/UMWtpgkKSZrfO+YfAaUcLEwia6CDrv6N1A1WVpNEuqkxknm+22og== + integrity: sha512-JGc5zCdd3/Hr9D0arSaJq5cjquNkn2Jt4ZHEbNvNw7paC1BiYPAfvPZlInbhSsiOuE7I6sEZq33Sx5piKEoZ9Q== tarball: file:projects/origin-device-registry-irec-local-api.tgz version: 0.0.0 file:projects/origin-energy-api-client.tgz_21da09de4c3ed72abc361ba15e3e6617: @@ -32461,10 +32848,10 @@ packages: '@nestjs/typeorm': 7.1.5_ea0bce67b09d33ed79e6ce416945d83f '@openapitools/openapi-generator-cli': 2.3.3_eb344851c67507785243f1ab4a9e62e0 '@types/mocha': 8.2.2 - '@types/node': 14.17.2 + '@types/node': 14.17.3 axios: 0.21.1 json-to-pretty-yaml: 1.2.2 - mocha: 8.4.0 + mocha: 9.0.0 prettier: 2.3.1 ts-node: 9.1.1_typescript@4.3.2 typescript: 4.3.2 @@ -32483,7 +32870,7 @@ packages: swagger-ui-express: '*' typeorm: '*' resolution: - integrity: sha512-9h2+sB73shNNiO6w7I6Iu+miOf3zE+iD5anqDxA2uiSUiB9fdbw+VsTMd9EOOfMwOxLxn8o3N6lv9V+08Hy4VA== + integrity: sha512-LY8fqfn5GgJg6rJBL1nwoCkbqNj9Iwj6/j3sabya1Q1uOpB01XkWNJ8F4UBaIg5omzl/NbhL0ZfF5ZC3ukj+BA== tarball: file:projects/origin-energy-api-client.tgz version: 0.0.0 file:projects/origin-energy-api.tgz_2d0f8769bcba180de6d1bf4f4aa9281f: @@ -32497,12 +32884,12 @@ packages: '@nestjs/testing': 7.6.17_e6e96ca856e7f50a9c42371caf77b7ae '@types/chai': 4.2.15 '@types/mocha': 8.2.2 - '@types/node': 14.17.2 + '@types/node': 14.17.3 '@types/superagent': 4.1.11 '@types/supertest': 2.0.11 chai: 4.3.0 influx: 5.9.2 - mocha: 8.4.0 + mocha: 9.0.0 prettier: 2.3.1 superagent-use: 0.1.0 supertest: 6.1.3 @@ -32521,7 +32908,7 @@ packages: rxjs: '*' swagger-ui-express: '*' resolution: - integrity: sha512-/UXTWoDVOA6AG6c1ipWXKhuxMM+vYuWg3Cm8yRGLky9T+SY7ieK+zITsSqJ1mTcDoROvB7VyAF6ALS+AGUpx0w== + integrity: sha512-88SIeICs7MsoCFyFfNoebZrZaDAykgNmDvWluHw3EfIXPIKWSUWdfzyJURgyExUiiDSc4ylm5uomrJAQoq39iA== tarball: file:projects/origin-energy-api.tgz version: 0.0.0 file:projects/origin-organization-irec-api-client.tgz_61eeae0a9607049ab472c29cd155574c: @@ -32533,11 +32920,11 @@ packages: '@nestjs/typeorm': 7.1.5_ea0bce67b09d33ed79e6ce416945d83f '@openapitools/openapi-generator-cli': 2.3.3_eb344851c67507785243f1ab4a9e62e0 '@types/mocha': 8.2.2 - '@types/node': 14.17.2 + '@types/node': 14.17.3 '@types/supertest': 2.0.11 axios: 0.21.1 json-to-pretty-yaml: 1.2.2 - mocha: 8.4.0 + mocha: 9.0.0 prettier: 2.3.1 supertest: 6.1.3 supertest-capture-error: 1.0.0 @@ -32555,12 +32942,12 @@ packages: rxjs: '*' swagger-ui-express: '*' resolution: - integrity: sha512-I47mwj5LF61aVvM/gh6R5Y3oe5iPzD6VUo3tSKiBU3Qn2sfl7uuQJO4Rmd6TmbdaAsz7jwLo7IrsD7tTw/rRlA== + integrity: sha512-GvPK2DmZ4S7yTZVrcB90/M28N9B7fVcVWFU0CM5Zz8n3YIdZeG5jVmMzuHnSsUAhPcPSLMiNyB3rYfGJWkV5vA== tarball: file:projects/origin-organization-irec-api-client.tgz version: 0.0.0 - file:projects/origin-organization-irec-api.tgz_3029923eaaa712fb4bc39e688f87bfca: + file:projects/origin-organization-irec-api.tgz_b9250c49fd3338a3b74124ad0423c05b: dependencies: - '@nestjs/cli': 7.6.0_webpack-cli@4.7.0 + '@nestjs/cli': 7.6.0_webpack-cli@4.7.2 '@nestjs/common': 7.6.17_fbc9982997ba253269f25bdc348cb93c '@nestjs/config': 0.6.3_0ff807c7e0c0946ae4ae01be7385e726 '@nestjs/core': 7.6.17_4abd72a689207fb49212f568a33f7183 @@ -32573,13 +32960,13 @@ packages: '@types/chai': 4.2.15 '@types/express': 4.17.12 '@types/mocha': 8.2.2 - '@types/node': 14.17.2 + '@types/node': 14.17.3 '@types/superagent': 4.1.11 '@types/supertest': 2.0.11 chai: 4.3.0 class-transformer: 0.3.1 class-validator: 0.13.1 - mocha: 8.4.0 + mocha: 9.0.0 reflect-metadata: 0.1.13 rxjs: 6.6.7 superagent-use: 0.1.0 @@ -32597,40 +32984,40 @@ packages: swagger-ui-express: '*' webpack-cli: '*' resolution: - integrity: sha512-r9y84yvXEpHYbtUneDjnZZ4zeottrmbTh6nXNrRk5SH53YjiHyiy29IrjeCYX/AlKsY+BvAadGU6Mf1sGOlHQw== + integrity: sha512-EOQiZAKMC93MQUIFwjwfX0I6Ghan5iJjrV1i0W2Ybxe139yZd3sPtCoODI+HztX+/F6JSXvbDPlXQcineFPCmw== tarball: file:projects/origin-organization-irec-api.tgz version: 0.0.0 - file:projects/origin-ui-core.tgz_e3b821b9c9fe8795227fb3928da9758c: + file:projects/origin-ui-core.tgz_5a02834750c54fcd43f6628b784fbeb3: dependencies: - '@babel/core': 7.14.3 + '@babel/core': 7.14.5 '@date-io/moment': 1.3.13_moment@2.29.1 - '@hookform/resolvers': 1.3.7_react-hook-form@6.15.7 - '@material-ui/core': 4.11.4_e84af7742d25ac89b84cf59d2816ddf6 - '@material-ui/icons': 4.11.2_083feab47dc0d33e56a0783af158b52a - '@material-ui/lab': 4.0.0-alpha.58_083feab47dc0d33e56a0783af158b52a + '@hookform/resolvers': 1.3.7_react-hook-form@6.15.8 + '@material-ui/core': 4.11.4_7a759d72fcbc11ce03c9de110c21df82 + '@material-ui/icons': 4.11.2_5e14cec25e1ceef8d08e6ab1e0c4cb05 + '@material-ui/lab': 4.0.0-alpha.58_5e14cec25e1ceef8d08e6ab1e0c4cb05 '@material-ui/pickers': 3.3.10_f543984b3e6c18c2e2e104a9ecbda934 - '@material-ui/styles': 4.11.4_e84af7742d25ac89b84cf59d2816ddf6 + '@material-ui/styles': 4.11.4_7a759d72fcbc11ce03c9de110c21df82 '@react-google-maps/api': 2.2.0_react-dom@17.0.2+react@17.0.2 - '@reduxjs/toolkit': 1.5.1 - '@storybook/addon-actions': 6.2.9_e84af7742d25ac89b84cf59d2816ddf6 - '@storybook/addon-essentials': 6.2.9_ea31b9882ac15eede8e67c6721f5683e + '@reduxjs/toolkit': 1.6.0_react-redux@7.2.4+react@17.0.2 + '@storybook/addon-actions': 6.2.9_7a759d72fcbc11ce03c9de110c21df82 + '@storybook/addon-essentials': 6.2.9_01d0931451e469ab60d8d92681c8fdb8 '@storybook/addon-links': 6.2.9_react-dom@17.0.2+react@17.0.2 - '@storybook/react': 6.2.9_0073b97e156e04b8acd9f360329c9507 + '@storybook/react': 6.2.9_ea84e963c2420e178a578d3944e78a07 '@svgr/webpack': 5.5.0 '@testing-library/react': 11.2.7_react-dom@17.0.2+react@17.0.2 '@types/enzyme': 3.10.8 '@types/mocha': 8.2.2 - '@types/node': 14.17.2 - '@types/react': 17.0.9 - '@types/react-dom': 17.0.6 + '@types/node': 14.17.3 + '@types/react': 17.0.11 + '@types/react-dom': 17.0.7 '@types/react-redux': 7.1.16 '@types/react-router-dom': 5.1.7 '@types/redux-logger': 3.0.8 '@types/yup': 0.29.11 '@unicef/material-ui-currency-textfield': 0.8.6_f543984b3e6c18c2e2e104a9ecbda934 - '@vmw/queue-for-redux-saga': 0.3.0_dabc9aab316ba0825f295ac4fdb4520c + '@vmw/queue-for-redux-saga': 0.3.0_048ca475e79921e4b5c7ae691130b6a4 axios: 0.21.1 - babel-loader: 8.2.2_56c0991c8a79bd1374c11f7f6fc4baef + babel-loader: 8.2.2_be4b5a2e27f85c129e0cacc759b45f7c chart.js: 2.9.4 clsx: 1.1.1 connected-react-router: 6.9.1_7e4552cdc026a4bda18e398cb3ee29b8 @@ -32638,7 +33025,7 @@ packages: enzyme-adapter-react-16: 1.15.6_fae758709a8810ba97b4c03852dde4d0 eslint-plugin-react: 7.24.0 eslint-plugin-react-hooks: 4.2.0 - ethers: 5.3.0 + ethers: 5.3.1 formik: 2.2.9_react@17.0.2 formik-material-ui: 3.0.1_8c8510503ff976740e1d76ab6c6427c3 formik-material-ui-pickers: 0.0.12_08032a4b4e82050abfb7dc276cf451f4 @@ -32646,7 +33033,7 @@ packages: i18next: 20.3.1 jest: 27.0.4_ts-node@9.1.1 jest-environment-jsdom-fifteen: 1.0.2 - mocha: 8.4.0 + mocha: 9.0.0 moment: 2.29.1 moment-timezone: 0.5.33 query-string: 7.0.0 @@ -32654,7 +33041,7 @@ packages: react-chartjs-2: 2.11.2_f236ea5690127753093b714bf94225a6 react-dom: 17.0.2_react@17.0.2 react-dropzone: 11.3.2_react@17.0.2 - react-hook-form: 6.15.7_react@17.0.2 + react-hook-form: 6.15.8_react@17.0.2 react-i18next: 11.10.0_i18next@20.3.1+react@17.0.2 react-redux: 7.2.4_react-dom@17.0.2+react@17.0.2 react-router-dom: 5.2.0_react@17.0.2 @@ -32675,22 +33062,22 @@ packages: webpack-cli: '*' webpack-dev-server: '*' resolution: - integrity: sha512-Qmq3TCaP4W/IXLj/FXhLpQF6Ip8GspXPSRXvANr6RcpwudWJobdaPV1w2fw8LK67gylSObijxcMySUYF5thtbQ== + integrity: sha512-UXqQ52rHgRpYDpIJBQnLcWEQ4SPfQwPkzF/dEfEPfFqRdHWoWypW71d70lQC6UvEz/2jWmSV0TC/6MnoiHevUA== tarball: file:projects/origin-ui-core.tgz version: 0.0.0 file:projects/origin-ui-irec-core.tgz_ts-node@9.1.1: dependencies: '@date-io/moment': 1.3.13_moment@2.29.1 - '@hookform/resolvers': 1.3.7_react-hook-form@6.15.7 - '@material-ui/core': 4.11.4_e84af7742d25ac89b84cf59d2816ddf6 - '@material-ui/icons': 4.11.2_083feab47dc0d33e56a0783af158b52a - '@material-ui/lab': 4.0.0-alpha.58_083feab47dc0d33e56a0783af158b52a + '@hookform/resolvers': 1.3.7_react-hook-form@6.15.8 + '@material-ui/core': 4.11.4_7a759d72fcbc11ce03c9de110c21df82 + '@material-ui/icons': 4.11.2_5e14cec25e1ceef8d08e6ab1e0c4cb05 + '@material-ui/lab': 4.0.0-alpha.58_5e14cec25e1ceef8d08e6ab1e0c4cb05 '@material-ui/pickers': 3.3.10_f543984b3e6c18c2e2e104a9ecbda934 - '@material-ui/styles': 4.11.4_e84af7742d25ac89b84cf59d2816ddf6 + '@material-ui/styles': 4.11.4_7a759d72fcbc11ce03c9de110c21df82 '@react-google-maps/api': 2.2.0_react-dom@17.0.2+react@17.0.2 '@types/mocha': 8.2.2 - '@types/node': 14.17.2 - '@types/react': 17.0.9 + '@types/node': 14.17.3 + '@types/react': 17.0.11 '@types/react-redux': 7.1.16 '@types/react-router-dom': 5.1.7 '@types/yup': 0.29.11 @@ -32698,17 +33085,17 @@ packages: connected-react-router: 6.9.1_7e4552cdc026a4bda18e398cb3ee29b8 eslint-plugin-react: 7.24.0 eslint-plugin-react-hooks: 4.2.0 - ethers: 5.3.0 + ethers: 5.3.1 formik: 2.2.9_react@17.0.2 formik-material-ui: 3.0.1_8c8510503ff976740e1d76ab6c6427c3 history: 4.10.1 i18next: 20.3.1 jest: 27.0.4_ts-node@9.1.1 - mocha: 8.4.0 + mocha: 9.0.0 moment: 2.29.1 react: 17.0.2 react-dom: 17.0.2_react@17.0.2 - react-hook-form: 6.15.7_react@17.0.2 + react-hook-form: 6.15.8_react@17.0.2 react-i18next: 11.10.0_i18next@20.3.1+react@17.0.2 react-redux: 7.2.4_react-dom@17.0.2+react@17.0.2 react-router-dom: 5.2.0_react@17.0.2 @@ -32722,22 +33109,22 @@ packages: peerDependencies: ts-node: '*' resolution: - integrity: sha512-IoswJkZ+4o2b5hG+KXFPybNYdIU1RNDy66IDhA7aWUkFDLB0jQyMUc24TiISS8LCNUNTtch5LWp5Kc5WUZSLqA== + integrity: sha512-PeANB/bBFix333EMxayzt0R98Pop8o0ESs3SrYcyWoJhE/Dgrt0SKlyOZ1BJMBNnpZAtBERL/kEQkq0q8NDsHQ== tarball: file:projects/origin-ui-irec-core.tgz version: 0.0.0 file:projects/origin-ui.tgz_jest@27.0.4: dependencies: '@date-io/moment': 1.3.13_moment@2.29.1 - '@material-ui/core': 4.11.4_e84af7742d25ac89b84cf59d2816ddf6 - '@material-ui/icons': 4.11.2_083feab47dc0d33e56a0783af158b52a + '@material-ui/core': 4.11.4_7a759d72fcbc11ce03c9de110c21df82 + '@material-ui/icons': 4.11.2_5e14cec25e1ceef8d08e6ab1e0c4cb05 '@material-ui/pickers': 3.3.10_f543984b3e6c18c2e2e104a9ecbda934 - '@material-ui/styles': 4.11.4_e84af7742d25ac89b84cf59d2816ddf6 - '@reduxjs/toolkit': 1.5.1 + '@material-ui/styles': 4.11.4_7a759d72fcbc11ce03c9de110c21df82 + '@reduxjs/toolkit': 1.6.0_react-redux@7.2.4+react@17.0.2 '@svgr/webpack': 5.5.0 - '@types/react': 17.0.9 - '@types/react-dom': 17.0.6 + '@types/react': 17.0.11 + '@types/react-dom': 17.0.7 '@types/redux-logger': 3.0.8 - '@vmw/queue-for-redux-saga': 0.3.0_dabc9aab316ba0825f295ac4fdb4520c + '@vmw/queue-for-redux-saga': 0.3.0_048ca475e79921e4b5c7ae691130b6a4 bootstrap: 4.6.0 buffer: 6.0.3 connected-react-router: 6.9.1_7e4552cdc026a4bda18e398cb3ee29b8 @@ -32745,8 +33132,8 @@ packages: cross-env: 7.0.3 crypto-browserify: 3.12.0 css-loader: 5.2.6_webpack@5.38.1 - cypress: 7.4.0 - cypress-file-upload: 5.0.7_cypress@7.4.0 + cypress: 7.5.0 + cypress-file-upload: 5.0.7_cypress@7.5.0 eslint-plugin-react: 7.24.0 extract-text-webpack-plugin: 4.0.0-beta.0_webpack@5.38.1 file-loader: 6.2.0_webpack@5.38.1 @@ -32773,7 +33160,7 @@ packages: redux-logger: 4.0.0 redux-saga: 1.1.3 resolve-url-loader: 4.0.0 - sass-loader: 12.0.0_node-sass@6.0.0+webpack@5.38.1 + sass-loader: 12.1.0_node-sass@6.0.0+webpack@5.38.1 source-map-loader: 3.0.0_webpack@5.38.1 stream-browserify: 3.0.0 stream-http: 3.2.0 @@ -32784,10 +33171,10 @@ packages: url: 0.11.0 url-loader: 4.1.1_file-loader@6.2.0+webpack@5.38.1 vm-browserify: 1.1.2 - webpack: 5.38.1_webpack-cli@4.7.0 - webpack-cli: 4.7.0_4f38b4f344caeae135cc7debc9aac51b - webpack-dev-server: 3.11.2_webpack-cli@4.7.0+webpack@5.38.1 - webpack-merge: 5.7.3 + webpack: 5.38.1_webpack-cli@4.7.2 + webpack-cli: 4.7.2_4f38b4f344caeae135cc7debc9aac51b + webpack-dev-server: 3.11.2_webpack-cli@4.7.2+webpack@5.38.1 + webpack-merge: 5.8.0 zlib-browserify: 0.0.3 dev: false id: file:projects/origin-ui.tgz @@ -32795,27 +33182,27 @@ packages: peerDependencies: jest: '*' resolution: - integrity: sha512-p6cN0zN6WBcqX8hlQOmp3C0BQxJIk8nyFZC096+pJjeY9pgf0f/ywxWRGzcnjA3a0yxfqiqWoi1CluvVrAwgww== + integrity: sha512-ET6Z9YufEUgZ6QEnphXey1D26sHbFCS0je4iRWhGamVCfRfRkrD8ja6rnKSWpoQE/AGdHrGe3zWgPDsIvy/mcg== tarball: file:projects/origin-ui.tgz version: 0.0.0 file:projects/solar-simulator.tgz: dependencies: '@types/mocha': 8.2.2 '@types/moment-timezone': 0.5.13 - '@types/node': 14.17.2 + '@types/node': 14.17.3 axios: 0.21.1 bn.js: 5.2.0 body-parser: 1.19.0 commander: 6.2.1 concurrently: 6.2.0 cors: 2.8.5 - csv-parse: 4.15.4 + csv-parse: 4.16.0 dotenv: 10.0.0 - ethers: 5.3.0 + ethers: 5.3.1 express: 4.17.1 fs-extra: 10.0.0 geo-tz: 6.0.1 - mocha: 8.4.0 + mocha: 9.0.0 moment: 2.29.1 moment-timezone: 0.5.33 typescript: 4.3.2 @@ -32823,7 +33210,7 @@ packages: dev: false name: '@rush-temp/solar-simulator' resolution: - integrity: sha512-akYIR9fiI7kC1tjf65Mp3+KsByq+j+QmsEb8zrg+N2oSTvNu9VHgqtUNERAXVrN80L7trHhxSRBE4eRVI2wAiQ== + integrity: sha512-LjFjv1dC1Y0CN89n2m4W93Md7kF1sMz+ZL00Czj9/iYn2rCWvogZJNVhD0GIqqF1dFzgHDiCyPR/fIijlcPbug== tarball: file:projects/solar-simulator.tgz version: 0.0.0 file:projects/utils-general.tgz: @@ -32831,12 +33218,12 @@ packages: '@types/chai': 4.2.15 '@types/eth-sig-util': 2.1.0 '@types/mocha': 8.2.2 - '@types/node': 14.17.2 + '@types/node': 14.17.3 chai: 4.3.0 eth-sig-util: 2.5.4 - ethers: 5.3.0 + ethers: 5.3.1 jsonschema: 1.4.0 - mocha: 8.4.0 + mocha: 9.0.0 moment: 2.29.1 ts-node: 9.1.1_typescript@4.3.2 typescript: 4.3.2 @@ -32844,7 +33231,7 @@ packages: dev: false name: '@rush-temp/utils-general' resolution: - integrity: sha512-XYqCeXRbm3LMwbVMHiScw19qWppPrUpBrvTB/BxkYv5W+E9svEkkVtugrGF95jqXz0uW3dgVs4d/Xi4BesEnZQ== + integrity: sha512-zjM/n5NeOzTxCo+fWBJEMjtcLhI+E2d4m0xVm1ZKNlZpq0/fdRRBRP9ELeBeUtGt5wW2FhX425G3hm08lJwdWw== tarball: file:projects/utils-general.tgz version: 0.0.0 github.com/Digital-MOB-Filecoin/filecoin-signing-tools-js/8f8e92157cac2556d35cab866779e9a8ea8a4e25: @@ -32899,14 +33286,15 @@ packages: resolution: tarball: https://codeload.github.com/web3-js/scrypt-shim/tar.gz/aafdadda13e660e25e1c525d1f5b2443f5eb1ebb version: 0.1.0 +registry: '' specifiers: - '@babel/core': 7.14.3 + '@babel/core': 7.14.5 '@date-io/moment': 1.3.13 '@energyweb/energy-api-influxdb': 0.7.0 - '@ethersproject/abi': 5.3.0 + '@ethersproject/abi': 5.3.1 '@ethersproject/abstract-provider': 5.3.0 '@ethersproject/contracts': 5.3.0 - '@ethersproject/providers': 5.3.0 + '@ethersproject/providers': 5.3.1 '@hookform/resolvers': 1.3.7 '@jest/globals': 27.0.3 '@material-ui/core': 4.11.4 @@ -32935,7 +33323,7 @@ specifiers: '@openzeppelin/truffle-upgrades': 1.7.0 '@openzeppelin/upgrades': 2.8.0 '@react-google-maps/api': 2.2.0 - '@reduxjs/toolkit': 1.5.1 + '@reduxjs/toolkit': 1.6.0 '@rush-temp/device-registry': file:./projects/device-registry.tgz '@rush-temp/exchange': file:./projects/exchange.tgz '@rush-temp/exchange-client': file:./projects/exchange-client.tgz @@ -32982,7 +33370,7 @@ specifiers: '@storybook/react': 6.2.9 '@svgr/webpack': 5.5.0 '@testing-library/react': 11.2.7 - '@typechain/ethers-v5': 7.0.0 + '@typechain/ethers-v5': 7.0.1 '@types/bcryptjs': 2.4.2 '@types/bn.js': 5.1.0 '@types/body-parser': 1.19.0 @@ -32999,15 +33387,15 @@ specifiers: '@types/mocha': 8.2.2 '@types/moment-timezone': 0.5.13 '@types/multer': 1.4.5 - '@types/node': 14.17.2 + '@types/node': 14.17.3 '@types/nodemailer': 6.4.2 '@types/passport': 1.0.6 '@types/passport-jwt': 3.0.5 '@types/passport-local': 1.0.33 '@types/pg': 7.14.11 '@types/qs': 6.9.6 - '@types/react': 17.0.9 - '@types/react-dom': 17.0.6 + '@types/react': 17.0.11 + '@types/react-dom': 17.0.7 '@types/react-redux': 7.1.16 '@types/react-router-dom': 5.1.7 '@types/redux-logger': 3.0.8 @@ -33040,8 +33428,8 @@ specifiers: cross-env: 7.0.3 crypto-browserify: 3.12.0 css-loader: 5.2.6 - csv-parse: 4.15.4 - cypress: 7.4.0 + csv-parse: 4.16.0 + cypress: 7.5.0 cypress-file-upload: 5.0.7 dayjs: ^1.10.4 dotenv: 10.0.0 @@ -33051,7 +33439,7 @@ specifiers: eslint-plugin-react: 7.24.0 eslint-plugin-react-hooks: 4.2.0 eth-sig-util: 2.5.4 - ethers: 5.3.0 + ethers: 5.3.1 ethlint: 1.2.5 express: 4.17.1 extract-text-webpack-plugin: 4.0.0-beta.0 @@ -33079,7 +33467,7 @@ specifiers: lodash: ^4.17.21 mandrill-nodemailer-transport: 1.2.1 mini-css-extract-plugin: 1.6.0 - mocha: 8.4.0 + mocha: 9.0.0 moment: 2.29.1 moment-range: 4.0.2 moment-timezone: 0.5.33 @@ -33103,7 +33491,7 @@ specifiers: react-dom: 17.0.2 react-dropzone: 11.3.2 react-error-boundary: 3.1.3 - react-hook-form: 6.15.7 + react-hook-form: 6.15.8 react-i18next: 11.10.0 react-redux: 7.2.4 react-router-dom: 5.2.0 @@ -33114,7 +33502,7 @@ specifiers: reflect-metadata: 0.1.13 resolve-url-loader: 4.0.0 rxjs: 6.6.7 - sass-loader: 12.0.0 + sass-loader: 12.1.0 shx: 0.3.3 solc: 0.8.4 source-map-loader: 3.0.0 @@ -33126,7 +33514,7 @@ specifiers: supertest-capture-error: 1.0.0 swagger-ui-express: 4.1.6 toastr: 2.1.4 - truffle: 5.3.9 + truffle: 5.3.10 truffle-typings: 1.0.8 ts-jest: 27.0.3 ts-loader: 9.2.3 @@ -33143,9 +33531,9 @@ specifiers: vm-browserify: 1.1.2 wait-on: 5.2.1 webpack: 5.38.1 - webpack-cli: 4.7.0 + webpack-cli: 4.7.2 webpack-dev-server: 3.11.2 - webpack-merge: 5.7.3 + webpack-merge: 5.8.0 winston: 3.3.3 winston-transport: 4.4.0 write-json-file: 4.3.0 diff --git a/packages/traceability/issuer/contracts/ERC1888/IERC1888.sol b/packages/traceability/issuer/contracts/ERC1888/IERC1888.sol index 0a2f2a2611..33d5a67bd9 100644 --- a/packages/traceability/issuer/contracts/ERC1888/IERC1888.sol +++ b/packages/traceability/issuer/contracts/ERC1888/IERC1888.sol @@ -1,30 +1,30 @@ -// SPDX-License-Identifier: GPL-3.0-or-later -pragma solidity ^0.8.0; +// SPDX-License-Identifier: MIT +pragma solidity 0.8.4; import "@openzeppelin/contracts/token/ERC1155/IERC1155.sol"; -interface ERC1888 is IERC1155 { +interface ERC1888 is IERC1155 { struct Certificate { - int256 topic; - address issuer; // msg.sender - bytes validityData; // call data + uint256 topic; + address issuer; + bytes validityData; bytes data; } - event IssuanceSingle(address indexed _issuer, int256 indexed _topic, uint256 _id); - event IssuanceBatch(address indexed _issuer, int256[] indexed _topics, uint256[] _ids); - - event ClaimSingle(address indexed _claimIssuer, address indexed _claimSubject, int256 indexed _topic, uint256 _id, uint256 _value, bytes _claimData); - event ClaimBatch(address indexed _claimIssuer, address indexed _claimSubject, int256[] indexed _topics, uint256[] _ids, uint256[] _values, bytes[] _claimData); - - function issue(address _to, bytes calldata _validityData, int256 _topic, uint256 _value, bytes calldata _data) external returns (uint256); - // function batchIssue(bytes[] _data, uint256[] _topics, uint256[] _value, bytes32[] _signatures) external returns(uint256[]); - - function safeTransferAndClaimFrom(address _from, address _to, uint256 _id, uint256 _value, bytes calldata _data, bytes calldata _claimData) external; - function safeBatchTransferAndClaimFrom(address _from, address _to, uint256[] calldata _ids, uint256[] calldata _values, bytes calldata _data, bytes[] calldata _claimData) external; - - function getCertificate(uint256 _id) external view returns (address issuer, int256 topic, bytes calldata validityCall, bytes calldata data); - function claimedBalanceOf(address _owner, uint256 _id) external view returns (uint256); - function claimedBalanceOfBatch(address[] calldata _owners, uint256[] calldata _ids) external view returns (uint256[] memory); + event IssuanceSingle(address indexed _issuer, uint256 indexed _topic, uint256 _id, uint256 _value); + event IssuanceBatch(address indexed _issuer, uint256 indexed _topic, uint256[] _ids, uint256[] _values); + + event ClaimSingle(address indexed _claimIssuer, address indexed _claimSubject, uint256 indexed _topic, uint256 _id, uint256 _value, bytes _claimData); + event ClaimBatch(address indexed _claimIssuer, address indexed _claimSubject, uint256[] indexed _topics, uint256[] _ids, uint256[] _values, bytes[] _claimData); + + function issue(address _to, bytes calldata _validityData, uint256 _topic, uint256 _value, bytes calldata _issuanceData) external returns (uint256); + function batchIssue(address _to, bytes memory _issuanceData, uint256 _topic, uint256[] memory _values, bytes[] memory _validityCalls) external returns(uint256[] memory); + + function safeTransferAndClaimFrom(address _from, address _to, uint256 _id, uint256 _value, bytes calldata _data, bytes calldata _claimData) external; + function safeBatchTransferAndClaimFrom(address _from, address _to, uint256[] calldata _ids, uint256[] calldata _values, bytes calldata _data, bytes[] calldata _claimData) external; + + function getCertificate(uint256 _id) external view returns (address issuer, uint256 topic, bytes memory validityCall, bytes memory data); + function claimedBalanceOf(address _owner, uint256 _id) external view returns (uint256); + function claimedBalanceOfBatch(address[] calldata _owners, uint256[] calldata _ids) external view returns (uint256[] memory); } \ No newline at end of file diff --git a/packages/traceability/issuer/contracts/Issuer.sol b/packages/traceability/issuer/contracts/Issuer.sol index a8cd32c3ec..08bdfff835 100644 --- a/packages/traceability/issuer/contracts/Issuer.sol +++ b/packages/traceability/issuer/contracts/Issuer.sol @@ -9,12 +9,14 @@ import "./Registry.sol"; contract Issuer is Initializable, OwnableUpgradeable, UUPSUpgradeable { event CertificationRequested(address indexed _owner, uint256 indexed _id); + event CertificationRequestedBatch(address[] indexed _owners, uint256[] indexed _id); event CertificationRequestApproved(address indexed _owner, uint256 indexed _id, uint256 indexed _certificateId); + event CertificationRequestBatchApproved(address[] indexed _owners, uint256[] indexed _ids, uint256[] indexed _certificateIds); event CertificationRequestRevoked(address indexed _owner, uint256 indexed _id); event CertificateRevoked(uint256 indexed _certificateId); - int public certificateTopic; + uint256 public certificateTopic; Registry public registry; address public privateIssuer; @@ -33,7 +35,7 @@ contract Issuer is Initializable, OwnableUpgradeable, UUPSUpgradeable { address sender; } - function initialize(int _certificateTopic, address _registry) public initializer { + function initialize(uint256 _certificateTopic, address _registry) public initializer { require(_registry != address(0), "Issuer::initialize: Cannot use address 0x0 as registry address."); certificateTopic = _certificateTopic; @@ -74,6 +76,28 @@ contract Issuer is Initializable, OwnableUpgradeable, UUPSUpgradeable { return id; } + function requestCertificationForBatch(bytes[] memory _data, address[] memory _owners) public returns (uint256[] memory) { + uint256[] memory requestIds = new uint256[](_data.length); + + for (uint i = 1; i <= _data.length; i++) { + uint256 id = i + _latestCertificationRequestId; + + _certificationRequests[id] = CertificationRequest({ + owner: _owners[i], + data: _data[i], + approved: false, + revoked: false, + sender: _msgSender() + }); + + requestIds[i] = id; + } + + emit CertificationRequestedBatch(_owners, requestIds); + + return requestIds; + } + function requestCertification(bytes calldata _data) external returns (uint256) { return requestCertificationFor(_data, _msgSender()); } @@ -109,8 +133,7 @@ contract Issuer is Initializable, OwnableUpgradeable, UUPSUpgradeable { function approveCertificationRequest( uint256 _requestId, - uint256 _value, - bytes memory _validityData + uint256 _value ) public returns (uint256) { require(_msgSender() == owner() || _msgSender() == privateIssuer, "Issuer::approveCertificationRequest: caller is not the owner or private issuer contract"); require(_requestNotApprovedOrRevoked(_requestId), "Issuer::approveCertificationRequest: request already approved or revoked"); @@ -118,7 +141,14 @@ contract Issuer is Initializable, OwnableUpgradeable, UUPSUpgradeable { CertificationRequest storage request = _certificationRequests[_requestId]; request.approved = true; - uint256 certificateId = registry.issue(request.owner, _validityData, certificateTopic, _value, request.data); + uint256 certificateId = registry.issue( + request.owner, + abi.encodeWithSignature("isRequestValid(uint256)",_requestId), + certificateTopic, + _value, + request.data + ); + requestToCertificate[_requestId] = certificateId; emit CertificationRequestApproved(request.owner, _requestId, certificateId); @@ -126,13 +156,61 @@ contract Issuer is Initializable, OwnableUpgradeable, UUPSUpgradeable { return certificateId; } + function approveCertificationRequestBatch( + uint256[] memory _requestIds, + uint256[] memory _values + ) public returns (uint256[] memory) { + require(_msgSender() == owner() || _msgSender() == privateIssuer, "Issuer::approveCertificationRequestBatch: caller is not the owner or private issuer contract"); + + for (uint i = 0; i < _requestIds.length; i++) { + require(_requestNotApprovedOrRevoked(_requestIds[i]), "Issuer::approveCertificationRequestBatch: request already approved or revoked"); + } + + address[] memory owners = new address[](_requestIds.length); + bytes[] memory data = new bytes[](_requestIds.length); + bytes[] memory validityData = new bytes[](_requestIds.length); + + for (uint i = 0; i < _requestIds.length; i++) { + CertificationRequest storage request = _certificationRequests[_requestIds[i]]; + request.approved = true; + + owners[i] = request.owner; + data[i] = request.data; + validityData[i] = abi.encodeWithSignature("isRequestValid(uint256)",_requestIds[i]); + } + + uint256[] memory certificateIds = registry.batchIssueMultiple( + owners, + data, + certificateTopic, + _values, + validityData + ); + + for (uint i = 0; i < _requestIds.length; i++) { + requestToCertificate[_requestIds[i]] = certificateIds[i]; + } + + emit CertificationRequestBatchApproved(owners, _requestIds, certificateIds); + + return certificateIds; + } + function issue(address _to, uint256 _value, bytes memory _data) public onlyOwner returns (uint256) { uint256 requestId = requestCertificationFor(_data, _to); return approveCertificationRequest( requestId, - _value, - abi.encodeWithSignature("isRequestValid(uint256)",requestId) + _value + ); + } + + function issueBatch(address[] memory _to, uint256[] memory _values, bytes[] memory _data) public onlyOwner returns (uint256[] memory) { + uint256[] memory requestIds = requestCertificationForBatch(_data, _to); + + return approveCertificationRequestBatch( + requestIds, + _values ); } diff --git a/packages/traceability/issuer/contracts/PrivateIssuer.sol b/packages/traceability/issuer/contracts/PrivateIssuer.sol index cb1c0f1ccf..b9ce90423c 100644 --- a/packages/traceability/issuer/contracts/PrivateIssuer.sol +++ b/packages/traceability/issuer/contracts/PrivateIssuer.sol @@ -65,10 +65,9 @@ contract PrivateIssuer is Initializable, OwnableUpgradeable, UUPSUpgradeable { function approveCertificationRequestPrivate( uint256 _requestId, - bytes32 _commitment, - bytes memory _validityData + bytes32 _commitment ) public onlyOwner returns (uint256) { - uint256 certificateId = issuer.approveCertificationRequest(_requestId, 0, _validityData); + uint256 certificateId = issuer.approveCertificationRequest(_requestId, 0); _updateCommitment(certificateId, 0x0, _commitment); Issuer.CertificationRequest memory request = issuer.getCertificationRequest(_requestId); // TO-DO: get storage instead of memory @@ -83,8 +82,7 @@ contract PrivateIssuer is Initializable, OwnableUpgradeable, UUPSUpgradeable { return approveCertificationRequestPrivate( requestId, - _commitment, - abi.encodeWithSignature("isRequestValid(uint256)",requestId) + _commitment ); } diff --git a/packages/traceability/issuer/contracts/Registry.sol b/packages/traceability/issuer/contracts/Registry.sol index 340ad93210..1aebe6f6aa 100644 --- a/packages/traceability/issuer/contracts/Registry.sol +++ b/packages/traceability/issuer/contracts/Registry.sol @@ -13,20 +13,74 @@ contract Registry is ERC1155, ERC1888 { constructor(string memory _uri) public ERC1155(_uri) {} - function issue(address _to, bytes calldata _validityData, int256 _topic, uint256 _value, bytes calldata _data) external override returns (uint256 _id) { + function issue(address _to, bytes calldata _validityData, uint256 _topic, uint256 _value, bytes calldata _issuanceData) external override returns (uint256) { _validate(_msgSender(), _validityData); - _id = ++_latestCertificateId; - ERC1155._mint(_to, _id, _value, _data); + uint256 _id = ++_latestCertificateId; + ERC1155._mint(_to, _id, _value, _issuanceData); certificateStorage[_id] = Certificate({ topic: _topic, issuer: _msgSender(), validityData: _validityData, - data: _data + data: _issuanceData }); - emit IssuanceSingle(_msgSender(), _topic, _id); + emit IssuanceSingle(_msgSender(), _topic, _id, _value); + + return _id; + } + + function batchIssue(address _to, bytes memory _issuanceData, uint256 _topic, uint256[] memory _values, bytes[] memory _validityCalls) external override returns (uint256[] memory) { + uint256[] memory _ids = new uint256[](_values.length); + + address operator = _msgSender(); + + for (uint256 i = 1; i <= _values.length; ++i) { + _ids[i] = i + _latestCertificateId; + _validate(operator, _validityCalls[_ids[i]]); + } + + ERC1155._mintBatch(_to, _ids, _values, _issuanceData); + + for (uint256 i = 0; i <= _ids.length; ++i) { + certificateStorage[_ids[i]] = Certificate({ + topic: _topic, + issuer: operator, + validityData: _validityCalls[i], + data: _issuanceData + }); + } + + emit IssuanceBatch(operator, _topic, _ids, _values); + + return _ids; + } + + function batchIssueMultiple(address[] memory _to, bytes[] memory _issuanceData, uint256 _topic, uint256[] memory _values, bytes[] memory _validityCalls) external returns (uint256[] memory) { + uint256[] memory _ids = new uint256[](_values.length); + + address operator = _msgSender(); + + for (uint256 i = 0; i < _values.length; ++i) { + _ids[i] = i + _latestCertificateId; + _validate(operator, _validityCalls[_ids[i]]); + } + + for (uint256 i = 0; i <= _ids.length; ++i) { + ERC1155._mint(_to[i], _ids[i], _values[i], _issuanceData[i]); + + certificateStorage[_ids[i]] = Certificate({ + topic: _topic, + issuer: operator, + validityData: _validityCalls[i], + data: _issuanceData[i] + }); + } + + emit IssuanceBatch(operator, _topic, _ids, _values); + + return _ids; } function mint(uint256 _id, address _to, uint256 _quantity) external { @@ -83,7 +137,7 @@ contract Registry is ERC1155, ERC1888 { "Registry::safeBatchTransferAndClaimFrom: not all arrays are of the same length." ); - int256[] memory topics = new int256[](numberOfClaims); + uint256[] memory topics = new uint256[](numberOfClaims); for (uint256 i = 0; i < numberOfClaims; ++i) { Certificate memory cert = certificateStorage[_ids[i]]; @@ -102,7 +156,7 @@ contract Registry is ERC1155, ERC1888 { emit ClaimBatch(_from, _to, topics, _ids, _values, _claimData); } - function getCertificate(uint256 _id) external override view returns (address issuer, int256 topic, bytes memory validityData, bytes memory data) { + function getCertificate(uint256 _id) public view override returns (address issuer, uint256 topic, bytes memory validityCall, bytes memory data) { require(_id <= _latestCertificateId, "Registry::getCertificate: _id out of bounds"); Certificate memory certificate = certificateStorage[_id]; @@ -125,6 +179,28 @@ contract Registry is ERC1155, ERC1888 { return batchClaimBalances; } + /** + * Modification to the OpenZeppelin ERC-1155 to support to[] addresses + */ + // function _mintBatch(address[] to, uint256[] memory ids, uint256[] memory amounts, bytes[] memory data, bytes[] memory validityData) internal override { + // require(to.length == ids.length, "ERC1155: to and ids length mismatch"); + // require(ids.length == amounts.length, "ERC1155: ids and amounts length mismatch"); + + // address operator = _msgSender(); + + // for (uint i = 0; i < ids.length; i++) { + // require(_to != address(0), "ERC1155: mint to the zero address"); + // _validate(operator, _validityData[i]); + // } + + // for (uint i = 0; i < ids.length; i++) { + // _balances[ids[i]][to[i]] += amounts[i]; + + // emit TransferSingle(operator, address(0), to[i], ids[i], amounts[i]); + // _doSafeTransferAcceptanceCheck(operator, address(0), to[i], ids[i], amounts[i], data); + // } + // } + function _burn(address _from, uint256 _id, uint256 _value) internal override { ERC1155._burn(_from, _id, _value); From 4e7f321357e7442b13835d2c4a6c97d839b36d16 Mon Sep 17 00:00:00 2001 From: Joseph Bagaric Date: Wed, 16 Jun 2021 19:35:33 +0200 Subject: [PATCH 02/11] feat(issuer): add batch issuing facade --- .../traceability/issuer/contracts/Issuer.sol | 14 ++- .../issuer/contracts/PrivateIssuer.sol | 16 +-- .../issuer/contracts/Registry.sol | 55 ++++---- .../src/blockchain-facade/Certificate.ts | 12 +- .../CertificateBatchOperations.ts | 119 ++++++++++++++++++ .../src/blockchain-facade/CertificateUtils.ts | 68 ---------- .../blockchain-facade/CertificationRequest.ts | 10 +- packages/traceability/issuer/src/index.ts | 3 +- .../issuer/test/Certificate.test.ts | 47 ++++++- 9 files changed, 207 insertions(+), 137 deletions(-) create mode 100644 packages/traceability/issuer/src/blockchain-facade/CertificateBatchOperations.ts diff --git a/packages/traceability/issuer/contracts/Issuer.sol b/packages/traceability/issuer/contracts/Issuer.sol index 08bdfff835..da1aedddef 100644 --- a/packages/traceability/issuer/contracts/Issuer.sol +++ b/packages/traceability/issuer/contracts/Issuer.sol @@ -79,8 +79,8 @@ contract Issuer is Initializable, OwnableUpgradeable, UUPSUpgradeable { function requestCertificationForBatch(bytes[] memory _data, address[] memory _owners) public returns (uint256[] memory) { uint256[] memory requestIds = new uint256[](_data.length); - for (uint i = 1; i <= _data.length; i++) { - uint256 id = i + _latestCertificationRequestId; + for (uint256 i = 0; i < _data.length; i++) { + uint256 id = i + _latestCertificationRequestId + 1; _certificationRequests[id] = CertificationRequest({ owner: _owners[i], @@ -95,6 +95,8 @@ contract Issuer is Initializable, OwnableUpgradeable, UUPSUpgradeable { emit CertificationRequestedBatch(_owners, requestIds); + _latestCertificationRequestId = requestIds[requestIds.length - 1]; + return requestIds; } @@ -104,7 +106,7 @@ contract Issuer is Initializable, OwnableUpgradeable, UUPSUpgradeable { function isRequestValid(uint256 _requestId) external view returns (bool) { CertificationRequest memory request = _certificationRequests[_requestId]; - uint certificateId = requestToCertificate[_requestId]; + uint256 certificateId = requestToCertificate[_requestId]; return _requestId <= _latestCertificationRequestId && request.approved @@ -162,7 +164,7 @@ contract Issuer is Initializable, OwnableUpgradeable, UUPSUpgradeable { ) public returns (uint256[] memory) { require(_msgSender() == owner() || _msgSender() == privateIssuer, "Issuer::approveCertificationRequestBatch: caller is not the owner or private issuer contract"); - for (uint i = 0; i < _requestIds.length; i++) { + for (uint256 i = 0; i < _requestIds.length; i++) { require(_requestNotApprovedOrRevoked(_requestIds[i]), "Issuer::approveCertificationRequestBatch: request already approved or revoked"); } @@ -170,7 +172,7 @@ contract Issuer is Initializable, OwnableUpgradeable, UUPSUpgradeable { bytes[] memory data = new bytes[](_requestIds.length); bytes[] memory validityData = new bytes[](_requestIds.length); - for (uint i = 0; i < _requestIds.length; i++) { + for (uint256 i = 0; i < _requestIds.length; i++) { CertificationRequest storage request = _certificationRequests[_requestIds[i]]; request.approved = true; @@ -187,7 +189,7 @@ contract Issuer is Initializable, OwnableUpgradeable, UUPSUpgradeable { validityData ); - for (uint i = 0; i < _requestIds.length; i++) { + for (uint256 i = 0; i < _requestIds.length; i++) { requestToCertificate[_requestIds[i]] = certificateIds[i]; } diff --git a/packages/traceability/issuer/contracts/PrivateIssuer.sol b/packages/traceability/issuer/contracts/PrivateIssuer.sol index b9ce90423c..522261cd89 100644 --- a/packages/traceability/issuer/contracts/PrivateIssuer.sol +++ b/packages/traceability/issuer/contracts/PrivateIssuer.sol @@ -59,7 +59,7 @@ contract PrivateIssuer is Initializable, OwnableUpgradeable, UUPSUpgradeable { Certification requests */ - function getCertificateCommitment(uint certificateId) public view returns (bytes32) { + function getCertificateCommitment(uint256 certificateId) public view returns (bytes32) { return _commitments[certificateId]; } @@ -135,18 +135,18 @@ contract PrivateIssuer is Initializable, OwnableUpgradeable, UUPSUpgradeable { return _requestMigrateToPublicFor(_certificateId, _ownerAddressLeafHash, _msgSender()); } - function getPrivateTransferRequest(uint _certificateId) external view onlyOwner returns (PrivateTransferRequest memory) { + function getPrivateTransferRequest(uint256 _certificateId) external view onlyOwner returns (PrivateTransferRequest memory) { return _requestPrivateTransferStorage[_certificateId]; } - function getMigrationRequest(uint _requestId) external view onlyOwner returns (RequestStateChange memory) { + function getMigrationRequest(uint256 _requestId) external view onlyOwner returns (RequestStateChange memory) { return _requestMigrateToPublicStorage[_requestId]; } - function getMigrationRequestId(uint _certificateId) external view onlyOwner returns (uint256 _migrationRequestId) { + function getMigrationRequestId(uint256 _certificateId) external view onlyOwner returns (uint256 _migrationRequestId) { bool found = false; - for (uint i = 1; i <= _requestMigrateToPublicNonce; i++) { + for (uint256 i = 1; i <= _requestMigrateToPublicNonce; i++) { if (_requestMigrateToPublicStorage[i].certificateId == _certificateId) { found = true; return i; @@ -185,7 +185,7 @@ contract PrivateIssuer is Initializable, OwnableUpgradeable, UUPSUpgradeable { function validateOwnershipProof( address _ownerAddress, - uint _volume, + uint256 _volume, string memory _salt, bytes32 _rootHash, Proof[] memory _proof @@ -222,10 +222,10 @@ contract PrivateIssuer is Initializable, OwnableUpgradeable, UUPSUpgradeable { emit CommitmentUpdated(_msgSender(), _id, _commitment); } - function _migrationRequestExists(uint _certificateId) private view returns (bool) { + function _migrationRequestExists(uint256 _certificateId) private view returns (bool) { bool exists = false; - for (uint i = 1; i <= _requestMigrateToPublicNonce; i++) { + for (uint256 i = 1; i <= _requestMigrateToPublicNonce; i++) { if (_requestMigrateToPublicStorage[i].certificateId == _certificateId) { exists = true; return exists; diff --git a/packages/traceability/issuer/contracts/Registry.sol b/packages/traceability/issuer/contracts/Registry.sol index 1aebe6f6aa..75bea69719 100644 --- a/packages/traceability/issuer/contracts/Registry.sol +++ b/packages/traceability/issuer/contracts/Registry.sol @@ -32,18 +32,21 @@ contract Registry is ERC1155, ERC1888 { } function batchIssue(address _to, bytes memory _issuanceData, uint256 _topic, uint256[] memory _values, bytes[] memory _validityCalls) external override returns (uint256[] memory) { + require(_issuanceData.length == _values.length, "Registry::batchIssueMultiple: _issuanceData and _values arrays have to be the same length"); + require(_values.length == _validityCalls.length, "Registry::batchIssueMultiple: _values and _validityCalls arrays have to be the same length"); + uint256[] memory _ids = new uint256[](_values.length); address operator = _msgSender(); - for (uint256 i = 1; i <= _values.length; ++i) { - _ids[i] = i + _latestCertificateId; - _validate(operator, _validityCalls[_ids[i]]); + for (uint256 i = 0; i <= _values.length; i++) { + _ids[i] = i + _latestCertificateId + 1; + _validate(operator, _validityCalls[i]); } ERC1155._mintBatch(_to, _ids, _values, _issuanceData); - for (uint256 i = 0; i <= _ids.length; ++i) { + for (uint256 i = 0; i < _ids.length; i++) { certificateStorage[_ids[i]] = Certificate({ topic: _topic, issuer: operator, @@ -58,16 +61,20 @@ contract Registry is ERC1155, ERC1888 { } function batchIssueMultiple(address[] memory _to, bytes[] memory _issuanceData, uint256 _topic, uint256[] memory _values, bytes[] memory _validityCalls) external returns (uint256[] memory) { + require(_to.length == _issuanceData.length, "Registry::batchIssueMultiple: _to and _issuanceData arrays have to be the same length"); + require(_issuanceData.length == _values.length, "Registry::batchIssueMultiple: _issuanceData and _values arrays have to be the same length"); + require(_values.length == _validityCalls.length, "Registry::batchIssueMultiple: _values and _validityCalls arrays have to be the same length"); + uint256[] memory _ids = new uint256[](_values.length); address operator = _msgSender(); - for (uint256 i = 0; i < _values.length; ++i) { - _ids[i] = i + _latestCertificateId; - _validate(operator, _validityCalls[_ids[i]]); + for (uint256 i = 0; i < _values.length; i++) { + _ids[i] = i + _latestCertificateId + 1; + _validate(operator, _validityCalls[i]); } - for (uint256 i = 0; i <= _ids.length; ++i) { + for (uint256 i = 0; i < _ids.length; i++) { ERC1155._mint(_to[i], _ids[i], _values[i], _issuanceData[i]); certificateStorage[_ids[i]] = Certificate({ @@ -78,6 +85,8 @@ contract Registry is ERC1155, ERC1888 { }); } + _latestCertificateId = _ids[_ids.length - 1]; + emit IssuanceBatch(operator, _topic, _ids, _values); return _ids; @@ -125,7 +134,7 @@ contract Registry is ERC1155, ERC1888 { bytes calldata _data, bytes[] calldata _claimData ) external override { - uint numberOfClaims = _ids.length; + uint256 numberOfClaims = _ids.length; require(_to != address(0x0), "Registry::safeBatchTransferAndClaimFrom: _to address must be non-zero."); require(_ids.length == _values.length, "Registry::safeBatchTransferAndClaimFrom: _ids and _values array length must match."); @@ -139,7 +148,7 @@ contract Registry is ERC1155, ERC1888 { uint256[] memory topics = new uint256[](numberOfClaims); - for (uint256 i = 0; i < numberOfClaims; ++i) { + for (uint256 i = 0; i < numberOfClaims; i++) { Certificate memory cert = certificateStorage[_ids[i]]; _validate(cert.issuer, cert.validityData); topics[i] = cert.topic; @@ -149,7 +158,7 @@ contract Registry is ERC1155, ERC1888 { safeBatchTransferFrom(_from, _to, _ids, _values, _data); } - for (uint256 i = 0; i < numberOfClaims; ++i) { + for (uint256 i = 0; i < numberOfClaims; i++) { _burn(_to, _ids[i], _values[i]); } @@ -172,35 +181,13 @@ contract Registry is ERC1155, ERC1888 { uint256[] memory batchClaimBalances = new uint256[](_owners.length); - for (uint256 i = 0; i < _owners.length; ++i) { + for (uint256 i = 0; i < _owners.length; i++) { batchClaimBalances[i] = this.claimedBalanceOf(_owners[i], _ids[i]); } return batchClaimBalances; } - /** - * Modification to the OpenZeppelin ERC-1155 to support to[] addresses - */ - // function _mintBatch(address[] to, uint256[] memory ids, uint256[] memory amounts, bytes[] memory data, bytes[] memory validityData) internal override { - // require(to.length == ids.length, "ERC1155: to and ids length mismatch"); - // require(ids.length == amounts.length, "ERC1155: ids and amounts length mismatch"); - - // address operator = _msgSender(); - - // for (uint i = 0; i < ids.length; i++) { - // require(_to != address(0), "ERC1155: mint to the zero address"); - // _validate(operator, _validityData[i]); - // } - - // for (uint i = 0; i < ids.length; i++) { - // _balances[ids[i]][to[i]] += amounts[i]; - - // emit TransferSingle(operator, address(0), to[i], ids[i], amounts[i]); - // _doSafeTransferAcceptanceCheck(operator, address(0), to[i], ids[i], amounts[i], data); - // } - // } - function _burn(address _from, uint256 _id, uint256 _value) internal override { ERC1155._burn(_from, _id, _value); diff --git a/packages/traceability/issuer/src/blockchain-facade/Certificate.ts b/packages/traceability/issuer/src/blockchain-facade/Certificate.ts index c767fd7680..e3c1e1b741 100644 --- a/packages/traceability/issuer/src/blockchain-facade/Certificate.ts +++ b/packages/traceability/issuer/src/blockchain-facade/Certificate.ts @@ -32,8 +32,8 @@ export interface IClaimData { export interface IData { deviceId: string; - generationStartTime: number; - generationEndTime: number; + generationStartTime: Timestamp; + generationEndTime: Timestamp; metadata: string; } @@ -50,7 +50,7 @@ export interface ICertificate extends IData { id: number; issuer: string; certificationRequestId: number; - creationTime: number; + creationTime: Timestamp; creationBlockHash: string; owners: IShareInCertificate; claimers: IShareInCertificate; @@ -59,13 +59,13 @@ export interface ICertificate extends IData { export class Certificate implements ICertificate { public deviceId: string; - public generationStartTime: number; + public generationStartTime: Timestamp; - public generationEndTime: number; + public generationEndTime: Timestamp; public issuer: string; - public creationTime: number; + public creationTime: Timestamp; public creationBlockHash: string; diff --git a/packages/traceability/issuer/src/blockchain-facade/CertificateBatchOperations.ts b/packages/traceability/issuer/src/blockchain-facade/CertificateBatchOperations.ts new file mode 100644 index 0000000000..fed2997255 --- /dev/null +++ b/packages/traceability/issuer/src/blockchain-facade/CertificateBatchOperations.ts @@ -0,0 +1,119 @@ +import { BigNumber, ContractTransaction, utils } from 'ethers'; + +import { IBlockchainProperties } from './BlockchainProperties'; +import { Certificate, IClaimData, IData } from './Certificate'; +import { encodeClaimData, encodeData } from './CertificateUtils'; + +interface CertificateInfoInBatch extends IData { + to: string; + amount: BigNumber; +} + +export async function issueCertificates( + certificateInfo: CertificateInfoInBatch[], + blockchainProperties: IBlockchainProperties +): Promise { + const { issuer, registry, activeUser } = blockchainProperties; + const issuerWithSigner = issuer.connect(activeUser); + + const data = certificateInfo.map((info) => + encodeData({ + generationStartTime: info.generationStartTime, + generationEndTime: info.generationEndTime, + deviceId: info.deviceId, + metadata: info.metadata + }) + ); + + const batchIssueTx = await issuerWithSigner.issueBatch( + certificateInfo.map((info) => info.to), + certificateInfo.map((info) => info.amount), + data + ); + + const { events } = await batchIssueTx.wait(); + + let issuanceEvent: utils.LogDescription; + + for (const event of events) { + try { + issuanceEvent = issuer.interface.parseLog(event); + } catch (e) { + issuanceEvent = registry.interface.parseLog(event); + } + + if (issuanceEvent.name === 'IssuanceBatch') { + break; + } + } + + return issuanceEvent.args[2].map((id: BigNumber) => id.toNumber()); +} + +export async function transferCertificates( + certificateIds: number[], + to: string, + blockchainProperties: IBlockchainProperties, + from?: string +): Promise { + const certificatesPromises = certificateIds.map((certId) => + new Certificate(certId, blockchainProperties).sync() + ); + + const { registry, activeUser } = blockchainProperties; + const registryWithSigner = registry.connect(activeUser); + + const activeUserAddress = await activeUser.getAddress(); + const fromAddress = from ?? activeUserAddress; + + const certificates = await Promise.all(certificatesPromises); + + const values = certificates.map((cert) => BigNumber.from(cert.owners[fromAddress] ?? 0)); + + const transferTx = await registryWithSigner.safeBatchTransferFrom( + fromAddress, + to, + certificateIds, + values, + utils.randomBytes(32) // TO-DO: replace with proper data + ); + + await transferTx.wait(); + + return transferTx; +} + +export async function claimCertificates( + certificateIds: number[], + claimData: IClaimData, + blockchainProperties: IBlockchainProperties, + forAddress?: string +): Promise { + const certificatesPromises = certificateIds.map((certId) => + new Certificate(certId, blockchainProperties).sync() + ); + const certificates = await Promise.all(certificatesPromises); + + const { activeUser, registry } = blockchainProperties; + const claimer = forAddress ?? (await activeUser.getAddress()); + + const values = certificates.map((cert) => BigNumber.from(cert.owners[claimer] ?? 0)); + + const encodedClaimData = encodeClaimData(claimData); + const data = utils.randomBytes(32); + + const registryWithSigner = registry.connect(activeUser); + + const claimTx = await registryWithSigner.safeBatchTransferAndClaimFrom( + claimer, + claimer, + certificateIds, + values, + data, + certificates.map(() => encodedClaimData) + ); + + await claimTx.wait(); + + return claimTx; +} diff --git a/packages/traceability/issuer/src/blockchain-facade/CertificateUtils.ts b/packages/traceability/issuer/src/blockchain-facade/CertificateUtils.ts index 60fbb3c6cf..caa547293c 100644 --- a/packages/traceability/issuer/src/blockchain-facade/CertificateUtils.ts +++ b/packages/traceability/issuer/src/blockchain-facade/CertificateUtils.ts @@ -72,74 +72,6 @@ export const decodeData = (encodedData: string): IData => { }; }; -export async function claimCertificates( - certificateIds: number[], - claimData: IClaimData, - blockchainProperties: IBlockchainProperties, - forAddress?: string -): Promise { - const certificatesPromises = certificateIds.map((certId) => - new Certificate(certId, blockchainProperties).sync() - ); - const certificates = await Promise.all(certificatesPromises); - - const { activeUser, registry } = blockchainProperties; - const claimer = forAddress ?? (await activeUser.getAddress()); - - const values = certificates.map((cert) => BigNumber.from(cert.owners[claimer] ?? 0)); - - const encodedClaimData = encodeClaimData(claimData); - const data = utils.randomBytes(32); - - const registryWithSigner = registry.connect(activeUser); - - const claimTx = await registryWithSigner.safeBatchTransferAndClaimFrom( - claimer, - claimer, - certificateIds, - values, - data, - certificates.map(() => encodedClaimData) - ); - - await claimTx.wait(); - - return claimTx; -} - -export async function transferCertificates( - certificateIds: number[], - to: string, - blockchainProperties: IBlockchainProperties, - from?: string -): Promise { - const certificatesPromises = certificateIds.map((certId) => - new Certificate(certId, blockchainProperties).sync() - ); - - const { registry, activeUser } = blockchainProperties; - const registryWithSigner = registry.connect(activeUser); - - const activeUserAddress = await activeUser.getAddress(); - const fromAddress = from ?? activeUserAddress; - - const certificates = await Promise.all(certificatesPromises); - - const values = certificates.map((cert) => BigNumber.from(cert.owners[fromAddress] ?? 0)); - - const transferTx = await registryWithSigner.safeBatchTransferFrom( - fromAddress, - to, - certificateIds, - values, - utils.randomBytes(32) // TO-DO: replace with proper data - ); - - await transferTx.wait(); - - return transferTx; -} - export async function getAllCertificates( blockchainProperties: IBlockchainProperties ): Promise { diff --git a/packages/traceability/issuer/src/blockchain-facade/CertificationRequest.ts b/packages/traceability/issuer/src/blockchain-facade/CertificationRequest.ts index f56f051684..55e589b846 100644 --- a/packages/traceability/issuer/src/blockchain-facade/CertificationRequest.ts +++ b/packages/traceability/issuer/src/blockchain-facade/CertificationRequest.ts @@ -139,17 +139,9 @@ export class CertificationRequest implements ICertificationRequestBlockchain { async approve(energy: BigNumber): Promise { const { issuer, activeUser } = this.blockchainProperties; - const validityData = issuer.interface.encodeFunctionData('isRequestValid', [ - this.id.toString() - ]); - const issuerWithSigner = issuer.connect(activeUser); - const approveTx = await issuerWithSigner.approveCertificationRequest( - this.id, - energy, - validityData - ); + const approveTx = await issuerWithSigner.approveCertificationRequest(this.id, energy); const { events } = await approveTx.wait(); diff --git a/packages/traceability/issuer/src/index.ts b/packages/traceability/issuer/src/index.ts index aef87a13e1..6ced4be363 100644 --- a/packages/traceability/issuer/src/index.ts +++ b/packages/traceability/issuer/src/index.ts @@ -1,4 +1,5 @@ import * as CertificateUtils from './blockchain-facade/CertificateUtils'; +import * as CertificateBatchOperations from './blockchain-facade/CertificateBatchOperations'; import * as Contracts from './contracts'; export * from './const'; @@ -9,4 +10,4 @@ export * from './blockchain-facade/CertificationRequest'; export * from './blockchain-facade/Certificate'; export * from './blockchain-facade/BlockchainProperties'; -export { Contracts, CertificateUtils }; +export { Contracts, CertificateUtils, CertificateBatchOperations }; diff --git a/packages/traceability/issuer/test/Certificate.test.ts b/packages/traceability/issuer/test/Certificate.test.ts index 34f02b6d74..c19b15c26a 100644 --- a/packages/traceability/issuer/test/Certificate.test.ts +++ b/packages/traceability/issuer/test/Certificate.test.ts @@ -7,7 +7,13 @@ import { Wallet, BigNumber } from 'ethers'; import { getProviderWithFallback } from '@energyweb/utils-general'; import { migrateIssuer, migrateRegistry } from '../src/migrate'; -import { Certificate, CertificateUtils, IClaimData, IBlockchainProperties } from '../src'; +import { + Certificate, + CertificateUtils, + IClaimData, + IBlockchainProperties, + CertificateBatchOperations +} from '../src'; describe('Certificate tests', () => { let blockchainProperties: IBlockchainProperties; @@ -76,7 +82,7 @@ describe('Certificate tests', () => { ); }; - it('migrates Registry', async () => { + it('migrates Registry and Issuer', async () => { const registry = await migrateRegistry(provider, issuerPK); const issuer = await migrateIssuer(provider, issuerPK, registry.address); @@ -245,6 +251,37 @@ describe('Certificate tests', () => { ); }); + it('batch issues certificates', async () => { + setActiveUser(issuerWallet); + + const certInfo1 = { + to: deviceOwnerWallet.address, + amount: BigNumber.from(100), + generationStartTime: timestamp, + generationEndTime: (timestamp += 30 * 24 * 3600), + deviceId: '1', + metadata: '' + }; + + const certInfo2 = { + to: traderWallet.address, + amount: BigNumber.from(200), + generationStartTime: timestamp, + generationEndTime: (timestamp += 30 * 24 * 3600), + deviceId: '2', + metadata: '' + }; + + const certificateIds = await CertificateBatchOperations.issueCertificates( + [certInfo1, certInfo2], + blockchainProperties + ); + + assert.lengthOf(certificateIds, 2); + + certificateIds.forEach((id) => assert.typeOf(id, 'number')); + }); + it('batch transfers certificates', async () => { let certificate = await issueCertificate(totalVolume, deviceOwnerWallet.address); let certificate2 = await issueCertificate(totalVolume, deviceOwnerWallet.address); @@ -256,7 +293,7 @@ describe('Certificate tests', () => { assert.equal(certificate.owners[deviceOwnerWallet.address], totalVolume.toString()); assert.equal(certificate2.owners[deviceOwnerWallet.address], totalVolume.toString()); - await CertificateUtils.transferCertificates( + await CertificateBatchOperations.transferCertificates( [certificate.id, certificate2.id], traderWallet.address, blockchainProperties @@ -284,7 +321,7 @@ describe('Certificate tests', () => { assert.equal(certificate.claimers[deviceOwnerWallet.address], undefined); assert.equal(certificate2.claimers[deviceOwnerWallet.address], undefined); - await CertificateUtils.claimCertificates( + await CertificateBatchOperations.claimCertificates( [certificate.id, certificate2.id], claimData, blockchainProperties @@ -350,7 +387,7 @@ describe('Certificate tests', () => { let failed = false; try { - await CertificateUtils.claimCertificates( + await CertificateBatchOperations.claimCertificates( [certificate.id, certificate2.id], claimData, blockchainProperties, From 01603556b5854f46d5f81f7f37149d7ef8a95ec7 Mon Sep 17 00:00:00 2001 From: Joseph Bagaric Date: Thu, 17 Jun 2021 09:13:48 +0200 Subject: [PATCH 03/11] chore(issuer): document non-erc1888 feature --- packages/traceability/issuer/contracts/Registry.sol | 3 +++ 1 file changed, 3 insertions(+) diff --git a/packages/traceability/issuer/contracts/Registry.sol b/packages/traceability/issuer/contracts/Registry.sol index 75bea69719..6089fdf6d3 100644 --- a/packages/traceability/issuer/contracts/Registry.sol +++ b/packages/traceability/issuer/contracts/Registry.sol @@ -60,6 +60,9 @@ contract Registry is ERC1155, ERC1888 { return _ids; } + /* + * Not a part of the ERC-1888 standard - allows batch issuing to an array of _to addresses + */ function batchIssueMultiple(address[] memory _to, bytes[] memory _issuanceData, uint256 _topic, uint256[] memory _values, bytes[] memory _validityCalls) external returns (uint256[] memory) { require(_to.length == _issuanceData.length, "Registry::batchIssueMultiple: _to and _issuanceData arrays have to be the same length"); require(_issuanceData.length == _values.length, "Registry::batchIssueMultiple: _issuanceData and _values arrays have to be the same length"); From d5fc1a1a00c2c1d2723a451c2e3b8517296a5ddd Mon Sep 17 00:00:00 2001 From: Joseph Bagaric Date: Thu, 17 Jun 2021 10:28:57 +0200 Subject: [PATCH 04/11] chore: update tests --- common/config/rush/pnpm-lock.yaml | 2165 ++++++++--------- .../bulk-claim-certificates.handler.ts | 4 +- packages/trade/exchange/test/utils.ts | 10 +- 3 files changed, 1043 insertions(+), 1136 deletions(-) diff --git a/common/config/rush/pnpm-lock.yaml b/common/config/rush/pnpm-lock.yaml index 231bc22a30..79e55b64ee 100644 --- a/common/config/rush/pnpm-lock.yaml +++ b/common/config/rush/pnpm-lock.yaml @@ -345,7 +345,7 @@ packages: prop-types: 15.7.2 react: 17.0.2 symbol-observable: 4.0.0 - ts-invariant: 0.7.3 + ts-invariant: 0.7.5 tslib: 1.14.1 zen-observable: 0.8.15 dev: false @@ -449,8 +449,8 @@ packages: '@babel/code-frame': 7.14.5 '@babel/generator': 7.14.5 '@babel/helper-module-transforms': 7.14.5 - '@babel/helpers': 7.14.5 - '@babel/parser': 7.14.5 + '@babel/helpers': 7.14.6 + '@babel/parser': 7.14.6 '@babel/template': 7.14.5 '@babel/traverse': 7.14.5 '@babel/types': 7.14.5 @@ -467,36 +467,14 @@ packages: node: '>=6.9.0' resolution: integrity: sha512-gTXYh3M5wb7FRXQy+FErKFAv90BnlOuNn1QkCK2lREoPAjrQCO49+HVSrFoe5uakFAF5eenS75KbO2vQiLrTMQ== - /@babel/core/7.14.3: - dependencies: - '@babel/code-frame': 7.14.5 - '@babel/generator': 7.14.5 - '@babel/helper-compilation-targets': 7.14.5_@babel+core@7.14.3 - '@babel/helper-module-transforms': 7.14.5 - '@babel/helpers': 7.14.5 - '@babel/parser': 7.14.5 - '@babel/template': 7.14.5 - '@babel/traverse': 7.14.5 - '@babel/types': 7.14.5 - convert-source-map: 1.7.0 - debug: 4.3.1 - gensync: 1.0.0-beta.2 - json5: 2.2.0 - semver: 6.3.0 - source-map: 0.5.7 - dev: false - engines: - node: '>=6.9.0' - resolution: - integrity: sha512-jB5AmTKOCSJIZ72sd78ECEhuPiDMKlQdDI/4QRI6lzYATx5SSogS1oQA2AoPecRCknm30gHi2l+QVvNUu3wZAg== /@babel/core/7.14.5: dependencies: '@babel/code-frame': 7.14.5 '@babel/generator': 7.14.5 '@babel/helper-compilation-targets': 7.14.5_@babel+core@7.14.5 '@babel/helper-module-transforms': 7.14.5 - '@babel/helpers': 7.14.5 - '@babel/parser': 7.14.5 + '@babel/helpers': 7.14.6 + '@babel/parser': 7.14.6 '@babel/template': 7.14.5 '@babel/traverse': 7.14.5 '@babel/types': 7.14.5 @@ -538,20 +516,6 @@ packages: node: '>=6.9.0' resolution: integrity: sha512-YTA/Twn0vBXDVGJuAX6PwW7x5zQei1luDDo2Pl6q1qZ7hVNl0RZrhHCQG/ArGpR29Vl7ETiB8eJyrvpuRp300w== - /@babel/helper-compilation-targets/7.14.5_@babel+core@7.14.3: - dependencies: - '@babel/compat-data': 7.14.5 - '@babel/core': 7.14.3 - '@babel/helper-validator-option': 7.14.5 - browserslist: 4.16.6 - semver: 6.3.0 - dev: false - engines: - node: '>=6.9.0' - peerDependencies: - '@babel/core': ^7.0.0 - resolution: - integrity: sha512-v+QtZqXEiOnpO6EYvlImB6zCD2Lel06RzOPzmkz/D/XgQiUu3C/Jb1LOqSt/AIA34TYi/Q+KlT8vTQrgdxkbLw== /@babel/helper-compilation-targets/7.14.5_@babel+core@7.14.5: dependencies: '@babel/compat-data': 7.14.5 @@ -566,23 +530,7 @@ packages: '@babel/core': ^7.0.0 resolution: integrity: sha512-v+QtZqXEiOnpO6EYvlImB6zCD2Lel06RzOPzmkz/D/XgQiUu3C/Jb1LOqSt/AIA34TYi/Q+KlT8vTQrgdxkbLw== - /@babel/helper-create-class-features-plugin/7.14.5_@babel+core@7.14.3: - dependencies: - '@babel/core': 7.14.3 - '@babel/helper-annotate-as-pure': 7.14.5 - '@babel/helper-function-name': 7.14.5 - '@babel/helper-member-expression-to-functions': 7.14.5 - '@babel/helper-optimise-call-expression': 7.14.5 - '@babel/helper-replace-supers': 7.14.5 - '@babel/helper-split-export-declaration': 7.14.5 - dev: false - engines: - node: '>=6.9.0' - peerDependencies: - '@babel/core': ^7.0.0 - resolution: - integrity: sha512-Uq9z2e7ZtcnDMirRqAGLRaLwJn+Lrh388v5ETrR3pALJnElVh2zqQmdbz4W2RUJYohAPh2mtyPUgyMHMzXMncQ== - /@babel/helper-create-class-features-plugin/7.14.5_@babel+core@7.14.5: + /@babel/helper-create-class-features-plugin/7.14.6_@babel+core@7.14.5: dependencies: '@babel/core': 7.14.5 '@babel/helper-annotate-as-pure': 7.14.5 @@ -594,14 +542,13 @@ packages: dev: false engines: node: '>=6.9.0' - optional: true peerDependencies: '@babel/core': ^7.0.0 resolution: - integrity: sha512-Uq9z2e7ZtcnDMirRqAGLRaLwJn+Lrh388v5ETrR3pALJnElVh2zqQmdbz4W2RUJYohAPh2mtyPUgyMHMzXMncQ== - /@babel/helper-create-regexp-features-plugin/7.14.5_@babel+core@7.14.3: + integrity: sha512-Z6gsfGofTxH/+LQXqYEK45kxmcensbzmk/oi8DmaQytlQCgqNZt9XQF8iqlI/SeXWVjaMNxvYvzaYw+kh42mDg== + /@babel/helper-create-regexp-features-plugin/7.14.5_@babel+core@7.14.5: dependencies: - '@babel/core': 7.14.3 + '@babel/core': 7.14.5 '@babel/helper-annotate-as-pure': 7.14.5 regexpu-core: 4.7.1 dev: false @@ -611,10 +558,10 @@ packages: '@babel/core': ^7.0.0 resolution: integrity: sha512-TLawwqpOErY2HhWbGJ2nZT5wSkR192QpN+nBg1THfBfftrlvOh+WbhrxXCH4q4xJ9Gl16BGPR/48JA+Ryiho/A== - /@babel/helper-define-polyfill-provider/0.1.5_@babel+core@7.14.3: + /@babel/helper-define-polyfill-provider/0.1.5_@babel+core@7.14.5: dependencies: - '@babel/core': 7.14.3 - '@babel/helper-compilation-targets': 7.14.5_@babel+core@7.14.3 + '@babel/core': 7.14.5 + '@babel/helper-compilation-targets': 7.14.5_@babel+core@7.14.5 '@babel/helper-module-imports': 7.14.5 '@babel/helper-plugin-utils': 7.14.5 '@babel/traverse': 7.14.5 @@ -627,10 +574,10 @@ packages: '@babel/core': ^7.4.0-0 resolution: integrity: sha512-nXuzCSwlJ/WKr8qxzW816gwyT6VZgiJG17zR40fou70yfAcqjoNyTLl/DQ+FExw5Hx5KNqshmN8Ldl/r2N7cTg== - /@babel/helper-define-polyfill-provider/0.2.3_@babel+core@7.14.3: + /@babel/helper-define-polyfill-provider/0.2.3_@babel+core@7.14.5: dependencies: - '@babel/core': 7.14.3 - '@babel/helper-compilation-targets': 7.14.5_@babel+core@7.14.3 + '@babel/core': 7.14.5 + '@babel/helper-compilation-targets': 7.14.5_@babel+core@7.14.5 '@babel/helper-module-imports': 7.14.5 '@babel/helper-plugin-utils': 7.14.5 '@babel/traverse': 7.14.5 @@ -794,7 +741,7 @@ packages: node: '>=6.9.0' resolution: integrity: sha512-YEdjTCq+LNuNS1WfxsDCNpgXkJaIyqco6DAelTUjT4f2KIWC1nBcaCaSdHTBqQVLnTBexBcVcFhLSU1KnYuePQ== - /@babel/helpers/7.14.5: + /@babel/helpers/7.14.6: dependencies: '@babel/template': 7.14.5 '@babel/traverse': 7.14.5 @@ -803,7 +750,7 @@ packages: engines: node: '>=6.9.0' resolution: - integrity: sha512-xtcWOuN9VL6nApgVHtq3PPcQv5qFBJzoSZzJ/2c0QK/IP/gxVcoWSNQwFEGvmbQsuS9rhYqjILDGGXcTkA705Q== + integrity: sha512-yesp1ENQBiLI+iYHSJdoZKUtRpfTlL1grDIX9NRlAVppljLw/4tTyYupIB7uIYmC3stW/imAv8EqaKaS/ibmeA== /@babel/highlight/7.14.5: dependencies: '@babel/helper-validator-identifier': 7.14.5 @@ -822,19 +769,19 @@ packages: optional: true resolution: integrity: sha512-c/+u9cqV6F0+4Hpq01jnJO+GLp2DdT63ppz9Xa+6cHaajM9VFzK/iDXiKK65YtpeVwu+ctfS6iqlMqRgQRzeCw== - /@babel/parser/7.14.5: + /@babel/parser/7.14.6: dev: false engines: node: '>=6.0.0' hasBin: true resolution: - integrity: sha512-TM8C+xtH/9n1qzX+JNHi7AN2zHMTiPUtspO0ZdHflW8KaskkALhMmuMHb4bCmNdv9VAPzJX3/bXqkVLnAvsPfg== - /@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/7.14.5_@babel+core@7.14.3: + integrity: sha512-oG0ej7efjEXxb4UgE+klVx+3j4MVo+A2vCzm7OUN4CLo6WhQ+vSOD2yJ8m7B+DghObxtLxt3EfgMWpq+AsWehQ== + /@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/7.14.5_@babel+core@7.14.5: dependencies: - '@babel/core': 7.14.3 + '@babel/core': 7.14.5 '@babel/helper-plugin-utils': 7.14.5 '@babel/helper-skip-transparent-expression-wrappers': 7.14.5 - '@babel/plugin-proposal-optional-chaining': 7.14.5_@babel+core@7.14.3 + '@babel/plugin-proposal-optional-chaining': 7.14.5_@babel+core@7.14.5 dev: false engines: node: '>=6.9.0' @@ -842,12 +789,12 @@ packages: '@babel/core': ^7.13.0 resolution: integrity: sha512-ZoJS2XCKPBfTmL122iP6NM9dOg+d4lc9fFk3zxc8iDjvt8Pk4+TlsHSKhIPf6X+L5ORCdBzqMZDjL/WHj7WknQ== - /@babel/plugin-proposal-async-generator-functions/7.14.5_@babel+core@7.14.3: + /@babel/plugin-proposal-async-generator-functions/7.14.5_@babel+core@7.14.5: dependencies: - '@babel/core': 7.14.3 + '@babel/core': 7.14.5 '@babel/helper-plugin-utils': 7.14.5 '@babel/helper-remap-async-to-generator': 7.14.5 - '@babel/plugin-syntax-async-generators': 7.8.4_@babel+core@7.14.3 + '@babel/plugin-syntax-async-generators': 7.8.4_@babel+core@7.14.5 dev: false engines: node: '>=6.9.0' @@ -855,37 +802,24 @@ packages: '@babel/core': ^7.0.0-0 resolution: integrity: sha512-tbD/CG3l43FIXxmu4a7RBe4zH7MLJ+S/lFowPFO7HetS2hyOZ/0nnnznegDuzFzfkyQYTxqdTH/hKmuBngaDAA== - /@babel/plugin-proposal-class-properties/7.14.5_@babel+core@7.14.3: - dependencies: - '@babel/core': 7.14.3 - '@babel/helper-create-class-features-plugin': 7.14.5_@babel+core@7.14.3 - '@babel/helper-plugin-utils': 7.14.5 - dev: false - engines: - node: '>=6.9.0' - peerDependencies: - '@babel/core': ^7.0.0-0 - resolution: - integrity: sha512-q/PLpv5Ko4dVc1LYMpCY7RVAAO4uk55qPwrIuJ5QJ8c6cVuAmhu7I/49JOppXL6gXf7ZHzpRVEUZdYoPLM04Gg== /@babel/plugin-proposal-class-properties/7.14.5_@babel+core@7.14.5: dependencies: '@babel/core': 7.14.5 - '@babel/helper-create-class-features-plugin': 7.14.5_@babel+core@7.14.5 + '@babel/helper-create-class-features-plugin': 7.14.6_@babel+core@7.14.5 '@babel/helper-plugin-utils': 7.14.5 dev: false engines: node: '>=6.9.0' - optional: true peerDependencies: '@babel/core': ^7.0.0-0 resolution: integrity: sha512-q/PLpv5Ko4dVc1LYMpCY7RVAAO4uk55qPwrIuJ5QJ8c6cVuAmhu7I/49JOppXL6gXf7ZHzpRVEUZdYoPLM04Gg== - /@babel/plugin-proposal-class-static-block/7.14.5_@babel+core@7.14.3: + /@babel/plugin-proposal-class-static-block/7.14.5_@babel+core@7.14.5: dependencies: - '@babel/core': 7.14.3 - '@babel/helper-create-class-features-plugin': 7.14.5_@babel+core@7.14.3 + '@babel/core': 7.14.5 + '@babel/helper-create-class-features-plugin': 7.14.6_@babel+core@7.14.5 '@babel/helper-plugin-utils': 7.14.5 - '@babel/plugin-syntax-class-static-block': 7.14.5_@babel+core@7.14.3 + '@babel/plugin-syntax-class-static-block': 7.14.5_@babel+core@7.14.5 dev: false engines: node: '>=6.9.0' @@ -893,12 +827,12 @@ packages: '@babel/core': ^7.12.0 resolution: integrity: sha512-KBAH5ksEnYHCegqseI5N9skTdxgJdmDoAOc0uXa+4QMYKeZD0w5IARh4FMlTNtaHhbB8v+KzMdTgxMMzsIy6Yg== - /@babel/plugin-proposal-decorators/7.14.5_@babel+core@7.14.3: + /@babel/plugin-proposal-decorators/7.14.5_@babel+core@7.14.5: dependencies: - '@babel/core': 7.14.3 - '@babel/helper-create-class-features-plugin': 7.14.5_@babel+core@7.14.3 + '@babel/core': 7.14.5 + '@babel/helper-create-class-features-plugin': 7.14.6_@babel+core@7.14.5 '@babel/helper-plugin-utils': 7.14.5 - '@babel/plugin-syntax-decorators': 7.14.5_@babel+core@7.14.3 + '@babel/plugin-syntax-decorators': 7.14.5_@babel+core@7.14.5 dev: false engines: node: '>=6.9.0' @@ -906,11 +840,11 @@ packages: '@babel/core': ^7.0.0-0 resolution: integrity: sha512-LYz5nvQcvYeRVjui1Ykn28i+3aUiXwQ/3MGoEy0InTaz1pJo/lAzmIDXX+BQny/oufgHzJ6vnEEiXQ8KZjEVFg== - /@babel/plugin-proposal-dynamic-import/7.14.5_@babel+core@7.14.3: + /@babel/plugin-proposal-dynamic-import/7.14.5_@babel+core@7.14.5: dependencies: - '@babel/core': 7.14.3 + '@babel/core': 7.14.5 '@babel/helper-plugin-utils': 7.14.5 - '@babel/plugin-syntax-dynamic-import': 7.8.3_@babel+core@7.14.3 + '@babel/plugin-syntax-dynamic-import': 7.8.3_@babel+core@7.14.5 dev: false engines: node: '>=6.9.0' @@ -918,11 +852,11 @@ packages: '@babel/core': ^7.0.0-0 resolution: integrity: sha512-ExjiNYc3HDN5PXJx+bwC50GIx/KKanX2HiggnIUAYedbARdImiCU4RhhHfdf0Kd7JNXGpsBBBCOm+bBVy3Gb0g== - /@babel/plugin-proposal-export-default-from/7.14.5_@babel+core@7.14.3: + /@babel/plugin-proposal-export-default-from/7.14.5_@babel+core@7.14.5: dependencies: - '@babel/core': 7.14.3 + '@babel/core': 7.14.5 '@babel/helper-plugin-utils': 7.14.5 - '@babel/plugin-syntax-export-default-from': 7.14.5_@babel+core@7.14.3 + '@babel/plugin-syntax-export-default-from': 7.14.5_@babel+core@7.14.5 dev: false engines: node: '>=6.9.0' @@ -930,11 +864,11 @@ packages: '@babel/core': ^7.0.0-0 resolution: integrity: sha512-T8KZ5abXvKMjF6JcoXjgac3ElmXf0AWzJwi2O/42Jk+HmCky3D9+i1B7NPP1FblyceqTevKeV/9szeikFoaMDg== - /@babel/plugin-proposal-export-namespace-from/7.14.5_@babel+core@7.14.3: + /@babel/plugin-proposal-export-namespace-from/7.14.5_@babel+core@7.14.5: dependencies: - '@babel/core': 7.14.3 + '@babel/core': 7.14.5 '@babel/helper-plugin-utils': 7.14.5 - '@babel/plugin-syntax-export-namespace-from': 7.8.3_@babel+core@7.14.3 + '@babel/plugin-syntax-export-namespace-from': 7.8.3_@babel+core@7.14.5 dev: false engines: node: '>=6.9.0' @@ -942,11 +876,11 @@ packages: '@babel/core': ^7.0.0-0 resolution: integrity: sha512-g5POA32bXPMmSBu5Dx/iZGLGnKmKPc5AiY7qfZgurzrCYgIztDlHFbznSNCoQuv57YQLnQfaDi7dxCtLDIdXdA== - /@babel/plugin-proposal-json-strings/7.14.5_@babel+core@7.14.3: + /@babel/plugin-proposal-json-strings/7.14.5_@babel+core@7.14.5: dependencies: - '@babel/core': 7.14.3 + '@babel/core': 7.14.5 '@babel/helper-plugin-utils': 7.14.5 - '@babel/plugin-syntax-json-strings': 7.8.3_@babel+core@7.14.3 + '@babel/plugin-syntax-json-strings': 7.8.3_@babel+core@7.14.5 dev: false engines: node: '>=6.9.0' @@ -954,11 +888,11 @@ packages: '@babel/core': ^7.0.0-0 resolution: integrity: sha512-NSq2fczJYKVRIsUJyNxrVUMhB27zb7N7pOFGQOhBKJrChbGcgEAqyZrmZswkPk18VMurEeJAaICbfm57vUeTbQ== - /@babel/plugin-proposal-logical-assignment-operators/7.14.5_@babel+core@7.14.3: + /@babel/plugin-proposal-logical-assignment-operators/7.14.5_@babel+core@7.14.5: dependencies: - '@babel/core': 7.14.3 + '@babel/core': 7.14.5 '@babel/helper-plugin-utils': 7.14.5 - '@babel/plugin-syntax-logical-assignment-operators': 7.10.4_@babel+core@7.14.3 + '@babel/plugin-syntax-logical-assignment-operators': 7.10.4_@babel+core@7.14.5 dev: false engines: node: '>=6.9.0' @@ -966,11 +900,11 @@ packages: '@babel/core': ^7.0.0-0 resolution: integrity: sha512-YGn2AvZAo9TwyhlLvCCWxD90Xq8xJ4aSgaX3G5D/8DW94L8aaT+dS5cSP+Z06+rCJERGSr9GxMBZ601xoc2taw== - /@babel/plugin-proposal-nullish-coalescing-operator/7.14.5_@babel+core@7.14.3: + /@babel/plugin-proposal-nullish-coalescing-operator/7.14.5_@babel+core@7.14.5: dependencies: - '@babel/core': 7.14.3 + '@babel/core': 7.14.5 '@babel/helper-plugin-utils': 7.14.5 - '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3_@babel+core@7.14.3 + '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3_@babel+core@7.14.5 dev: false engines: node: '>=6.9.0' @@ -978,11 +912,11 @@ packages: '@babel/core': ^7.0.0-0 resolution: integrity: sha512-gun/SOnMqjSb98Nkaq2rTKMwervfdAoz6NphdY0vTfuzMfryj+tDGb2n6UkDKwez+Y8PZDhE3D143v6Gepp4Hg== - /@babel/plugin-proposal-numeric-separator/7.14.5_@babel+core@7.14.3: + /@babel/plugin-proposal-numeric-separator/7.14.5_@babel+core@7.14.5: dependencies: - '@babel/core': 7.14.3 + '@babel/core': 7.14.5 '@babel/helper-plugin-utils': 7.14.5 - '@babel/plugin-syntax-numeric-separator': 7.10.4_@babel+core@7.14.3 + '@babel/plugin-syntax-numeric-separator': 7.10.4_@babel+core@7.14.5 dev: false engines: node: '>=6.9.0' @@ -1001,21 +935,6 @@ packages: '@babel/core': ^7.0.0-0 resolution: integrity: sha512-s6SowJIjzlhx8o7lsFx5zmY4At6CTtDvgNQDdPzkBQucle58A6b/TTeEBYtyDgmcXjUTM+vE8YOGHZzzbc/ioA== - /@babel/plugin-proposal-object-rest-spread/7.14.5_@babel+core@7.14.3: - dependencies: - '@babel/compat-data': 7.14.5 - '@babel/core': 7.14.3 - '@babel/helper-compilation-targets': 7.14.5_@babel+core@7.14.3 - '@babel/helper-plugin-utils': 7.14.5 - '@babel/plugin-syntax-object-rest-spread': 7.8.3_@babel+core@7.14.3 - '@babel/plugin-transform-parameters': 7.14.5_@babel+core@7.14.3 - dev: false - engines: - node: '>=6.9.0' - peerDependencies: - '@babel/core': ^7.0.0-0 - resolution: - integrity: sha512-VzMyY6PWNPPT3pxc5hi9LloKNr4SSrVCg7Yr6aZpW4Ym07r7KqSU/QXYwjXLVxqwSv0t/XSXkFoKBPUkZ8vb2A== /@babel/plugin-proposal-object-rest-spread/7.14.5_@babel+core@7.14.5: dependencies: '@babel/compat-data': 7.14.5 @@ -1027,16 +946,15 @@ packages: dev: false engines: node: '>=6.9.0' - optional: true peerDependencies: '@babel/core': ^7.0.0-0 resolution: integrity: sha512-VzMyY6PWNPPT3pxc5hi9LloKNr4SSrVCg7Yr6aZpW4Ym07r7KqSU/QXYwjXLVxqwSv0t/XSXkFoKBPUkZ8vb2A== - /@babel/plugin-proposal-optional-catch-binding/7.14.5_@babel+core@7.14.3: + /@babel/plugin-proposal-optional-catch-binding/7.14.5_@babel+core@7.14.5: dependencies: - '@babel/core': 7.14.3 + '@babel/core': 7.14.5 '@babel/helper-plugin-utils': 7.14.5 - '@babel/plugin-syntax-optional-catch-binding': 7.8.3_@babel+core@7.14.3 + '@babel/plugin-syntax-optional-catch-binding': 7.8.3_@babel+core@7.14.5 dev: false engines: node: '>=6.9.0' @@ -1044,12 +962,12 @@ packages: '@babel/core': ^7.0.0-0 resolution: integrity: sha512-3Oyiixm0ur7bzO5ybNcZFlmVsygSIQgdOa7cTfOYCMY+wEPAYhZAJxi3mixKFCTCKUhQXuCTtQ1MzrpL3WT8ZQ== - /@babel/plugin-proposal-optional-chaining/7.14.5_@babel+core@7.14.3: + /@babel/plugin-proposal-optional-chaining/7.14.5_@babel+core@7.14.5: dependencies: - '@babel/core': 7.14.3 + '@babel/core': 7.14.5 '@babel/helper-plugin-utils': 7.14.5 '@babel/helper-skip-transparent-expression-wrappers': 7.14.5 - '@babel/plugin-syntax-optional-chaining': 7.8.3_@babel+core@7.14.3 + '@babel/plugin-syntax-optional-chaining': 7.8.3_@babel+core@7.14.5 dev: false engines: node: '>=6.9.0' @@ -1057,10 +975,10 @@ packages: '@babel/core': ^7.0.0-0 resolution: integrity: sha512-ycz+VOzo2UbWNI1rQXxIuMOzrDdHGrI23fRiz/Si2R4kv2XZQ1BK8ccdHwehMKBlcH/joGW/tzrUmo67gbJHlQ== - /@babel/plugin-proposal-private-methods/7.14.5_@babel+core@7.14.3: + /@babel/plugin-proposal-private-methods/7.14.5_@babel+core@7.14.5: dependencies: - '@babel/core': 7.14.3 - '@babel/helper-create-class-features-plugin': 7.14.5_@babel+core@7.14.3 + '@babel/core': 7.14.5 + '@babel/helper-create-class-features-plugin': 7.14.6_@babel+core@7.14.5 '@babel/helper-plugin-utils': 7.14.5 dev: false engines: @@ -1069,13 +987,13 @@ packages: '@babel/core': ^7.0.0-0 resolution: integrity: sha512-838DkdUA1u+QTCplatfq4B7+1lnDa/+QMI89x5WZHBcnNv+47N8QEj2k9I2MUU9xIv8XJ4XvPCviM/Dj7Uwt9g== - /@babel/plugin-proposal-private-property-in-object/7.14.5_@babel+core@7.14.3: + /@babel/plugin-proposal-private-property-in-object/7.14.5_@babel+core@7.14.5: dependencies: - '@babel/core': 7.14.3 + '@babel/core': 7.14.5 '@babel/helper-annotate-as-pure': 7.14.5 - '@babel/helper-create-class-features-plugin': 7.14.5_@babel+core@7.14.3 + '@babel/helper-create-class-features-plugin': 7.14.6_@babel+core@7.14.5 '@babel/helper-plugin-utils': 7.14.5 - '@babel/plugin-syntax-private-property-in-object': 7.14.5_@babel+core@7.14.3 + '@babel/plugin-syntax-private-property-in-object': 7.14.5_@babel+core@7.14.5 dev: false engines: node: '>=6.9.0' @@ -1083,10 +1001,10 @@ packages: '@babel/core': ^7.0.0-0 resolution: integrity: sha512-62EyfyA3WA0mZiF2e2IV9mc9Ghwxcg8YTu8BS4Wss4Y3PY725OmS9M0qLORbJwLqFtGh+jiE4wAmocK2CTUK2Q== - /@babel/plugin-proposal-unicode-property-regex/7.14.5_@babel+core@7.14.3: + /@babel/plugin-proposal-unicode-property-regex/7.14.5_@babel+core@7.14.5: dependencies: - '@babel/core': 7.14.3 - '@babel/helper-create-regexp-features-plugin': 7.14.5_@babel+core@7.14.3 + '@babel/core': 7.14.5 + '@babel/helper-create-regexp-features-plugin': 7.14.5_@babel+core@7.14.5 '@babel/helper-plugin-utils': 7.14.5 dev: false engines: @@ -1095,46 +1013,36 @@ packages: '@babel/core': ^7.0.0-0 resolution: integrity: sha512-6axIeOU5LnY471KenAB9vI8I5j7NQ2d652hIYwVyRfgaZT5UpiqFKCuVXCDMSrU+3VFafnu2c5m3lrWIlr6A5Q== - /@babel/plugin-syntax-async-generators/7.8.4_@babel+core@7.14.3: + /@babel/plugin-syntax-async-generators/7.8.4_@babel+core@7.14.5: dependencies: - '@babel/core': 7.14.3 + '@babel/core': 7.14.5 '@babel/helper-plugin-utils': 7.14.5 dev: false peerDependencies: '@babel/core': ^7.0.0-0 resolution: integrity: sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw== - /@babel/plugin-syntax-bigint/7.8.3_@babel+core@7.14.3: + /@babel/plugin-syntax-bigint/7.8.3_@babel+core@7.14.5: dependencies: - '@babel/core': 7.14.3 + '@babel/core': 7.14.5 '@babel/helper-plugin-utils': 7.14.5 dev: false peerDependencies: '@babel/core': ^7.0.0-0 resolution: integrity: sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg== - /@babel/plugin-syntax-class-properties/7.12.13_@babel+core@7.14.3: - dependencies: - '@babel/core': 7.14.3 - '@babel/helper-plugin-utils': 7.14.5 - dev: false - peerDependencies: - '@babel/core': ^7.0.0-0 - resolution: - integrity: sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA== /@babel/plugin-syntax-class-properties/7.12.13_@babel+core@7.14.5: dependencies: '@babel/core': 7.14.5 '@babel/helper-plugin-utils': 7.14.5 dev: false - optional: true peerDependencies: '@babel/core': ^7.0.0-0 resolution: integrity: sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA== - /@babel/plugin-syntax-class-static-block/7.14.5_@babel+core@7.14.3: + /@babel/plugin-syntax-class-static-block/7.14.5_@babel+core@7.14.5: dependencies: - '@babel/core': 7.14.3 + '@babel/core': 7.14.5 '@babel/helper-plugin-utils': 7.14.5 dev: false engines: @@ -1143,9 +1051,9 @@ packages: '@babel/core': ^7.0.0-0 resolution: integrity: sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw== - /@babel/plugin-syntax-decorators/7.14.5_@babel+core@7.14.3: + /@babel/plugin-syntax-decorators/7.14.5_@babel+core@7.14.5: dependencies: - '@babel/core': 7.14.3 + '@babel/core': 7.14.5 '@babel/helper-plugin-utils': 7.14.5 dev: false engines: @@ -1154,18 +1062,18 @@ packages: '@babel/core': ^7.0.0-0 resolution: integrity: sha512-c4sZMRWL4GSvP1EXy0woIP7m4jkVcEuG8R1TOZxPBPtp4FSM/kiPZub9UIs/Jrb5ZAOzvTUSGYrWsrSu1JvoPw== - /@babel/plugin-syntax-dynamic-import/7.8.3_@babel+core@7.14.3: + /@babel/plugin-syntax-dynamic-import/7.8.3_@babel+core@7.14.5: dependencies: - '@babel/core': 7.14.3 + '@babel/core': 7.14.5 '@babel/helper-plugin-utils': 7.14.5 dev: false peerDependencies: '@babel/core': ^7.0.0-0 resolution: integrity: sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ== - /@babel/plugin-syntax-export-default-from/7.14.5_@babel+core@7.14.3: + /@babel/plugin-syntax-export-default-from/7.14.5_@babel+core@7.14.5: dependencies: - '@babel/core': 7.14.3 + '@babel/core': 7.14.5 '@babel/helper-plugin-utils': 7.14.5 dev: false engines: @@ -1174,9 +1082,9 @@ packages: '@babel/core': ^7.0.0-0 resolution: integrity: sha512-snWDxjuaPEobRBnhpqEfZ8RMxDbHt8+87fiEioGuE+Uc0xAKgSD8QiuL3lF93hPVQfZFAcYwrrf+H5qUhike3Q== - /@babel/plugin-syntax-export-namespace-from/7.8.3_@babel+core@7.14.3: + /@babel/plugin-syntax-export-namespace-from/7.8.3_@babel+core@7.14.5: dependencies: - '@babel/core': 7.14.3 + '@babel/core': 7.14.5 '@babel/helper-plugin-utils': 7.14.5 dev: false peerDependencies: @@ -1194,18 +1102,18 @@ packages: '@babel/core': ^7.0.0-0 resolution: integrity: sha512-9WK5ZwKCdWHxVuU13XNT6X73FGmutAXeor5lGFq6qhOFtMFUF4jkbijuyUdZZlpYq6E2hZeZf/u3959X9wsv0Q== - /@babel/plugin-syntax-import-meta/7.10.4_@babel+core@7.14.3: + /@babel/plugin-syntax-import-meta/7.10.4_@babel+core@7.14.5: dependencies: - '@babel/core': 7.14.3 + '@babel/core': 7.14.5 '@babel/helper-plugin-utils': 7.14.5 dev: false peerDependencies: '@babel/core': ^7.0.0-0 resolution: integrity: sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g== - /@babel/plugin-syntax-json-strings/7.8.3_@babel+core@7.14.3: + /@babel/plugin-syntax-json-strings/7.8.3_@babel+core@7.14.5: dependencies: - '@babel/core': 7.14.3 + '@babel/core': 7.14.5 '@babel/helper-plugin-utils': 7.14.5 dev: false peerDependencies: @@ -1221,17 +1129,6 @@ packages: '@babel/core': ^7.0.0-0 resolution: integrity: sha512-1yRi7yAtB0ETgxdY9ti/p2TivUxJkTdhu/ZbF9MshVGqOx1TdB3b7xCXs49Fupgg50N45KcAsRP/ZqWjs9SRjg== - /@babel/plugin-syntax-jsx/7.14.5_@babel+core@7.14.3: - dependencies: - '@babel/core': 7.14.3 - '@babel/helper-plugin-utils': 7.14.5 - dev: false - engines: - node: '>=6.9.0' - peerDependencies: - '@babel/core': ^7.0.0-0 - resolution: - integrity: sha512-ohuFIsOMXJnbOMRfX7/w7LocdR6R7whhuRD4ax8IipLcLPlZGJKkBxgHp++U4N/vKyU16/YDQr2f5seajD3jIw== /@babel/plugin-syntax-jsx/7.14.5_@babel+core@7.14.5: dependencies: '@babel/core': 7.14.5 @@ -1243,27 +1140,27 @@ packages: '@babel/core': ^7.0.0-0 resolution: integrity: sha512-ohuFIsOMXJnbOMRfX7/w7LocdR6R7whhuRD4ax8IipLcLPlZGJKkBxgHp++U4N/vKyU16/YDQr2f5seajD3jIw== - /@babel/plugin-syntax-logical-assignment-operators/7.10.4_@babel+core@7.14.3: + /@babel/plugin-syntax-logical-assignment-operators/7.10.4_@babel+core@7.14.5: dependencies: - '@babel/core': 7.14.3 + '@babel/core': 7.14.5 '@babel/helper-plugin-utils': 7.14.5 dev: false peerDependencies: '@babel/core': ^7.0.0-0 resolution: integrity: sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig== - /@babel/plugin-syntax-nullish-coalescing-operator/7.8.3_@babel+core@7.14.3: + /@babel/plugin-syntax-nullish-coalescing-operator/7.8.3_@babel+core@7.14.5: dependencies: - '@babel/core': 7.14.3 + '@babel/core': 7.14.5 '@babel/helper-plugin-utils': 7.14.5 dev: false peerDependencies: '@babel/core': ^7.0.0-0 resolution: integrity: sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ== - /@babel/plugin-syntax-numeric-separator/7.10.4_@babel+core@7.14.3: + /@babel/plugin-syntax-numeric-separator/7.10.4_@babel+core@7.14.5: dependencies: - '@babel/core': 7.14.3 + '@babel/core': 7.14.5 '@babel/helper-plugin-utils': 7.14.5 dev: false peerDependencies: @@ -1279,46 +1176,36 @@ packages: '@babel/core': ^7.0.0-0 resolution: integrity: sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA== - /@babel/plugin-syntax-object-rest-spread/7.8.3_@babel+core@7.14.3: - dependencies: - '@babel/core': 7.14.3 - '@babel/helper-plugin-utils': 7.14.5 - dev: false - peerDependencies: - '@babel/core': ^7.0.0-0 - resolution: - integrity: sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA== /@babel/plugin-syntax-object-rest-spread/7.8.3_@babel+core@7.14.5: dependencies: '@babel/core': 7.14.5 '@babel/helper-plugin-utils': 7.14.5 dev: false - optional: true peerDependencies: '@babel/core': ^7.0.0-0 resolution: integrity: sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA== - /@babel/plugin-syntax-optional-catch-binding/7.8.3_@babel+core@7.14.3: + /@babel/plugin-syntax-optional-catch-binding/7.8.3_@babel+core@7.14.5: dependencies: - '@babel/core': 7.14.3 + '@babel/core': 7.14.5 '@babel/helper-plugin-utils': 7.14.5 dev: false peerDependencies: '@babel/core': ^7.0.0-0 resolution: integrity: sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q== - /@babel/plugin-syntax-optional-chaining/7.8.3_@babel+core@7.14.3: + /@babel/plugin-syntax-optional-chaining/7.8.3_@babel+core@7.14.5: dependencies: - '@babel/core': 7.14.3 + '@babel/core': 7.14.5 '@babel/helper-plugin-utils': 7.14.5 dev: false peerDependencies: '@babel/core': ^7.0.0-0 resolution: integrity: sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg== - /@babel/plugin-syntax-private-property-in-object/7.14.5_@babel+core@7.14.3: + /@babel/plugin-syntax-private-property-in-object/7.14.5_@babel+core@7.14.5: dependencies: - '@babel/core': 7.14.3 + '@babel/core': 7.14.5 '@babel/helper-plugin-utils': 7.14.5 dev: false engines: @@ -1327,9 +1214,9 @@ packages: '@babel/core': ^7.0.0-0 resolution: integrity: sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg== - /@babel/plugin-syntax-top-level-await/7.14.5_@babel+core@7.14.3: + /@babel/plugin-syntax-top-level-await/7.14.5_@babel+core@7.14.5: dependencies: - '@babel/core': 7.14.3 + '@babel/core': 7.14.5 '@babel/helper-plugin-utils': 7.14.5 dev: false engines: @@ -1338,9 +1225,9 @@ packages: '@babel/core': ^7.0.0-0 resolution: integrity: sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw== - /@babel/plugin-syntax-typescript/7.14.5_@babel+core@7.14.3: + /@babel/plugin-syntax-typescript/7.14.5_@babel+core@7.14.5: dependencies: - '@babel/core': 7.14.3 + '@babel/core': 7.14.5 '@babel/helper-plugin-utils': 7.14.5 dev: false engines: @@ -1349,17 +1236,6 @@ packages: '@babel/core': ^7.0.0-0 resolution: integrity: sha512-u6OXzDaIXjEstBRRoBCQ/uKQKlbuaeE5in0RvWdA4pN6AhqxTIwUsnHPU1CFZA/amYObMsuWhYfRl3Ch90HD0Q== - /@babel/plugin-transform-arrow-functions/7.14.5_@babel+core@7.14.3: - dependencies: - '@babel/core': 7.14.3 - '@babel/helper-plugin-utils': 7.14.5 - dev: false - engines: - node: '>=6.9.0' - peerDependencies: - '@babel/core': ^7.0.0-0 - resolution: - integrity: sha512-KOnO0l4+tD5IfOdi4x8C1XmEIRWUjNRV8wc6K2vz/3e8yAOoZZvsRXRRIF/yo/MAOFb4QjtAw9xSxMXbSMRy8A== /@babel/plugin-transform-arrow-functions/7.14.5_@babel+core@7.14.5: dependencies: '@babel/core': 7.14.5 @@ -1367,14 +1243,13 @@ packages: dev: false engines: node: '>=6.9.0' - optional: true peerDependencies: '@babel/core': ^7.0.0-0 resolution: integrity: sha512-KOnO0l4+tD5IfOdi4x8C1XmEIRWUjNRV8wc6K2vz/3e8yAOoZZvsRXRRIF/yo/MAOFb4QjtAw9xSxMXbSMRy8A== - /@babel/plugin-transform-async-to-generator/7.14.5_@babel+core@7.14.3: + /@babel/plugin-transform-async-to-generator/7.14.5_@babel+core@7.14.5: dependencies: - '@babel/core': 7.14.3 + '@babel/core': 7.14.5 '@babel/helper-module-imports': 7.14.5 '@babel/helper-plugin-utils': 7.14.5 '@babel/helper-remap-async-to-generator': 7.14.5 @@ -1385,17 +1260,6 @@ packages: '@babel/core': ^7.0.0-0 resolution: integrity: sha512-szkbzQ0mNk0rpu76fzDdqSyPu0MuvpXgC+6rz5rpMb5OIRxdmHfQxrktL8CYolL2d8luMCZTR0DpIMIdL27IjA== - /@babel/plugin-transform-block-scoped-functions/7.14.5_@babel+core@7.14.3: - dependencies: - '@babel/core': 7.14.3 - '@babel/helper-plugin-utils': 7.14.5 - dev: false - engines: - node: '>=6.9.0' - peerDependencies: - '@babel/core': ^7.0.0-0 - resolution: - integrity: sha512-dtqWqdWZ5NqBX3KzsVCWfQI3A53Ft5pWFCT2eCVUftWZgjc5DpDponbIF1+c+7cSGk2wN0YK7HGL/ezfRbpKBQ== /@babel/plugin-transform-block-scoped-functions/7.14.5_@babel+core@7.14.5: dependencies: '@babel/core': 7.14.5 @@ -1403,22 +1267,10 @@ packages: dev: false engines: node: '>=6.9.0' - optional: true peerDependencies: '@babel/core': ^7.0.0-0 resolution: integrity: sha512-dtqWqdWZ5NqBX3KzsVCWfQI3A53Ft5pWFCT2eCVUftWZgjc5DpDponbIF1+c+7cSGk2wN0YK7HGL/ezfRbpKBQ== - /@babel/plugin-transform-block-scoping/7.14.5_@babel+core@7.14.3: - dependencies: - '@babel/core': 7.14.3 - '@babel/helper-plugin-utils': 7.14.5 - dev: false - engines: - node: '>=6.9.0' - peerDependencies: - '@babel/core': ^7.0.0-0 - resolution: - integrity: sha512-LBYm4ZocNgoCqyxMLoOnwpsmQ18HWTQvql64t3GvMUzLQrNoV1BDG0lNftC8QKYERkZgCCT/7J5xWGObGAyHDw== /@babel/plugin-transform-block-scoping/7.14.5_@babel+core@7.14.5: dependencies: '@babel/core': 7.14.5 @@ -1426,28 +1278,10 @@ packages: dev: false engines: node: '>=6.9.0' - optional: true peerDependencies: '@babel/core': ^7.0.0-0 resolution: integrity: sha512-LBYm4ZocNgoCqyxMLoOnwpsmQ18HWTQvql64t3GvMUzLQrNoV1BDG0lNftC8QKYERkZgCCT/7J5xWGObGAyHDw== - /@babel/plugin-transform-classes/7.14.5_@babel+core@7.14.3: - dependencies: - '@babel/core': 7.14.3 - '@babel/helper-annotate-as-pure': 7.14.5 - '@babel/helper-function-name': 7.14.5 - '@babel/helper-optimise-call-expression': 7.14.5 - '@babel/helper-plugin-utils': 7.14.5 - '@babel/helper-replace-supers': 7.14.5 - '@babel/helper-split-export-declaration': 7.14.5 - globals: 11.12.0 - dev: false - engines: - node: '>=6.9.0' - peerDependencies: - '@babel/core': ^7.0.0-0 - resolution: - integrity: sha512-J4VxKAMykM06K/64z9rwiL6xnBHgB1+FVspqvlgCdwD1KUbQNfszeKVVOMh59w3sztHYIZDgnhOC4WbdEfHFDA== /@babel/plugin-transform-classes/7.14.5_@babel+core@7.14.5: dependencies: '@babel/core': 7.14.5 @@ -1461,22 +1295,10 @@ packages: dev: false engines: node: '>=6.9.0' - optional: true peerDependencies: '@babel/core': ^7.0.0-0 resolution: integrity: sha512-J4VxKAMykM06K/64z9rwiL6xnBHgB1+FVspqvlgCdwD1KUbQNfszeKVVOMh59w3sztHYIZDgnhOC4WbdEfHFDA== - /@babel/plugin-transform-computed-properties/7.14.5_@babel+core@7.14.3: - dependencies: - '@babel/core': 7.14.3 - '@babel/helper-plugin-utils': 7.14.5 - dev: false - engines: - node: '>=6.9.0' - peerDependencies: - '@babel/core': ^7.0.0-0 - resolution: - integrity: sha512-pWM+E4283UxaVzLb8UBXv4EIxMovU4zxT1OPnpHJcmnvyY9QbPPTKZfEj31EUvG3/EQRbYAGaYEUZ4yWOBC2xg== /@babel/plugin-transform-computed-properties/7.14.5_@babel+core@7.14.5: dependencies: '@babel/core': 7.14.5 @@ -1484,22 +1306,10 @@ packages: dev: false engines: node: '>=6.9.0' - optional: true peerDependencies: '@babel/core': ^7.0.0-0 resolution: integrity: sha512-pWM+E4283UxaVzLb8UBXv4EIxMovU4zxT1OPnpHJcmnvyY9QbPPTKZfEj31EUvG3/EQRbYAGaYEUZ4yWOBC2xg== - /@babel/plugin-transform-destructuring/7.14.5_@babel+core@7.14.3: - dependencies: - '@babel/core': 7.14.3 - '@babel/helper-plugin-utils': 7.14.5 - dev: false - engines: - node: '>=6.9.0' - peerDependencies: - '@babel/core': ^7.0.0-0 - resolution: - integrity: sha512-wU9tYisEbRMxqDezKUqC9GleLycCRoUsai9ddlsq54r8QRLaeEhc+d+9DqCG+kV9W2GgQjTZESPTpn5bAFMDww== /@babel/plugin-transform-destructuring/7.14.5_@babel+core@7.14.5: dependencies: '@babel/core': 7.14.5 @@ -1507,15 +1317,14 @@ packages: dev: false engines: node: '>=6.9.0' - optional: true peerDependencies: '@babel/core': ^7.0.0-0 resolution: integrity: sha512-wU9tYisEbRMxqDezKUqC9GleLycCRoUsai9ddlsq54r8QRLaeEhc+d+9DqCG+kV9W2GgQjTZESPTpn5bAFMDww== - /@babel/plugin-transform-dotall-regex/7.14.5_@babel+core@7.14.3: + /@babel/plugin-transform-dotall-regex/7.14.5_@babel+core@7.14.5: dependencies: - '@babel/core': 7.14.3 - '@babel/helper-create-regexp-features-plugin': 7.14.5_@babel+core@7.14.3 + '@babel/core': 7.14.5 + '@babel/helper-create-regexp-features-plugin': 7.14.5_@babel+core@7.14.5 '@babel/helper-plugin-utils': 7.14.5 dev: false engines: @@ -1524,9 +1333,9 @@ packages: '@babel/core': ^7.0.0-0 resolution: integrity: sha512-loGlnBdj02MDsFaHhAIJzh7euK89lBrGIdM9EAtHFo6xKygCUGuuWe07o1oZVk287amtW1n0808sQM99aZt3gw== - /@babel/plugin-transform-duplicate-keys/7.14.5_@babel+core@7.14.3: + /@babel/plugin-transform-duplicate-keys/7.14.5_@babel+core@7.14.5: dependencies: - '@babel/core': 7.14.3 + '@babel/core': 7.14.5 '@babel/helper-plugin-utils': 7.14.5 dev: false engines: @@ -1535,9 +1344,9 @@ packages: '@babel/core': ^7.0.0-0 resolution: integrity: sha512-iJjbI53huKbPDAsJ8EmVmvCKeeq21bAze4fu9GBQtSLqfvzj2oRuHVx4ZkDwEhg1htQ+5OBZh/Ab0XDf5iBZ7A== - /@babel/plugin-transform-exponentiation-operator/7.14.5_@babel+core@7.14.3: + /@babel/plugin-transform-exponentiation-operator/7.14.5_@babel+core@7.14.5: dependencies: - '@babel/core': 7.14.3 + '@babel/core': 7.14.5 '@babel/helper-builder-binary-assignment-operator-visitor': 7.14.5 '@babel/helper-plugin-utils': 7.14.5 dev: false @@ -1559,17 +1368,6 @@ packages: '@babel/core': ^7.0.0-0 resolution: integrity: sha512-KhcolBKfXbvjwI3TV7r7TkYm8oNXHNBqGOy6JDVwtecFaRoKYsUUqJdS10q0YDKW1c6aZQgO+Ys3LfGkox8pXA== - /@babel/plugin-transform-for-of/7.14.5_@babel+core@7.14.3: - dependencies: - '@babel/core': 7.14.3 - '@babel/helper-plugin-utils': 7.14.5 - dev: false - engines: - node: '>=6.9.0' - peerDependencies: - '@babel/core': ^7.0.0-0 - resolution: - integrity: sha512-CfmqxSUZzBl0rSjpoQSFoR9UEj3HzbGuGNL21/iFTmjb5gFggJp3ph0xR1YBhexmLoKRHzgxuFvty2xdSt6gTA== /@babel/plugin-transform-for-of/7.14.5_@babel+core@7.14.5: dependencies: '@babel/core': 7.14.5 @@ -1577,23 +1375,10 @@ packages: dev: false engines: node: '>=6.9.0' - optional: true peerDependencies: '@babel/core': ^7.0.0-0 resolution: integrity: sha512-CfmqxSUZzBl0rSjpoQSFoR9UEj3HzbGuGNL21/iFTmjb5gFggJp3ph0xR1YBhexmLoKRHzgxuFvty2xdSt6gTA== - /@babel/plugin-transform-function-name/7.14.5_@babel+core@7.14.3: - dependencies: - '@babel/core': 7.14.3 - '@babel/helper-function-name': 7.14.5 - '@babel/helper-plugin-utils': 7.14.5 - dev: false - engines: - node: '>=6.9.0' - peerDependencies: - '@babel/core': ^7.0.0-0 - resolution: - integrity: sha512-vbO6kv0fIzZ1GpmGQuvbwwm+O4Cbm2NrPzwlup9+/3fdkuzo1YqOZcXw26+YUJB84Ja7j9yURWposEHLYwxUfQ== /@babel/plugin-transform-function-name/7.14.5_@babel+core@7.14.5: dependencies: '@babel/core': 7.14.5 @@ -1602,22 +1387,10 @@ packages: dev: false engines: node: '>=6.9.0' - optional: true peerDependencies: '@babel/core': ^7.0.0-0 resolution: integrity: sha512-vbO6kv0fIzZ1GpmGQuvbwwm+O4Cbm2NrPzwlup9+/3fdkuzo1YqOZcXw26+YUJB84Ja7j9yURWposEHLYwxUfQ== - /@babel/plugin-transform-literals/7.14.5_@babel+core@7.14.3: - dependencies: - '@babel/core': 7.14.3 - '@babel/helper-plugin-utils': 7.14.5 - dev: false - engines: - node: '>=6.9.0' - peerDependencies: - '@babel/core': ^7.0.0-0 - resolution: - integrity: sha512-ql33+epql2F49bi8aHXxvLURHkxJbSmMKl9J5yHqg4PLtdE6Uc48CH1GS6TQvZ86eoB/ApZXwm7jlA+B3kra7A== /@babel/plugin-transform-literals/7.14.5_@babel+core@7.14.5: dependencies: '@babel/core': 7.14.5 @@ -1625,22 +1398,10 @@ packages: dev: false engines: node: '>=6.9.0' - optional: true peerDependencies: '@babel/core': ^7.0.0-0 resolution: integrity: sha512-ql33+epql2F49bi8aHXxvLURHkxJbSmMKl9J5yHqg4PLtdE6Uc48CH1GS6TQvZ86eoB/ApZXwm7jlA+B3kra7A== - /@babel/plugin-transform-member-expression-literals/7.14.5_@babel+core@7.14.3: - dependencies: - '@babel/core': 7.14.3 - '@babel/helper-plugin-utils': 7.14.5 - dev: false - engines: - node: '>=6.9.0' - peerDependencies: - '@babel/core': ^7.0.0-0 - resolution: - integrity: sha512-WkNXxH1VXVTKarWFqmso83xl+2V3Eo28YY5utIkbsmXoItO8Q3aZxN4BTS2k0hz9dGUloHK26mJMyQEYfkn/+Q== /@babel/plugin-transform-member-expression-literals/7.14.5_@babel+core@7.14.5: dependencies: '@babel/core': 7.14.5 @@ -1648,14 +1409,13 @@ packages: dev: false engines: node: '>=6.9.0' - optional: true peerDependencies: '@babel/core': ^7.0.0-0 resolution: integrity: sha512-WkNXxH1VXVTKarWFqmso83xl+2V3Eo28YY5utIkbsmXoItO8Q3aZxN4BTS2k0hz9dGUloHK26mJMyQEYfkn/+Q== - /@babel/plugin-transform-modules-amd/7.14.5_@babel+core@7.14.3: + /@babel/plugin-transform-modules-amd/7.14.5_@babel+core@7.14.5: dependencies: - '@babel/core': 7.14.3 + '@babel/core': 7.14.5 '@babel/helper-module-transforms': 7.14.5 '@babel/helper-plugin-utils': 7.14.5 babel-plugin-dynamic-import-node: 2.3.3 @@ -1666,20 +1426,6 @@ packages: '@babel/core': ^7.0.0-0 resolution: integrity: sha512-3lpOU8Vxmp3roC4vzFpSdEpGUWSMsHFreTWOMMLzel2gNGfHE5UWIh/LN6ghHs2xurUp4jRFYMUIZhuFbody1g== - /@babel/plugin-transform-modules-commonjs/7.14.5_@babel+core@7.14.3: - dependencies: - '@babel/core': 7.14.3 - '@babel/helper-module-transforms': 7.14.5 - '@babel/helper-plugin-utils': 7.14.5 - '@babel/helper-simple-access': 7.14.5 - babel-plugin-dynamic-import-node: 2.3.3 - dev: false - engines: - node: '>=6.9.0' - peerDependencies: - '@babel/core': ^7.0.0-0 - resolution: - integrity: sha512-en8GfBtgnydoao2PS+87mKyw62k02k7kJ9ltbKe0fXTHrQmG6QZZflYuGI1VVG7sVpx4E1n7KBpNlPb8m78J+A== /@babel/plugin-transform-modules-commonjs/7.14.5_@babel+core@7.14.5: dependencies: '@babel/core': 7.14.5 @@ -1690,14 +1436,13 @@ packages: dev: false engines: node: '>=6.9.0' - optional: true peerDependencies: '@babel/core': ^7.0.0-0 resolution: integrity: sha512-en8GfBtgnydoao2PS+87mKyw62k02k7kJ9ltbKe0fXTHrQmG6QZZflYuGI1VVG7sVpx4E1n7KBpNlPb8m78J+A== - /@babel/plugin-transform-modules-systemjs/7.14.5_@babel+core@7.14.3: + /@babel/plugin-transform-modules-systemjs/7.14.5_@babel+core@7.14.5: dependencies: - '@babel/core': 7.14.3 + '@babel/core': 7.14.5 '@babel/helper-hoist-variables': 7.14.5 '@babel/helper-module-transforms': 7.14.5 '@babel/helper-plugin-utils': 7.14.5 @@ -1710,9 +1455,9 @@ packages: '@babel/core': ^7.0.0-0 resolution: integrity: sha512-mNMQdvBEE5DcMQaL5LbzXFMANrQjd2W7FPzg34Y4yEz7dBgdaC+9B84dSO+/1Wba98zoDbInctCDo4JGxz1VYA== - /@babel/plugin-transform-modules-umd/7.14.5_@babel+core@7.14.3: + /@babel/plugin-transform-modules-umd/7.14.5_@babel+core@7.14.5: dependencies: - '@babel/core': 7.14.3 + '@babel/core': 7.14.5 '@babel/helper-module-transforms': 7.14.5 '@babel/helper-plugin-utils': 7.14.5 dev: false @@ -1722,10 +1467,10 @@ packages: '@babel/core': ^7.0.0-0 resolution: integrity: sha512-RfPGoagSngC06LsGUYyM9QWSXZ8MysEjDJTAea1lqRjNECE3y0qIJF/qbvJxc4oA4s99HumIMdXOrd+TdKaAAA== - /@babel/plugin-transform-named-capturing-groups-regex/7.14.5_@babel+core@7.14.3: + /@babel/plugin-transform-named-capturing-groups-regex/7.14.5_@babel+core@7.14.5: dependencies: - '@babel/core': 7.14.3 - '@babel/helper-create-regexp-features-plugin': 7.14.5_@babel+core@7.14.3 + '@babel/core': 7.14.5 + '@babel/helper-create-regexp-features-plugin': 7.14.5_@babel+core@7.14.5 dev: false engines: node: '>=6.9.0' @@ -1733,9 +1478,9 @@ packages: '@babel/core': ^7.0.0 resolution: integrity: sha512-+Xe5+6MWFo311U8SchgeX5c1+lJM+eZDBZgD+tvXu9VVQPXwwVzeManMMjYX6xw2HczngfOSZjoFYKwdeB/Jvw== - /@babel/plugin-transform-new-target/7.14.5_@babel+core@7.14.3: + /@babel/plugin-transform-new-target/7.14.5_@babel+core@7.14.5: dependencies: - '@babel/core': 7.14.3 + '@babel/core': 7.14.5 '@babel/helper-plugin-utils': 7.14.5 dev: false engines: @@ -1744,18 +1489,6 @@ packages: '@babel/core': ^7.0.0-0 resolution: integrity: sha512-Nx054zovz6IIRWEB49RDRuXGI4Gy0GMgqG0cII9L3MxqgXz/+rgII+RU58qpo4g7tNEx1jG7rRVH4ihZoP4esQ== - /@babel/plugin-transform-object-super/7.14.5_@babel+core@7.14.3: - dependencies: - '@babel/core': 7.14.3 - '@babel/helper-plugin-utils': 7.14.5 - '@babel/helper-replace-supers': 7.14.5 - dev: false - engines: - node: '>=6.9.0' - peerDependencies: - '@babel/core': ^7.0.0-0 - resolution: - integrity: sha512-MKfOBWzK0pZIrav9z/hkRqIk/2bTv9qvxHzPQc12RcVkMOzpIKnFCNYJip00ssKWYkd8Sf5g0Wr7pqJ+cmtuFg== /@babel/plugin-transform-object-super/7.14.5_@babel+core@7.14.5: dependencies: '@babel/core': 7.14.5 @@ -1764,7 +1497,6 @@ packages: dev: false engines: node: '>=6.9.0' - optional: true peerDependencies: '@babel/core': ^7.0.0-0 resolution: @@ -1780,17 +1512,6 @@ packages: '@babel/core': ^7.0.0-0 resolution: integrity: sha512-Tl7LWdr6HUxTmzQtzuU14SqbgrSKmaR77M0OKyq4njZLQTPfOvzblNKyNkGwOfEFCEx7KeYHQHDI0P3F02IVkA== - /@babel/plugin-transform-parameters/7.14.5_@babel+core@7.14.3: - dependencies: - '@babel/core': 7.14.3 - '@babel/helper-plugin-utils': 7.14.5 - dev: false - engines: - node: '>=6.9.0' - peerDependencies: - '@babel/core': ^7.0.0-0 - resolution: - integrity: sha512-Tl7LWdr6HUxTmzQtzuU14SqbgrSKmaR77M0OKyq4njZLQTPfOvzblNKyNkGwOfEFCEx7KeYHQHDI0P3F02IVkA== /@babel/plugin-transform-parameters/7.14.5_@babel+core@7.14.5: dependencies: '@babel/core': 7.14.5 @@ -1798,22 +1519,10 @@ packages: dev: false engines: node: '>=6.9.0' - optional: true peerDependencies: '@babel/core': ^7.0.0-0 resolution: integrity: sha512-Tl7LWdr6HUxTmzQtzuU14SqbgrSKmaR77M0OKyq4njZLQTPfOvzblNKyNkGwOfEFCEx7KeYHQHDI0P3F02IVkA== - /@babel/plugin-transform-property-literals/7.14.5_@babel+core@7.14.3: - dependencies: - '@babel/core': 7.14.3 - '@babel/helper-plugin-utils': 7.14.5 - dev: false - engines: - node: '>=6.9.0' - peerDependencies: - '@babel/core': ^7.0.0-0 - resolution: - integrity: sha512-r1uilDthkgXW8Z1vJz2dKYLV1tuw2xsbrp3MrZmD99Wh9vsfKoob+JTgri5VUb/JqyKRXotlOtwgu4stIYCmnw== /@babel/plugin-transform-property-literals/7.14.5_@babel+core@7.14.5: dependencies: '@babel/core': 7.14.5 @@ -1821,14 +1530,13 @@ packages: dev: false engines: node: '>=6.9.0' - optional: true peerDependencies: '@babel/core': ^7.0.0-0 resolution: integrity: sha512-r1uilDthkgXW8Z1vJz2dKYLV1tuw2xsbrp3MrZmD99Wh9vsfKoob+JTgri5VUb/JqyKRXotlOtwgu4stIYCmnw== - /@babel/plugin-transform-react-constant-elements/7.14.5_@babel+core@7.14.3: + /@babel/plugin-transform-react-constant-elements/7.14.5_@babel+core@7.14.5: dependencies: - '@babel/core': 7.14.3 + '@babel/core': 7.14.5 '@babel/helper-plugin-utils': 7.14.5 dev: false engines: @@ -1837,17 +1545,6 @@ packages: '@babel/core': ^7.0.0-0 resolution: integrity: sha512-NBqLEx1GxllIOXJInJAQbrnwwYJsV3WaMHIcOwD8rhYS0AabTWn7kHdHgPgu5RmHLU0q4DMxhAMu8ue/KampgQ== - /@babel/plugin-transform-react-display-name/7.14.5_@babel+core@7.14.3: - dependencies: - '@babel/core': 7.14.3 - '@babel/helper-plugin-utils': 7.14.5 - dev: false - engines: - node: '>=6.9.0' - peerDependencies: - '@babel/core': ^7.0.0-0 - resolution: - integrity: sha512-07aqY1ChoPgIxsuDviptRpVkWCSbXWmzQqcgy65C6YSFOfPFvb/DX3bBRHh7pCd/PMEEYHYWUTSVkCbkVainYQ== /@babel/plugin-transform-react-display-name/7.14.5_@babel+core@7.14.5: dependencies: '@babel/core': 7.14.5 @@ -1859,17 +1556,6 @@ packages: '@babel/core': ^7.0.0-0 resolution: integrity: sha512-07aqY1ChoPgIxsuDviptRpVkWCSbXWmzQqcgy65C6YSFOfPFvb/DX3bBRHh7pCd/PMEEYHYWUTSVkCbkVainYQ== - /@babel/plugin-transform-react-jsx-development/7.14.5_@babel+core@7.14.3: - dependencies: - '@babel/core': 7.14.3 - '@babel/plugin-transform-react-jsx': 7.14.5_@babel+core@7.14.3 - dev: false - engines: - node: '>=6.9.0' - peerDependencies: - '@babel/core': ^7.0.0-0 - resolution: - integrity: sha512-rdwG/9jC6QybWxVe2UVOa7q6cnTpw8JRRHOxntG/h6g/guAOe6AhtQHJuJh5FwmnXIT1bdm5vC2/5huV8ZOorQ== /@babel/plugin-transform-react-jsx-development/7.14.5_@babel+core@7.14.5: dependencies: '@babel/core': 7.14.5 @@ -1881,21 +1567,6 @@ packages: '@babel/core': ^7.0.0-0 resolution: integrity: sha512-rdwG/9jC6QybWxVe2UVOa7q6cnTpw8JRRHOxntG/h6g/guAOe6AhtQHJuJh5FwmnXIT1bdm5vC2/5huV8ZOorQ== - /@babel/plugin-transform-react-jsx/7.14.5_@babel+core@7.14.3: - dependencies: - '@babel/core': 7.14.3 - '@babel/helper-annotate-as-pure': 7.14.5 - '@babel/helper-module-imports': 7.14.5 - '@babel/helper-plugin-utils': 7.14.5 - '@babel/plugin-syntax-jsx': 7.14.5_@babel+core@7.14.3 - '@babel/types': 7.14.5 - dev: false - engines: - node: '>=6.9.0' - peerDependencies: - '@babel/core': ^7.0.0-0 - resolution: - integrity: sha512-7RylxNeDnxc1OleDm0F5Q/BSL+whYRbOAR+bwgCxIr0L32v7UFh/pz1DLMZideAUxKT6eMoS2zQH6fyODLEi8Q== /@babel/plugin-transform-react-jsx/7.14.5_@babel+core@7.14.5: dependencies: '@babel/core': 7.14.5 @@ -1911,18 +1582,6 @@ packages: '@babel/core': ^7.0.0-0 resolution: integrity: sha512-7RylxNeDnxc1OleDm0F5Q/BSL+whYRbOAR+bwgCxIr0L32v7UFh/pz1DLMZideAUxKT6eMoS2zQH6fyODLEi8Q== - /@babel/plugin-transform-react-pure-annotations/7.14.5_@babel+core@7.14.3: - dependencies: - '@babel/core': 7.14.3 - '@babel/helper-annotate-as-pure': 7.14.5 - '@babel/helper-plugin-utils': 7.14.5 - dev: false - engines: - node: '>=6.9.0' - peerDependencies: - '@babel/core': ^7.0.0-0 - resolution: - integrity: sha512-3X4HpBJimNxW4rhUy/SONPyNQHp5YRr0HhJdT2OH1BRp0of7u3Dkirc7x9FRJMKMqTBI079VZ1hzv7Ouuz///g== /@babel/plugin-transform-react-pure-annotations/7.14.5_@babel+core@7.14.5: dependencies: '@babel/core': 7.14.5 @@ -1935,9 +1594,9 @@ packages: '@babel/core': ^7.0.0-0 resolution: integrity: sha512-3X4HpBJimNxW4rhUy/SONPyNQHp5YRr0HhJdT2OH1BRp0of7u3Dkirc7x9FRJMKMqTBI079VZ1hzv7Ouuz///g== - /@babel/plugin-transform-regenerator/7.14.5_@babel+core@7.14.3: + /@babel/plugin-transform-regenerator/7.14.5_@babel+core@7.14.5: dependencies: - '@babel/core': 7.14.3 + '@babel/core': 7.14.5 regenerator-transform: 0.14.5 dev: false engines: @@ -1946,9 +1605,9 @@ packages: '@babel/core': ^7.0.0-0 resolution: integrity: sha512-NVIY1W3ITDP5xQl50NgTKlZ0GrotKtLna08/uGY6ErQt6VEQZXla86x/CTddm5gZdcr+5GSsvMeTmWA5Ii6pkg== - /@babel/plugin-transform-reserved-words/7.14.5_@babel+core@7.14.3: + /@babel/plugin-transform-reserved-words/7.14.5_@babel+core@7.14.5: dependencies: - '@babel/core': 7.14.3 + '@babel/core': 7.14.5 '@babel/helper-plugin-utils': 7.14.5 dev: false engines: @@ -1957,17 +1616,6 @@ packages: '@babel/core': ^7.0.0-0 resolution: integrity: sha512-cv4F2rv1nD4qdexOGsRQXJrOcyb5CrgjUH9PKrrtyhSDBNWGxd0UIitjyJiWagS+EbUGjG++22mGH1Pub8D6Vg== - /@babel/plugin-transform-shorthand-properties/7.14.5_@babel+core@7.14.3: - dependencies: - '@babel/core': 7.14.3 - '@babel/helper-plugin-utils': 7.14.5 - dev: false - engines: - node: '>=6.9.0' - peerDependencies: - '@babel/core': ^7.0.0-0 - resolution: - integrity: sha512-xLucks6T1VmGsTB+GWK5Pl9Jl5+nRXD1uoFdA5TSO6xtiNjtXTjKkmPdFXVLGlK5A2/or/wQMKfmQ2Y0XJfn5g== /@babel/plugin-transform-shorthand-properties/7.14.5_@babel+core@7.14.5: dependencies: '@babel/core': 7.14.5 @@ -1975,24 +1623,11 @@ packages: dev: false engines: node: '>=6.9.0' - optional: true peerDependencies: '@babel/core': ^7.0.0-0 resolution: integrity: sha512-xLucks6T1VmGsTB+GWK5Pl9Jl5+nRXD1uoFdA5TSO6xtiNjtXTjKkmPdFXVLGlK5A2/or/wQMKfmQ2Y0XJfn5g== - /@babel/plugin-transform-spread/7.14.5_@babel+core@7.14.3: - dependencies: - '@babel/core': 7.14.3 - '@babel/helper-plugin-utils': 7.14.5 - '@babel/helper-skip-transparent-expression-wrappers': 7.14.5 - dev: false - engines: - node: '>=6.9.0' - peerDependencies: - '@babel/core': ^7.0.0-0 - resolution: - integrity: sha512-/3iqoQdiWergnShZYl0xACb4ADeYCJ7X/RgmwtXshn6cIvautRPAFzhd58frQlokLO6Jb4/3JXvmm6WNTPtiTw== - /@babel/plugin-transform-spread/7.14.5_@babel+core@7.14.5: + /@babel/plugin-transform-spread/7.14.6_@babel+core@7.14.5: dependencies: '@babel/core': 7.14.5 '@babel/helper-plugin-utils': 7.14.5 @@ -2000,14 +1635,13 @@ packages: dev: false engines: node: '>=6.9.0' - optional: true peerDependencies: '@babel/core': ^7.0.0-0 resolution: - integrity: sha512-/3iqoQdiWergnShZYl0xACb4ADeYCJ7X/RgmwtXshn6cIvautRPAFzhd58frQlokLO6Jb4/3JXvmm6WNTPtiTw== - /@babel/plugin-transform-sticky-regex/7.14.5_@babel+core@7.14.3: + integrity: sha512-Zr0x0YroFJku7n7+/HH3A2eIrGMjbmAIbJSVv0IZ+t3U2WUQUA64S/oeied2e+MaGSjmt4alzBCsK9E8gh+fag== + /@babel/plugin-transform-sticky-regex/7.14.5_@babel+core@7.14.5: dependencies: - '@babel/core': 7.14.3 + '@babel/core': 7.14.5 '@babel/helper-plugin-utils': 7.14.5 dev: false engines: @@ -2016,17 +1650,6 @@ packages: '@babel/core': ^7.0.0-0 resolution: integrity: sha512-Z7F7GyvEMzIIbwnziAZmnSNpdijdr4dWt+FJNBnBLz5mwDFkqIXU9wmBcWWad3QeJF5hMTkRe4dAq2sUZiG+8A== - /@babel/plugin-transform-template-literals/7.14.5_@babel+core@7.14.3: - dependencies: - '@babel/core': 7.14.3 - '@babel/helper-plugin-utils': 7.14.5 - dev: false - engines: - node: '>=6.9.0' - peerDependencies: - '@babel/core': ^7.0.0-0 - resolution: - integrity: sha512-22btZeURqiepOfuy/VkFr+zStqlujWaarpMErvay7goJS6BWwdd6BY9zQyDLDa4x2S3VugxFb162IZ4m/S/+Gg== /@babel/plugin-transform-template-literals/7.14.5_@babel+core@7.14.5: dependencies: '@babel/core': 7.14.5 @@ -2034,14 +1657,13 @@ packages: dev: false engines: node: '>=6.9.0' - optional: true peerDependencies: '@babel/core': ^7.0.0-0 resolution: integrity: sha512-22btZeURqiepOfuy/VkFr+zStqlujWaarpMErvay7goJS6BWwdd6BY9zQyDLDa4x2S3VugxFb162IZ4m/S/+Gg== - /@babel/plugin-transform-typeof-symbol/7.14.5_@babel+core@7.14.3: + /@babel/plugin-transform-typeof-symbol/7.14.5_@babel+core@7.14.5: dependencies: - '@babel/core': 7.14.3 + '@babel/core': 7.14.5 '@babel/helper-plugin-utils': 7.14.5 dev: false engines: @@ -2050,22 +1672,22 @@ packages: '@babel/core': ^7.0.0-0 resolution: integrity: sha512-lXzLD30ffCWseTbMQzrvDWqljvZlHkXU+CnseMhkMNqU1sASnCsz3tSzAaH3vCUXb9PHeUb90ZT1BdFTm1xxJw== - /@babel/plugin-transform-typescript/7.14.5_@babel+core@7.14.3: + /@babel/plugin-transform-typescript/7.14.6_@babel+core@7.14.5: dependencies: - '@babel/core': 7.14.3 - '@babel/helper-create-class-features-plugin': 7.14.5_@babel+core@7.14.3 + '@babel/core': 7.14.5 + '@babel/helper-create-class-features-plugin': 7.14.6_@babel+core@7.14.5 '@babel/helper-plugin-utils': 7.14.5 - '@babel/plugin-syntax-typescript': 7.14.5_@babel+core@7.14.3 + '@babel/plugin-syntax-typescript': 7.14.5_@babel+core@7.14.5 dev: false engines: node: '>=6.9.0' peerDependencies: '@babel/core': ^7.0.0-0 resolution: - integrity: sha512-cFD5PKp4b8/KkwQ7h71FdPXFvz1RgwTFF9akRZwFldb9G0AHf7CgoPx96c4Q/ZVjh6V81tqQwW5YiHws16OzPg== - /@babel/plugin-transform-unicode-escapes/7.14.5_@babel+core@7.14.3: + integrity: sha512-XlTdBq7Awr4FYIzqhmYY80WN0V0azF74DMPyFqVHBvf81ZUgc4X7ZOpx6O8eLDK6iM5cCQzeyJw0ynTaefixRA== + /@babel/plugin-transform-unicode-escapes/7.14.5_@babel+core@7.14.5: dependencies: - '@babel/core': 7.14.3 + '@babel/core': 7.14.5 '@babel/helper-plugin-utils': 7.14.5 dev: false engines: @@ -2074,10 +1696,10 @@ packages: '@babel/core': ^7.0.0-0 resolution: integrity: sha512-crTo4jATEOjxj7bt9lbYXcBAM3LZaUrbP2uUdxb6WIorLmjNKSpHfIybgY4B8SRpbf8tEVIWH3Vtm7ayCrKocA== - /@babel/plugin-transform-unicode-regex/7.14.5_@babel+core@7.14.3: + /@babel/plugin-transform-unicode-regex/7.14.5_@babel+core@7.14.5: dependencies: - '@babel/core': 7.14.3 - '@babel/helper-create-regexp-features-plugin': 7.14.5_@babel+core@7.14.3 + '@babel/core': 7.14.5 + '@babel/helper-create-regexp-features-plugin': 7.14.5_@babel+core@7.14.5 '@babel/helper-plugin-utils': 7.14.5 dev: false engines: @@ -2086,80 +1708,80 @@ packages: '@babel/core': ^7.0.0-0 resolution: integrity: sha512-UygduJpC5kHeCiRw/xDVzC+wj8VaYSoKl5JNVmbP7MadpNinAm3SvZCxZ42H37KZBKztz46YC73i9yV34d0Tzw== - /@babel/preset-env/7.14.5_@babel+core@7.14.3: + /@babel/preset-env/7.14.5_@babel+core@7.14.5: dependencies: '@babel/compat-data': 7.14.5 - '@babel/core': 7.14.3 - '@babel/helper-compilation-targets': 7.14.5_@babel+core@7.14.3 + '@babel/core': 7.14.5 + '@babel/helper-compilation-targets': 7.14.5_@babel+core@7.14.5 '@babel/helper-plugin-utils': 7.14.5 '@babel/helper-validator-option': 7.14.5 - '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining': 7.14.5_@babel+core@7.14.3 - '@babel/plugin-proposal-async-generator-functions': 7.14.5_@babel+core@7.14.3 - '@babel/plugin-proposal-class-properties': 7.14.5_@babel+core@7.14.3 - '@babel/plugin-proposal-class-static-block': 7.14.5_@babel+core@7.14.3 - '@babel/plugin-proposal-dynamic-import': 7.14.5_@babel+core@7.14.3 - '@babel/plugin-proposal-export-namespace-from': 7.14.5_@babel+core@7.14.3 - '@babel/plugin-proposal-json-strings': 7.14.5_@babel+core@7.14.3 - '@babel/plugin-proposal-logical-assignment-operators': 7.14.5_@babel+core@7.14.3 - '@babel/plugin-proposal-nullish-coalescing-operator': 7.14.5_@babel+core@7.14.3 - '@babel/plugin-proposal-numeric-separator': 7.14.5_@babel+core@7.14.3 - '@babel/plugin-proposal-object-rest-spread': 7.14.5_@babel+core@7.14.3 - '@babel/plugin-proposal-optional-catch-binding': 7.14.5_@babel+core@7.14.3 - '@babel/plugin-proposal-optional-chaining': 7.14.5_@babel+core@7.14.3 - '@babel/plugin-proposal-private-methods': 7.14.5_@babel+core@7.14.3 - '@babel/plugin-proposal-private-property-in-object': 7.14.5_@babel+core@7.14.3 - '@babel/plugin-proposal-unicode-property-regex': 7.14.5_@babel+core@7.14.3 - '@babel/plugin-syntax-async-generators': 7.8.4_@babel+core@7.14.3 - '@babel/plugin-syntax-class-properties': 7.12.13_@babel+core@7.14.3 - '@babel/plugin-syntax-class-static-block': 7.14.5_@babel+core@7.14.3 - '@babel/plugin-syntax-dynamic-import': 7.8.3_@babel+core@7.14.3 - '@babel/plugin-syntax-export-namespace-from': 7.8.3_@babel+core@7.14.3 - '@babel/plugin-syntax-json-strings': 7.8.3_@babel+core@7.14.3 - '@babel/plugin-syntax-logical-assignment-operators': 7.10.4_@babel+core@7.14.3 - '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3_@babel+core@7.14.3 - '@babel/plugin-syntax-numeric-separator': 7.10.4_@babel+core@7.14.3 - '@babel/plugin-syntax-object-rest-spread': 7.8.3_@babel+core@7.14.3 - '@babel/plugin-syntax-optional-catch-binding': 7.8.3_@babel+core@7.14.3 - '@babel/plugin-syntax-optional-chaining': 7.8.3_@babel+core@7.14.3 - '@babel/plugin-syntax-private-property-in-object': 7.14.5_@babel+core@7.14.3 - '@babel/plugin-syntax-top-level-await': 7.14.5_@babel+core@7.14.3 - '@babel/plugin-transform-arrow-functions': 7.14.5_@babel+core@7.14.3 - '@babel/plugin-transform-async-to-generator': 7.14.5_@babel+core@7.14.3 - '@babel/plugin-transform-block-scoped-functions': 7.14.5_@babel+core@7.14.3 - '@babel/plugin-transform-block-scoping': 7.14.5_@babel+core@7.14.3 - '@babel/plugin-transform-classes': 7.14.5_@babel+core@7.14.3 - '@babel/plugin-transform-computed-properties': 7.14.5_@babel+core@7.14.3 - '@babel/plugin-transform-destructuring': 7.14.5_@babel+core@7.14.3 - '@babel/plugin-transform-dotall-regex': 7.14.5_@babel+core@7.14.3 - '@babel/plugin-transform-duplicate-keys': 7.14.5_@babel+core@7.14.3 - '@babel/plugin-transform-exponentiation-operator': 7.14.5_@babel+core@7.14.3 - '@babel/plugin-transform-for-of': 7.14.5_@babel+core@7.14.3 - '@babel/plugin-transform-function-name': 7.14.5_@babel+core@7.14.3 - '@babel/plugin-transform-literals': 7.14.5_@babel+core@7.14.3 - '@babel/plugin-transform-member-expression-literals': 7.14.5_@babel+core@7.14.3 - '@babel/plugin-transform-modules-amd': 7.14.5_@babel+core@7.14.3 - '@babel/plugin-transform-modules-commonjs': 7.14.5_@babel+core@7.14.3 - '@babel/plugin-transform-modules-systemjs': 7.14.5_@babel+core@7.14.3 - '@babel/plugin-transform-modules-umd': 7.14.5_@babel+core@7.14.3 - '@babel/plugin-transform-named-capturing-groups-regex': 7.14.5_@babel+core@7.14.3 - '@babel/plugin-transform-new-target': 7.14.5_@babel+core@7.14.3 - '@babel/plugin-transform-object-super': 7.14.5_@babel+core@7.14.3 - '@babel/plugin-transform-parameters': 7.14.5_@babel+core@7.14.3 - '@babel/plugin-transform-property-literals': 7.14.5_@babel+core@7.14.3 - '@babel/plugin-transform-regenerator': 7.14.5_@babel+core@7.14.3 - '@babel/plugin-transform-reserved-words': 7.14.5_@babel+core@7.14.3 - '@babel/plugin-transform-shorthand-properties': 7.14.5_@babel+core@7.14.3 - '@babel/plugin-transform-spread': 7.14.5_@babel+core@7.14.3 - '@babel/plugin-transform-sticky-regex': 7.14.5_@babel+core@7.14.3 - '@babel/plugin-transform-template-literals': 7.14.5_@babel+core@7.14.3 - '@babel/plugin-transform-typeof-symbol': 7.14.5_@babel+core@7.14.3 - '@babel/plugin-transform-unicode-escapes': 7.14.5_@babel+core@7.14.3 - '@babel/plugin-transform-unicode-regex': 7.14.5_@babel+core@7.14.3 - '@babel/preset-modules': 0.1.4_@babel+core@7.14.3 + '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining': 7.14.5_@babel+core@7.14.5 + '@babel/plugin-proposal-async-generator-functions': 7.14.5_@babel+core@7.14.5 + '@babel/plugin-proposal-class-properties': 7.14.5_@babel+core@7.14.5 + '@babel/plugin-proposal-class-static-block': 7.14.5_@babel+core@7.14.5 + '@babel/plugin-proposal-dynamic-import': 7.14.5_@babel+core@7.14.5 + '@babel/plugin-proposal-export-namespace-from': 7.14.5_@babel+core@7.14.5 + '@babel/plugin-proposal-json-strings': 7.14.5_@babel+core@7.14.5 + '@babel/plugin-proposal-logical-assignment-operators': 7.14.5_@babel+core@7.14.5 + '@babel/plugin-proposal-nullish-coalescing-operator': 7.14.5_@babel+core@7.14.5 + '@babel/plugin-proposal-numeric-separator': 7.14.5_@babel+core@7.14.5 + '@babel/plugin-proposal-object-rest-spread': 7.14.5_@babel+core@7.14.5 + '@babel/plugin-proposal-optional-catch-binding': 7.14.5_@babel+core@7.14.5 + '@babel/plugin-proposal-optional-chaining': 7.14.5_@babel+core@7.14.5 + '@babel/plugin-proposal-private-methods': 7.14.5_@babel+core@7.14.5 + '@babel/plugin-proposal-private-property-in-object': 7.14.5_@babel+core@7.14.5 + '@babel/plugin-proposal-unicode-property-regex': 7.14.5_@babel+core@7.14.5 + '@babel/plugin-syntax-async-generators': 7.8.4_@babel+core@7.14.5 + '@babel/plugin-syntax-class-properties': 7.12.13_@babel+core@7.14.5 + '@babel/plugin-syntax-class-static-block': 7.14.5_@babel+core@7.14.5 + '@babel/plugin-syntax-dynamic-import': 7.8.3_@babel+core@7.14.5 + '@babel/plugin-syntax-export-namespace-from': 7.8.3_@babel+core@7.14.5 + '@babel/plugin-syntax-json-strings': 7.8.3_@babel+core@7.14.5 + '@babel/plugin-syntax-logical-assignment-operators': 7.10.4_@babel+core@7.14.5 + '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3_@babel+core@7.14.5 + '@babel/plugin-syntax-numeric-separator': 7.10.4_@babel+core@7.14.5 + '@babel/plugin-syntax-object-rest-spread': 7.8.3_@babel+core@7.14.5 + '@babel/plugin-syntax-optional-catch-binding': 7.8.3_@babel+core@7.14.5 + '@babel/plugin-syntax-optional-chaining': 7.8.3_@babel+core@7.14.5 + '@babel/plugin-syntax-private-property-in-object': 7.14.5_@babel+core@7.14.5 + '@babel/plugin-syntax-top-level-await': 7.14.5_@babel+core@7.14.5 + '@babel/plugin-transform-arrow-functions': 7.14.5_@babel+core@7.14.5 + '@babel/plugin-transform-async-to-generator': 7.14.5_@babel+core@7.14.5 + '@babel/plugin-transform-block-scoped-functions': 7.14.5_@babel+core@7.14.5 + '@babel/plugin-transform-block-scoping': 7.14.5_@babel+core@7.14.5 + '@babel/plugin-transform-classes': 7.14.5_@babel+core@7.14.5 + '@babel/plugin-transform-computed-properties': 7.14.5_@babel+core@7.14.5 + '@babel/plugin-transform-destructuring': 7.14.5_@babel+core@7.14.5 + '@babel/plugin-transform-dotall-regex': 7.14.5_@babel+core@7.14.5 + '@babel/plugin-transform-duplicate-keys': 7.14.5_@babel+core@7.14.5 + '@babel/plugin-transform-exponentiation-operator': 7.14.5_@babel+core@7.14.5 + '@babel/plugin-transform-for-of': 7.14.5_@babel+core@7.14.5 + '@babel/plugin-transform-function-name': 7.14.5_@babel+core@7.14.5 + '@babel/plugin-transform-literals': 7.14.5_@babel+core@7.14.5 + '@babel/plugin-transform-member-expression-literals': 7.14.5_@babel+core@7.14.5 + '@babel/plugin-transform-modules-amd': 7.14.5_@babel+core@7.14.5 + '@babel/plugin-transform-modules-commonjs': 7.14.5_@babel+core@7.14.5 + '@babel/plugin-transform-modules-systemjs': 7.14.5_@babel+core@7.14.5 + '@babel/plugin-transform-modules-umd': 7.14.5_@babel+core@7.14.5 + '@babel/plugin-transform-named-capturing-groups-regex': 7.14.5_@babel+core@7.14.5 + '@babel/plugin-transform-new-target': 7.14.5_@babel+core@7.14.5 + '@babel/plugin-transform-object-super': 7.14.5_@babel+core@7.14.5 + '@babel/plugin-transform-parameters': 7.14.5_@babel+core@7.14.5 + '@babel/plugin-transform-property-literals': 7.14.5_@babel+core@7.14.5 + '@babel/plugin-transform-regenerator': 7.14.5_@babel+core@7.14.5 + '@babel/plugin-transform-reserved-words': 7.14.5_@babel+core@7.14.5 + '@babel/plugin-transform-shorthand-properties': 7.14.5_@babel+core@7.14.5 + '@babel/plugin-transform-spread': 7.14.6_@babel+core@7.14.5 + '@babel/plugin-transform-sticky-regex': 7.14.5_@babel+core@7.14.5 + '@babel/plugin-transform-template-literals': 7.14.5_@babel+core@7.14.5 + '@babel/plugin-transform-typeof-symbol': 7.14.5_@babel+core@7.14.5 + '@babel/plugin-transform-unicode-escapes': 7.14.5_@babel+core@7.14.5 + '@babel/plugin-transform-unicode-regex': 7.14.5_@babel+core@7.14.5 + '@babel/preset-modules': 0.1.4_@babel+core@7.14.5 '@babel/types': 7.14.5 - babel-plugin-polyfill-corejs2: 0.2.2_@babel+core@7.14.3 - babel-plugin-polyfill-corejs3: 0.2.2_@babel+core@7.14.3 - babel-plugin-polyfill-regenerator: 0.2.2_@babel+core@7.14.3 + babel-plugin-polyfill-corejs2: 0.2.2_@babel+core@7.14.5 + babel-plugin-polyfill-corejs3: 0.2.3_@babel+core@7.14.5 + babel-plugin-polyfill-regenerator: 0.2.2_@babel+core@7.14.5 core-js-compat: 3.14.0 semver: 6.3.0 dev: false @@ -2182,12 +1804,12 @@ packages: '@babel/core': ^7.0.0-0 resolution: integrity: sha512-pP5QEb4qRUSVGzzKx9xqRuHUrM/jEzMqdrZpdMA+oUCRgd5zM1qGr5y5+ZgAL/1tVv1H0dyk5t4SKJntqyiVtg== - /@babel/preset-modules/0.1.4_@babel+core@7.14.3: + /@babel/preset-modules/0.1.4_@babel+core@7.14.5: dependencies: - '@babel/core': 7.14.3 + '@babel/core': 7.14.5 '@babel/helper-plugin-utils': 7.14.5 - '@babel/plugin-proposal-unicode-property-regex': 7.14.5_@babel+core@7.14.3 - '@babel/plugin-transform-dotall-regex': 7.14.5_@babel+core@7.14.3 + '@babel/plugin-proposal-unicode-property-regex': 7.14.5_@babel+core@7.14.5 + '@babel/plugin-transform-dotall-regex': 7.14.5_@babel+core@7.14.5 '@babel/types': 7.14.5 esutils: 2.0.3 dev: false @@ -2195,22 +1817,6 @@ packages: '@babel/core': ^7.0.0-0 resolution: integrity: sha512-J36NhwnfdzpmH41M1DrnkkgAqhZaqr/NBdPfQ677mLzlaXo+oDiv1deyCDtgAhz8p328otdob0Du7+xgHGZbKg== - /@babel/preset-react/7.14.5_@babel+core@7.14.3: - dependencies: - '@babel/core': 7.14.3 - '@babel/helper-plugin-utils': 7.14.5 - '@babel/helper-validator-option': 7.14.5 - '@babel/plugin-transform-react-display-name': 7.14.5_@babel+core@7.14.3 - '@babel/plugin-transform-react-jsx': 7.14.5_@babel+core@7.14.3 - '@babel/plugin-transform-react-jsx-development': 7.14.5_@babel+core@7.14.3 - '@babel/plugin-transform-react-pure-annotations': 7.14.5_@babel+core@7.14.3 - dev: false - engines: - node: '>=6.9.0' - peerDependencies: - '@babel/core': ^7.0.0-0 - resolution: - integrity: sha512-XFxBkjyObLvBaAvkx1Ie95Iaq4S/GUEIrejyrntQ/VCMKUYvKLoyKxOBzJ2kjA3b6rC9/KL6KXfDC2GqvLiNqQ== /@babel/preset-react/7.14.5_@babel+core@7.14.5: dependencies: '@babel/core': 7.14.5 @@ -2227,12 +1833,12 @@ packages: '@babel/core': ^7.0.0-0 resolution: integrity: sha512-XFxBkjyObLvBaAvkx1Ie95Iaq4S/GUEIrejyrntQ/VCMKUYvKLoyKxOBzJ2kjA3b6rC9/KL6KXfDC2GqvLiNqQ== - /@babel/preset-typescript/7.14.5_@babel+core@7.14.3: + /@babel/preset-typescript/7.14.5_@babel+core@7.14.5: dependencies: - '@babel/core': 7.14.3 + '@babel/core': 7.14.5 '@babel/helper-plugin-utils': 7.14.5 '@babel/helper-validator-option': 7.14.5 - '@babel/plugin-transform-typescript': 7.14.5_@babel+core@7.14.3 + '@babel/plugin-transform-typescript': 7.14.6_@babel+core@7.14.5 dev: false engines: node: '>=6.9.0' @@ -2240,9 +1846,9 @@ packages: '@babel/core': ^7.0.0-0 resolution: integrity: sha512-u4zO6CdbRKbS9TypMqrlGH7sd2TAJppZwn3c/ZRLeO/wGsbddxgbPDUZVNrie3JWYLQ9vpineKlsrWFvO6Pwkw== - /@babel/register/7.14.5_@babel+core@7.14.3: + /@babel/register/7.14.5_@babel+core@7.14.5: dependencies: - '@babel/core': 7.14.3 + '@babel/core': 7.14.5 clone-deep: 4.0.1 find-cache-dir: 2.1.0 make-dir: 2.1.0 @@ -2255,7 +1861,7 @@ packages: '@babel/core': ^7.0.0-0 resolution: integrity: sha512-TjJpGz/aDjFGWsItRBQMOFTrmTI9tr79CHOK+KIvLeCkbxuOAk2M5QHjvruIMGoo9OuccMh5euplPzc5FjAKGg== - /@babel/runtime-corejs3/7.14.5: + /@babel/runtime-corejs3/7.14.6: dependencies: core-js-pure: 3.14.0 regenerator-runtime: 0.13.7 @@ -2263,19 +1869,19 @@ packages: engines: node: '>=6.9.0' resolution: - integrity: sha512-cBbwXj3F2xjnQJ0ERaFRLjxhUSBYsQPXJ7CERz/ecx6q6hzQ99eTflAPFC3ks4q/IG4CWupNVdflc4jlFBJVsg== - /@babel/runtime/7.14.5: + integrity: sha512-Xl8SPYtdjcMoCsIM4teyVRg7jIcgl8F2kRtoCcXuHzXswt9UxZCS6BzRo8fcnCuP6u2XtPgvyonmEPF57Kxo9Q== + /@babel/runtime/7.14.6: dependencies: regenerator-runtime: 0.13.7 dev: false engines: node: '>=6.9.0' resolution: - integrity: sha512-121rumjddw9c3NCQ55KGkyE1h/nzWhU/owjhw0l4mQrkzz4x9SGS1X8gFLraHwX7td3Yo4QTL+qj0NcIzN87BA== + integrity: sha512-/PCB2uJ7oM44tz8YhC4Z/6PeOKXp4K588f+5M3clr1M4zbqztlo0XEfJ2LEzj/FgwfgGcIdl8n7YYjTCI0BYwg== /@babel/template/7.14.5: dependencies: '@babel/code-frame': 7.14.5 - '@babel/parser': 7.14.5 + '@babel/parser': 7.14.6 '@babel/types': 7.14.5 dev: false engines: @@ -2288,8 +1894,8 @@ packages: '@babel/generator': 7.14.5 '@babel/helper-function-name': 7.14.5 '@babel/helper-split-export-declaration': 7.14.5 - '@babel/parser': 7.14.5 - '@babel/types': 7.14.5 + '@babel/parser': 7.12.16 + '@babel/types': 7.12.13 debug: 4.3.1 globals: 11.12.0 lodash: 4.17.21 @@ -2304,7 +1910,7 @@ packages: '@babel/helper-function-name': 7.14.5 '@babel/helper-hoist-variables': 7.14.5 '@babel/helper-split-export-declaration': 7.14.5 - '@babel/parser': 7.14.5 + '@babel/parser': 7.14.6 '@babel/types': 7.14.5 debug: 4.3.1 globals: 11.12.0 @@ -2446,7 +2052,7 @@ packages: integrity: sha512-fU2VtSVlHiF27empSbxi1O2JFdNWZO+2NFHfwO0pxgTep6Xa3uGb+3pVKfLww2l/IBGLNEZl5Xf/++A4wAYDYQ== /@emotion/core/10.1.1_react@17.0.2: dependencies: - '@babel/runtime': 7.14.5 + '@babel/runtime': 7.14.6 '@emotion/cache': 10.0.29 '@emotion/css': 10.0.27 '@emotion/serialize': 0.11.16 @@ -2496,7 +2102,7 @@ packages: integrity: sha512-zM9PFmgVSqBw4zL101Q0HrBVTGmpAxFZH/pYx/cjJT5advXguvcgjHFTCaIO3enL/xr89vK2bh0Mfyj9aa0ANA== /@emotion/styled-base/10.0.31_33bb31e1d857102242df3642b32eda18: dependencies: - '@babel/runtime': 7.14.5 + '@babel/runtime': 7.14.6 '@emotion/core': 10.1.1_react@17.0.2 '@emotion/is-prop-valid': 0.8.8 '@emotion/serialize': 0.11.16 @@ -2535,25 +2141,68 @@ packages: /@emotion/weak-memoize/0.2.5: dev: false resolution: - integrity: sha512-6U71C2Wp7r5XtFtQzYrW5iKFT67OixrSxjI4MptCHzdSVlgabczzqLe0ZSgnub/5Kp4hSbpDB1tMytZY9pwxxA== - /@energyweb/energy-api-influxdb/0.7.0_dc7550b32b1014ff62ea7cebd522ef42: - dependencies: - '@influxdata/influxdb-client': 1.9.0 - '@nestjs/common': 7.6.12_989b90aa2e92e0af49cad765bf76261d - '@nestjs/config': 0.6.3_80bdaed702894e4c732db41507e638df - '@nestjs/core': 7.6.12_f0db1b002d4e1665e36a3988dceff856 - '@nestjs/swagger': 4.7.13_7afbd3f1bd6e423f59cc62ff1e8852bc - class-transformer: 0.3.1 - class-validator: 0.12.2 - reflect-metadata: 0.1.13 - rimraf: 3.0.2 - rxjs: 6.6.3 + integrity: sha512-6U71C2Wp7r5XtFtQzYrW5iKFT67OixrSxjI4MptCHzdSVlgabczzqLe0ZSgnub/5Kp4hSbpDB1tMytZY9pwxxA== + /@energyweb/energy-api-influxdb/0.7.0_dc7550b32b1014ff62ea7cebd522ef42: + dependencies: + '@influxdata/influxdb-client': 1.9.0 + '@nestjs/common': 7.6.12_989b90aa2e92e0af49cad765bf76261d + '@nestjs/config': 0.6.3_80bdaed702894e4c732db41507e638df + '@nestjs/core': 7.6.12_f0db1b002d4e1665e36a3988dceff856 + '@nestjs/swagger': 4.7.13_7afbd3f1bd6e423f59cc62ff1e8852bc + class-transformer: 0.3.1 + class-validator: 0.12.2 + reflect-metadata: 0.1.13 + rimraf: 3.0.2 + rxjs: 6.6.3 + dev: false + peerDependencies: + '@nestjs/platform-express': '*' + swagger-ui-express: '*' + resolution: + integrity: sha512-p4F5eu+3w+RdBzfci6jUnBMfBmhoSLoiTUI5JCsq7SLmp6nqEbKwsGL+vCTtfDpSajzokZlR8MfJf1W+i+beow== + /@ensdomains/address-encoder/0.1.9: + dependencies: + bech32: 1.1.4 + blakejs: 1.1.0 + bn.js: 4.12.0 + bs58: 4.0.1 + crypto-addr-codec: 0.1.7 + nano-base32: 1.0.1 + ripemd160: 2.0.2 + dev: false + resolution: + integrity: sha512-E2d2gP4uxJQnDu2Kfg1tHNspefzbLT8Tyjrm5sEuim32UkU2sm5xL4VXtgc2X33fmPEw9+jUMpGs4veMbf+PYg== + /@ensdomains/ens/0.4.3: + dependencies: + bluebird: 3.7.2 + eth-ens-namehash: 2.0.8 + ethereumjs-testrpc: 6.0.3 + ganache-cli: 6.12.2 + solc: 0.4.26 + testrpc: 0.0.1 + web3-utils: 1.3.6 + deprecated: Please use @ensdomains/ens-contracts + dev: false + resolution: + integrity: sha512-btC+fGze//ml8SMNCx5DgwM8+kG2t+qDCZrqlL/2+PV4CNxnRIpR3egZ49D9FqS52PFoYLmz6MaQfl7AO3pUMA== + /@ensdomains/ensjs/2.0.1: + dependencies: + '@babel/runtime': 7.14.6 + '@ensdomains/address-encoder': 0.1.9 + '@ensdomains/ens': 0.4.3 + '@ensdomains/resolver': 0.2.4 + content-hash: 2.5.2 + eth-ens-namehash: 2.0.8 + ethers: 5.3.1 + js-sha3: 0.8.0 + dev: false + resolution: + integrity: sha512-gZLntzE1xqPNkPvaHdJlV5DXHms8JbHBwrXc2xNrL1AylERK01Lj/txCCZyVQqFd3TvUO1laDbfUv8VII0qrjg== + /@ensdomains/resolver/0.2.4: + deprecated: Please use @ensdomains/ens-contracts dev: false - peerDependencies: - '@nestjs/platform-express': '*' - swagger-ui-express: '*' resolution: - integrity: sha512-p4F5eu+3w+RdBzfci6jUnBMfBmhoSLoiTUI5JCsq7SLmp6nqEbKwsGL+vCTtfDpSajzokZlR8MfJf1W+i+beow== + integrity: sha512-bvaTH34PMCbv6anRa9I/0zjLJgY4EuznbEMgbV77JBCQ9KNC46rzi0avuxpOfu+xDjPEtSFGqVEOr5GlUSGudA== /@ethersproject/abi/5.0.0-beta.153: dependencies: '@ethersproject/address': 5.3.0 @@ -2583,20 +2232,6 @@ packages: dev: false resolution: integrity: sha512-Cqktk+hSIckwP/W8O47Eef60VwmoSC/L3lY0+dIBhQPCNn9E4V7rwmm2aFrNRRDJfFlGuZ1khkQUOc3oBX+niw== - /@ethersproject/abi/5.3.0: - dependencies: - '@ethersproject/address': 5.3.0 - '@ethersproject/bignumber': 5.3.0 - '@ethersproject/bytes': 5.3.0 - '@ethersproject/constants': 5.3.0 - '@ethersproject/hash': 5.3.0 - '@ethersproject/keccak256': 5.3.0 - '@ethersproject/logger': 5.3.0 - '@ethersproject/properties': 5.3.0 - '@ethersproject/strings': 5.3.0 - dev: false - resolution: - integrity: sha512-NaT4UacjOwca8qCG/gv8k+DgTcWu49xlrvdhr/p8PTFnoS8e3aMWqjI3znFME5Txa/QWXDrg2/heufIUue9rtw== /@ethersproject/abi/5.3.1: dependencies: '@ethersproject/address': 5.3.0 @@ -2616,7 +2251,7 @@ packages: '@ethersproject/bignumber': 5.3.0 '@ethersproject/bytes': 5.3.0 '@ethersproject/logger': 5.3.0 - '@ethersproject/networks': 5.3.0 + '@ethersproject/networks': 5.3.1 '@ethersproject/properties': 5.3.0 '@ethersproject/transactions': 5.3.0 '@ethersproject/web': 5.3.0 @@ -2678,7 +2313,7 @@ packages: integrity: sha512-4y1feNOwEpgjAfiCFWOHznvv6qUF/H6uI0UKp8xdhftb+H+FbKflXg1pOgH5qs4Sr7EYBL+zPyPb+YD5g1aEyw== /@ethersproject/contracts/5.3.0: dependencies: - '@ethersproject/abi': 5.3.0 + '@ethersproject/abi': 5.3.1 '@ethersproject/abstract-provider': 5.3.0 '@ethersproject/abstract-signer': 5.3.0 '@ethersproject/address': 5.3.0 @@ -2750,12 +2385,6 @@ packages: dev: false resolution: integrity: sha512-8bwJ2gxJGkZZnpQSq5uSiZSJjyVTWmlGft4oH8vxHdvO1Asy4TwVepAhPgxIQIMxXZFUNMych1YjIV4oQ4I7dA== - /@ethersproject/networks/5.3.0: - dependencies: - '@ethersproject/logger': 5.3.0 - dev: false - resolution: - integrity: sha512-XGbD9MMgqrR7SYz8o6xVgdG+25v7YT5vQG8ZdlcLj2I7elOBM7VNeQrnxfSN7rWQNcqu2z80OM29gGbQz+4Low== /@ethersproject/networks/5.3.1: dependencies: '@ethersproject/logger': 5.3.0 @@ -2775,30 +2404,6 @@ packages: dev: false resolution: integrity: sha512-PaHxJyM5/bfusk6vr3yP//JMnm4UEojpzuWGTmtL5X4uNhNnFNvlYilZLyDr4I9cTkIbipCMsAuIcXWsmdRnEw== - /@ethersproject/providers/5.3.0: - dependencies: - '@ethersproject/abstract-provider': 5.3.0 - '@ethersproject/abstract-signer': 5.3.0 - '@ethersproject/address': 5.3.0 - '@ethersproject/basex': 5.3.0 - '@ethersproject/bignumber': 5.3.0 - '@ethersproject/bytes': 5.3.0 - '@ethersproject/constants': 5.3.0 - '@ethersproject/hash': 5.3.0 - '@ethersproject/logger': 5.3.0 - '@ethersproject/networks': 5.3.0 - '@ethersproject/properties': 5.3.0 - '@ethersproject/random': 5.3.0 - '@ethersproject/rlp': 5.3.0 - '@ethersproject/sha2': 5.3.0 - '@ethersproject/strings': 5.3.0 - '@ethersproject/transactions': 5.3.0 - '@ethersproject/web': 5.3.0 - bech32: 1.1.4 - ws: 7.4.6 - dev: false - resolution: - integrity: sha512-HtL+DEbzPcRyfrkrMay7Rk/4he+NbUpzI/wHXP4Cqtra82nQOnqqCgTQc4HbdDrl75WVxG/JRMFhyneIPIMZaA== /@ethersproject/providers/5.3.1: dependencies: '@ethersproject/abstract-provider': 5.3.0 @@ -2810,7 +2415,7 @@ packages: '@ethersproject/constants': 5.3.0 '@ethersproject/hash': 5.3.0 '@ethersproject/logger': 5.3.0 - '@ethersproject/networks': 5.3.0 + '@ethersproject/networks': 5.3.1 '@ethersproject/properties': 5.3.0 '@ethersproject/random': 5.3.0 '@ethersproject/rlp': 5.3.0 @@ -3596,7 +3201,7 @@ packages: integrity: sha512-wYn6r8zVZyQJ6rQaALBEln5B1pzxb9shV5Ef97kTvn6yVGrqyXVnDqnU24MXnFubR+rZjBY9NWuxX3FB2sTsjg== /@grpc/grpc-js/1.3.2: dependencies: - '@types/node': 14.17.2 + '@types/node': 14.17.3 dev: false engines: node: ^8.13.0 || >=10.10.0 @@ -3712,7 +3317,7 @@ packages: /@jest/console/27.0.2: dependencies: '@jest/types': 27.0.2 - '@types/node': 14.17.2 + '@types/node': 14.17.3 chalk: 4.1.1 jest-message-util: 27.0.2 jest-util: 27.0.2 @@ -3729,7 +3334,7 @@ packages: '@jest/test-result': 27.0.2 '@jest/transform': 27.0.2 '@jest/types': 27.0.2 - '@types/node': 14.17.2 + '@types/node': 14.17.3 ansi-escapes: 4.3.2 chalk: 4.1.1 emittery: 0.8.1 @@ -3779,7 +3384,7 @@ packages: dependencies: '@jest/fake-timers': 27.0.3 '@jest/types': 27.0.2 - '@types/node': 14.17.2 + '@types/node': 14.17.3 jest-mock: 27.0.3 dev: false engines: @@ -3800,7 +3405,7 @@ packages: dependencies: '@jest/types': 27.0.2 '@sinonjs/fake-timers': 7.1.2 - '@types/node': 14.17.2 + '@types/node': 14.17.3 jest-message-util: 27.0.2 jest-mock: 27.0.3 jest-util: 27.0.2 @@ -3909,7 +3514,7 @@ packages: integrity: sha512-6UFEVwdmxYdyNffBxVVZxmXEdBE4riSddXYSnFNH0ELFQFk/bvagizim8WfgJTqF4EKd+j1yFxvhb8BMHfOjSQ== /@jest/transform/24.9.0: dependencies: - '@babel/core': 7.14.3 + '@babel/core': 7.14.5 '@jest/types': 24.9.0 babel-plugin-istanbul: 5.2.0 chalk: 2.4.2 @@ -3932,7 +3537,7 @@ packages: integrity: sha512-TcQUmyNRxV94S0QpMOnZl0++6RMiqpbH/ZMccFB/amku6Uwvyb1cjYX7xkp5nGNkbX4QPH/FcB6q1HBTHynLmQ== /@jest/transform/26.6.2: dependencies: - '@babel/core': 7.14.3 + '@babel/core': 7.14.5 '@jest/types': 26.6.2 babel-plugin-istanbul: 6.0.0 chalk: 4.1.1 @@ -3954,7 +3559,7 @@ packages: integrity: sha512-E9JjhUgNzvuQ+vVAL21vlyfy12gP0GhazGgJC4h6qUt1jSdUXGWJ1wfu/X7Sd8etSgxV4ovT1pb9v5D6QW4XgA== /@jest/transform/27.0.2: dependencies: - '@babel/core': 7.14.3 + '@babel/core': 7.14.5 '@jest/types': 27.0.2 babel-plugin-istanbul: 6.0.0 chalk: 4.1.1 @@ -3988,7 +3593,7 @@ packages: dependencies: '@types/istanbul-lib-coverage': 2.0.3 '@types/istanbul-reports': 3.0.1 - '@types/node': 14.17.2 + '@types/node': 14.17.3 '@types/yargs': 15.0.13 chalk: 4.1.1 dev: false @@ -4000,7 +3605,7 @@ packages: dependencies: '@types/istanbul-lib-coverage': 2.0.3 '@types/istanbul-reports': 3.0.1 - '@types/node': 14.17.2 + '@types/node': 14.17.3 '@types/yargs': 16.0.3 chalk: 4.1.1 dev: false @@ -4058,7 +3663,7 @@ packages: integrity: sha512-swKHYCOZUGyVt4ge0u8a7AwNcA//h4nx5wIi0sruGye1IJ5Cva0GyK9L2/WdX+kWVTKp92ZiEo1df31lrWGPgA== /@material-ui/core/4.11.4_7a759d72fcbc11ce03c9de110c21df82: dependencies: - '@babel/runtime': 7.14.5 + '@babel/runtime': 7.14.6 '@material-ui/styles': 4.11.4_7a759d72fcbc11ce03c9de110c21df82 '@material-ui/system': 4.11.3_7a759d72fcbc11ce03c9de110c21df82 '@material-ui/types': 5.1.0_@types+react@17.0.11 @@ -4087,7 +3692,7 @@ packages: integrity: sha512-oqb+lJ2Dl9HXI9orc6/aN8ZIAMkeThufA5iZELf2LQeBn2NtjVilF5D2w7e9RpntAzDb4jK5DsVhkfOvFY/8fg== /@material-ui/icons/4.11.2_5e14cec25e1ceef8d08e6ab1e0c4cb05: dependencies: - '@babel/runtime': 7.14.5 + '@babel/runtime': 7.14.6 '@material-ui/core': 4.11.4_7a759d72fcbc11ce03c9de110c21df82 '@types/react': 17.0.11 react: 17.0.2 @@ -4107,7 +3712,7 @@ packages: integrity: sha512-fQNsKX2TxBmqIGJCSi3tGTO/gZ+eJgWmMJkgDiOfyNaunNaxcklJQFaFogYcFl0qFuaEz1qaXYXboa/bUXVSOQ== /@material-ui/lab/4.0.0-alpha.58_5e14cec25e1ceef8d08e6ab1e0c4cb05: dependencies: - '@babel/runtime': 7.14.5 + '@babel/runtime': 7.14.6 '@material-ui/core': 4.11.4_7a759d72fcbc11ce03c9de110c21df82 '@material-ui/utils': 4.11.2_react-dom@17.0.2+react@17.0.2 '@types/react': 17.0.11 @@ -4131,7 +3736,7 @@ packages: integrity: sha512-GKHlJqLxUeHH3L3dGQ48ZavYrqGOTXkFkiEiuYMAnAvXAZP4rhMIqeHOPXSUQan4Bd8QnafDcpovOSLnadDmKw== /@material-ui/pickers/3.3.10_f543984b3e6c18c2e2e104a9ecbda934: dependencies: - '@babel/runtime': 7.14.5 + '@babel/runtime': 7.14.6 '@date-io/core': 1.3.13 '@material-ui/core': 4.11.4_7a759d72fcbc11ce03c9de110c21df82 '@types/styled-jsx': 2.2.8 @@ -4150,7 +3755,7 @@ packages: integrity: sha512-hS4pxwn1ZGXVkmgD4tpFpaumUaAg2ZzbTrxltfC5yPw4BJV+mGkfnQOB4VpWEYZw2jv65Z0wLwDE/piQiPPZ3w== /@material-ui/styles/4.11.4_7a759d72fcbc11ce03c9de110c21df82: dependencies: - '@babel/runtime': 7.14.5 + '@babel/runtime': 7.14.6 '@emotion/hash': 0.8.0 '@material-ui/types': 5.1.0_@types+react@17.0.11 '@material-ui/utils': 4.11.2_react-dom@17.0.2+react@17.0.2 @@ -4183,7 +3788,7 @@ packages: integrity: sha512-KNTIZcnj/zprG5LW0Sao7zw+yG3O35pviHzejMdcSGCdWbiO8qzRgOYL8JAxAsWBKOKYwVZxXtHWaB5T2Kvxew== /@material-ui/system/4.11.3_7a759d72fcbc11ce03c9de110c21df82: dependencies: - '@babel/runtime': 7.14.5 + '@babel/runtime': 7.14.6 '@material-ui/utils': 4.11.2_react-dom@17.0.2+react@17.0.2 '@types/react': 17.0.11 csstype: 2.6.17 @@ -4215,7 +3820,7 @@ packages: integrity: sha512-7cqRjrY50b8QzRSYyhSpx4WRw2YuO0KKIGQEVk5J8uoz2BanawykgZGoWEqKm7pVIbzFDN0SpPcVV4IhOFkl8A== /@material-ui/utils/4.11.2_react-dom@17.0.2+react@17.0.2: dependencies: - '@babel/runtime': 7.14.5 + '@babel/runtime': 7.14.6 prop-types: 15.7.2 react: 17.0.2 react-dom: 17.0.2_react@17.0.2 @@ -4904,7 +4509,7 @@ packages: /@openzeppelin/truffle-upgrades/1.7.0_truffle@5.3.10: dependencies: '@openzeppelin/upgrades-core': 1.7.6 - '@truffle/contract': 4.3.19 + '@truffle/contract': 4.3.20 solidity-ast: 0.4.25 truffle: 5.3.10_@types+node@14.17.3+react@17.0.2 dev: false @@ -5070,7 +4675,7 @@ packages: integrity: sha512-QaQAfY/FdaSwPmm0JnW9AW+t0ocfUYmuso9WmeIMwTRCqcqNxc4GFe5uT0LDLmsYt/wxAeYoGWVaD8sd/Vquig== /@redux-saga/core/1.1.3: dependencies: - '@babel/runtime': 7.14.5 + '@babel/runtime': 7.14.6 '@redux-saga/deferred': 1.1.2 '@redux-saga/delay-p': 1.1.2 '@redux-saga/is': 1.1.2 @@ -5316,11 +4921,11 @@ packages: integrity: sha512-NvXAJ7I5U4CLxv4wL3/Ne9rehJlgnSmQlLIG/z6dg5zm7JIb48LT4IY6GzjlUP5LkjmO9KJ8gJC249uRt2iPBQ== /@storybook/addon-docs/6.2.9_ca82651a63579ef59a2d81093319fd32: dependencies: - '@babel/core': 7.14.3 + '@babel/core': 7.14.5 '@babel/generator': 7.14.5 - '@babel/parser': 7.14.5 - '@babel/plugin-transform-react-jsx': 7.14.5_@babel+core@7.14.3 - '@babel/preset-env': 7.14.5_@babel+core@7.14.3 + '@babel/parser': 7.14.6 + '@babel/plugin-transform-react-jsx': 7.14.5_@babel+core@7.14.5 + '@babel/preset-env': 7.14.5_@babel+core@7.14.5 '@jest/transform': 26.6.2 '@mdx-js/loader': 1.6.22_react@17.0.2 '@mdx-js/mdx': 1.6.22 @@ -5565,27 +5170,27 @@ packages: integrity: sha512-okkA3HAScE9tGnYBrjTOcgzT+L1lRHNoEh3ZfGgh1u/XNEyHGNkj4grvkd6nX7BzRcYQ/l2VkcKCqmOjUnSkVQ== /@storybook/builder-webpack4/6.2.9_2210ceb2ee9eb209454cfe6233d4be41: dependencies: - '@babel/core': 7.14.3 - '@babel/plugin-proposal-class-properties': 7.14.5_@babel+core@7.14.3 - '@babel/plugin-proposal-decorators': 7.14.5_@babel+core@7.14.3 - '@babel/plugin-proposal-export-default-from': 7.14.5_@babel+core@7.14.3 - '@babel/plugin-proposal-nullish-coalescing-operator': 7.14.5_@babel+core@7.14.3 - '@babel/plugin-proposal-object-rest-spread': 7.14.5_@babel+core@7.14.3 - '@babel/plugin-proposal-optional-chaining': 7.14.5_@babel+core@7.14.3 - '@babel/plugin-proposal-private-methods': 7.14.5_@babel+core@7.14.3 - '@babel/plugin-syntax-dynamic-import': 7.8.3_@babel+core@7.14.3 - '@babel/plugin-transform-arrow-functions': 7.14.5_@babel+core@7.14.3 - '@babel/plugin-transform-block-scoping': 7.14.5_@babel+core@7.14.3 - '@babel/plugin-transform-classes': 7.14.5_@babel+core@7.14.3 - '@babel/plugin-transform-destructuring': 7.14.5_@babel+core@7.14.3 - '@babel/plugin-transform-for-of': 7.14.5_@babel+core@7.14.3 - '@babel/plugin-transform-parameters': 7.14.5_@babel+core@7.14.3 - '@babel/plugin-transform-shorthand-properties': 7.14.5_@babel+core@7.14.3 - '@babel/plugin-transform-spread': 7.14.5_@babel+core@7.14.3 - '@babel/plugin-transform-template-literals': 7.14.5_@babel+core@7.14.3 - '@babel/preset-env': 7.14.5_@babel+core@7.14.3 - '@babel/preset-react': 7.14.5_@babel+core@7.14.3 - '@babel/preset-typescript': 7.14.5_@babel+core@7.14.3 + '@babel/core': 7.14.5 + '@babel/plugin-proposal-class-properties': 7.14.5_@babel+core@7.14.5 + '@babel/plugin-proposal-decorators': 7.14.5_@babel+core@7.14.5 + '@babel/plugin-proposal-export-default-from': 7.14.5_@babel+core@7.14.5 + '@babel/plugin-proposal-nullish-coalescing-operator': 7.14.5_@babel+core@7.14.5 + '@babel/plugin-proposal-object-rest-spread': 7.14.5_@babel+core@7.14.5 + '@babel/plugin-proposal-optional-chaining': 7.14.5_@babel+core@7.14.5 + '@babel/plugin-proposal-private-methods': 7.14.5_@babel+core@7.14.5 + '@babel/plugin-syntax-dynamic-import': 7.8.3_@babel+core@7.14.5 + '@babel/plugin-transform-arrow-functions': 7.14.5_@babel+core@7.14.5 + '@babel/plugin-transform-block-scoping': 7.14.5_@babel+core@7.14.5 + '@babel/plugin-transform-classes': 7.14.5_@babel+core@7.14.5 + '@babel/plugin-transform-destructuring': 7.14.5_@babel+core@7.14.5 + '@babel/plugin-transform-for-of': 7.14.5_@babel+core@7.14.5 + '@babel/plugin-transform-parameters': 7.14.5_@babel+core@7.14.5 + '@babel/plugin-transform-shorthand-properties': 7.14.5_@babel+core@7.14.5 + '@babel/plugin-transform-spread': 7.14.6_@babel+core@7.14.5 + '@babel/plugin-transform-template-literals': 7.14.5_@babel+core@7.14.5 + '@babel/preset-env': 7.14.5_@babel+core@7.14.5 + '@babel/preset-react': 7.14.5_@babel+core@7.14.5 + '@babel/preset-typescript': 7.14.5_@babel+core@7.14.5 '@storybook/addons': 6.2.9_react-dom@17.0.2+react@17.0.2 '@storybook/api': 6.2.9_react-dom@17.0.2+react@17.0.2 '@storybook/channel-postmessage': 6.2.9 @@ -5600,12 +5205,12 @@ packages: '@storybook/semver': 7.3.2 '@storybook/theming': 6.2.9_react-dom@17.0.2+react@17.0.2 '@storybook/ui': 6.2.9_7a759d72fcbc11ce03c9de110c21df82 - '@types/node': 14.17.2 + '@types/node': 14.17.3 '@types/webpack': 4.41.29 autoprefixer: 9.8.6 - babel-loader: 8.2.2_105470dfa535e5f605a4a54ef7d81e87 + babel-loader: 8.2.2_802eaa88f56443e8614799ffa818327a babel-plugin-macros: 2.8.0 - babel-plugin-polyfill-corejs3: 0.1.7_@babel+core@7.14.3 + babel-plugin-polyfill-corejs3: 0.1.7_@babel+core@7.14.5 case-sensitive-paths-webpack-plugin: 2.4.0 core-js: 3.14.0 css-loader: 3.6.0_webpack@4.46.0 @@ -5619,9 +5224,9 @@ packages: global: 4.4.0 html-webpack-plugin: 4.5.2_webpack@4.46.0 pnp-webpack-plugin: 1.6.4_typescript@4.3.2 - postcss: 7.0.35 + postcss: 7.0.36 postcss-flexbugs-fixes: 4.2.1 - postcss-loader: 4.3.0_postcss@7.0.35+webpack@4.46.0 + postcss-loader: 4.3.0_postcss@7.0.36+webpack@4.46.0 raw-loader: 4.0.2_webpack@4.46.0 react: 17.0.2 react-dev-utils: 11.0.4 @@ -5810,36 +5415,36 @@ packages: integrity: sha512-jW841J5lCe1Ub5ZMtzYPgCy/OUddFxxVYeHLZyuNxlH5RoiQQxbDpuFlzuZMYGuIzD6eZw+ANE4w5vW/y5oBfA== /@storybook/core-common/6.2.9_a6b6fca0d3ab2e31954006df1d8bec5d: dependencies: - '@babel/core': 7.14.3 - '@babel/plugin-proposal-class-properties': 7.14.5_@babel+core@7.14.3 - '@babel/plugin-proposal-decorators': 7.14.5_@babel+core@7.14.3 - '@babel/plugin-proposal-export-default-from': 7.14.5_@babel+core@7.14.3 - '@babel/plugin-proposal-nullish-coalescing-operator': 7.14.5_@babel+core@7.14.3 - '@babel/plugin-proposal-object-rest-spread': 7.14.5_@babel+core@7.14.3 - '@babel/plugin-proposal-optional-chaining': 7.14.5_@babel+core@7.14.3 - '@babel/plugin-proposal-private-methods': 7.14.5_@babel+core@7.14.3 - '@babel/plugin-syntax-dynamic-import': 7.8.3_@babel+core@7.14.3 - '@babel/plugin-transform-arrow-functions': 7.14.5_@babel+core@7.14.3 - '@babel/plugin-transform-block-scoping': 7.14.5_@babel+core@7.14.3 - '@babel/plugin-transform-classes': 7.14.5_@babel+core@7.14.3 - '@babel/plugin-transform-destructuring': 7.14.5_@babel+core@7.14.3 - '@babel/plugin-transform-for-of': 7.14.5_@babel+core@7.14.3 - '@babel/plugin-transform-parameters': 7.14.5_@babel+core@7.14.3 - '@babel/plugin-transform-shorthand-properties': 7.14.5_@babel+core@7.14.3 - '@babel/plugin-transform-spread': 7.14.5_@babel+core@7.14.3 - '@babel/preset-env': 7.14.5_@babel+core@7.14.3 - '@babel/preset-react': 7.14.5_@babel+core@7.14.3 - '@babel/preset-typescript': 7.14.5_@babel+core@7.14.3 - '@babel/register': 7.14.5_@babel+core@7.14.3 + '@babel/core': 7.14.5 + '@babel/plugin-proposal-class-properties': 7.14.5_@babel+core@7.14.5 + '@babel/plugin-proposal-decorators': 7.14.5_@babel+core@7.14.5 + '@babel/plugin-proposal-export-default-from': 7.14.5_@babel+core@7.14.5 + '@babel/plugin-proposal-nullish-coalescing-operator': 7.14.5_@babel+core@7.14.5 + '@babel/plugin-proposal-object-rest-spread': 7.14.5_@babel+core@7.14.5 + '@babel/plugin-proposal-optional-chaining': 7.14.5_@babel+core@7.14.5 + '@babel/plugin-proposal-private-methods': 7.14.5_@babel+core@7.14.5 + '@babel/plugin-syntax-dynamic-import': 7.8.3_@babel+core@7.14.5 + '@babel/plugin-transform-arrow-functions': 7.14.5_@babel+core@7.14.5 + '@babel/plugin-transform-block-scoping': 7.14.5_@babel+core@7.14.5 + '@babel/plugin-transform-classes': 7.14.5_@babel+core@7.14.5 + '@babel/plugin-transform-destructuring': 7.14.5_@babel+core@7.14.5 + '@babel/plugin-transform-for-of': 7.14.5_@babel+core@7.14.5 + '@babel/plugin-transform-parameters': 7.14.5_@babel+core@7.14.5 + '@babel/plugin-transform-shorthand-properties': 7.14.5_@babel+core@7.14.5 + '@babel/plugin-transform-spread': 7.14.6_@babel+core@7.14.5 + '@babel/preset-env': 7.14.5_@babel+core@7.14.5 + '@babel/preset-react': 7.14.5_@babel+core@7.14.5 + '@babel/preset-typescript': 7.14.5_@babel+core@7.14.5 + '@babel/register': 7.14.5_@babel+core@7.14.5 '@storybook/node-logger': 6.2.9 '@storybook/semver': 7.3.2 '@types/glob-base': 0.3.0 '@types/micromatch': 4.0.1 - '@types/node': 14.17.2 + '@types/node': 14.17.3 '@types/pretty-hrtime': 1.0.0 - babel-loader: 8.2.2_105470dfa535e5f605a4a54ef7d81e87 + babel-loader: 8.2.2_802eaa88f56443e8614799ffa818327a babel-plugin-macros: 3.1.0 - babel-plugin-polyfill-corejs3: 0.1.7_@babel+core@7.14.3 + babel-plugin-polyfill-corejs3: 0.1.7_@babel+core@7.14.5 chalk: 4.1.1 core-js: 3.14.0 express: 4.17.1 @@ -5880,9 +5485,9 @@ packages: integrity: sha512-xQmbX/oYQK1QsAGN8hriXX5SUKOoTUe3L4dVaVHxJqy7MReRWJpprJmCpbAPJzWS6WCbDFfCM5kVEexHLOzJlQ== /@storybook/core-server/6.2.9_2210ceb2ee9eb209454cfe6233d4be41: dependencies: - '@babel/core': 7.14.3 - '@babel/plugin-transform-template-literals': 7.14.5_@babel+core@7.14.3 - '@babel/preset-react': 7.14.5_@babel+core@7.14.3 + '@babel/core': 7.14.5 + '@babel/plugin-transform-template-literals': 7.14.5_@babel+core@7.14.5 + '@babel/preset-react': 7.14.5_@babel+core@7.14.5 '@storybook/addons': 6.2.9_react-dom@17.0.2+react@17.0.2 '@storybook/builder-webpack4': 6.2.9_2210ceb2ee9eb209454cfe6233d4be41 '@storybook/core-client': 6.2.9_2c36a9d81f5222d356e4427e835e8463 @@ -5891,12 +5496,12 @@ packages: '@storybook/semver': 7.3.2 '@storybook/theming': 6.2.9_react-dom@17.0.2+react@17.0.2 '@storybook/ui': 6.2.9_7a759d72fcbc11ce03c9de110c21df82 - '@types/node': 14.17.2 + '@types/node': 14.17.3 '@types/node-fetch': 2.5.10 '@types/pretty-hrtime': 1.0.0 '@types/webpack': 4.41.29 airbnb-js-shims: 2.2.1 - babel-loader: 8.2.2_105470dfa535e5f605a4a54ef7d81e87 + babel-loader: 8.2.2_802eaa88f56443e8614799ffa818327a better-opn: 2.1.1 boxen: 4.2.0 case-sensitive-paths-webpack-plugin: 2.4.0 @@ -6262,7 +5867,7 @@ packages: integrity: sha512-cAaR/CAiZRB8GP32N+1jocovUtvlj0+e65TB50/6Lcime+EA49m/8l+P2ko+XPJ4dw3xaPS3jOL4F2X4KWxoeQ== /@svgr/plugin-jsx/5.5.0: dependencies: - '@babel/core': 7.14.3 + '@babel/core': 7.14.5 '@svgr/babel-preset': 5.5.0 '@svgr/hast-util-to-babel-ast': 5.5.0 svg-parser: 2.0.4 @@ -6283,10 +5888,10 @@ packages: integrity: sha512-r5swKk46GuQl4RrVejVwpeeJaydoxkdwkM1mBKOgJLBUJPGaLci6ylg/IjhrRsREKDkr4kbMWdgOtbXEh0fyLQ== /@svgr/webpack/5.5.0: dependencies: - '@babel/core': 7.14.3 - '@babel/plugin-transform-react-constant-elements': 7.14.5_@babel+core@7.14.3 - '@babel/preset-env': 7.14.5_@babel+core@7.14.3 - '@babel/preset-react': 7.14.5_@babel+core@7.14.3 + '@babel/core': 7.14.5 + '@babel/plugin-transform-react-constant-elements': 7.14.5_@babel+core@7.14.5 + '@babel/preset-env': 7.14.5_@babel+core@7.14.5 + '@babel/preset-react': 7.14.5_@babel+core@7.14.5 '@svgr/core': 5.5.0 '@svgr/plugin-jsx': 5.5.0 '@svgr/plugin-svgo': 5.5.0 @@ -6307,7 +5912,7 @@ packages: /@testing-library/dom/7.31.2: dependencies: '@babel/code-frame': 7.14.5 - '@babel/runtime': 7.14.5 + '@babel/runtime': 7.14.6 '@types/aria-query': 4.2.1 aria-query: 4.2.2 chalk: 4.1.1 @@ -6321,7 +5926,7 @@ packages: integrity: sha512-3UqjCpey6HiTZT92vODYLPxTBWlM8ZOOjr3LX5F37/VRipW2M1kX6I/Cm4VXzteZqfGfagg8yXywpcOgQBlNsQ== /@testing-library/react/11.2.7_react-dom@17.0.2+react@17.0.2: dependencies: - '@babel/runtime': 7.14.5 + '@babel/runtime': 7.14.6 '@testing-library/dom': 7.31.2 react: 17.0.2 react-dom: 17.0.2_react@17.0.2 @@ -6357,7 +5962,7 @@ packages: '@textile/security': 0.8.1 '@textile/threads-id': 0.5.1 abort-controller: 3.0.0 - cids: 1.1.6 + cids: 1.1.7 it-drain: 1.0.4 loglevel: 1.7.1 paramap-it: 0.1.1 @@ -6417,9 +6022,9 @@ packages: dependencies: '@improbable-eng/grpc-web': 0.13.0 '@types/ws': 7.4.4 - isomorphic-ws: 4.0.1_ws@7.4.6 + isomorphic-ws: 4.0.1_ws@7.5.0 loglevel: 1.7.1 - ws: 7.4.6 + ws: 7.5.0 dev: false optional: true resolution: @@ -6587,22 +6192,6 @@ packages: dev: false resolution: integrity: sha512-1vnJYup1KDlXWsDbEinMFhWN1VyqRWxWzDN4UhdfqCUXrEWDBpGmKeEPLwwKYuUBY43TDPpnwq1/cGGN0PjOeA== - /@truffle/codec/0.10.9: - dependencies: - big.js: 5.2.2 - bn.js: 5.2.0 - cbor: 5.2.0 - debug: 4.3.1 - lodash.clonedeep: 4.5.0 - lodash.escaperegexp: 4.1.2 - lodash.partition: 4.6.0 - lodash.sum: 4.0.2 - semver: 7.3.5 - utf8: 3.0.0 - web3-utils: 1.3.6 - dev: false - resolution: - integrity: sha512-+xBcn1mTAqBhVaFULkMC+pJnUp3prL9QZtE5I4XhlCar3QLkSGR9Oy+Bm5qZwH72rctBRD/lGp2ezUo/oFc2MQ== /@truffle/codec/0.11.0: dependencies: big.js: 5.2.2 @@ -6642,15 +6231,15 @@ packages: dev: false resolution: integrity: sha512-2gvu6gxJtbbI67H2Bwh2rBuej+1uCV3z4zKFzQZP00hjNoL+QfybrmBcOVB88PflBeEB+oUXuwQfDoKX3TXlnQ== - /@truffle/contract/4.3.19: + /@truffle/contract/4.3.20: dependencies: + '@ensdomains/ensjs': 2.0.1 '@truffle/blockchain-utils': 0.0.30 '@truffle/contract-schema': 3.4.1 - '@truffle/debug-utils': 5.0.19 + '@truffle/debug-utils': 5.1.0 '@truffle/error': 0.0.14 '@truffle/interface-adapter': 0.5.0 bignumber.js: 7.2.1 - ethereum-ens: 0.8.0 ethers: 4.0.48 web3: 1.3.6 web3-core-helpers: 1.3.6 @@ -6659,7 +6248,7 @@ packages: web3-utils: 1.3.6 dev: false resolution: - integrity: sha512-asBwoxUePLwNAuYfHO/SvyZyqFQ9QMeUieJ6PXD9DBrUdNpjgJvk+WHYnXH4bWHgHakbTpL1MEBa1qmcAL+LMw== + integrity: sha512-kX3l3nRBGqHPfIkcmdVQDis3T8sR2Rt5H/mFs4A6GRxRCw5oj92J7YFkM5J8BY698GsmD8qAGUKFdUwHLcOPGA== /@truffle/db/0.5.15_@types+node@14.17.3+react@17.0.2: dependencies: '@truffle/abi-utils': 0.2.1 @@ -6688,18 +6277,18 @@ packages: react: '*' resolution: integrity: sha512-nA+gnWLX0lMFcZVBL4hJiO+YlI+AzQHO1BibneX4Sj/XCvwW+IGKp+koPYKE91cJKyRfdrtYPdsj3VwW/KkhqA== - /@truffle/debug-utils/5.0.19: + /@truffle/debug-utils/5.1.0: dependencies: - '@truffle/codec': 0.10.9 + '@truffle/codec': 0.11.0 '@trufflesuite/chromafi': 2.2.2 bn.js: 5.2.0 chalk: 2.4.2 debug: 4.3.1 highlight.js: 10.7.3 - highlightjs-solidity: 1.1.0 + highlightjs-solidity: 1.1.1 dev: false resolution: - integrity: sha512-wCF5fwyJTHGBwQD+m8npRCrUIgSPw9jRiZlvyuE+TDcVNBpV4A1NcdsTJR/E5lAViLDTp9lpelsgA/Mw65kU+w== + integrity: sha512-TbGsML+jmFEPD9gx8nCueRe2b3Zz6pOATH9QYeEnyUIklySa7kRPw03ifecDyXl1/XCMDb+7+PhYoF0zeMQ4gA== /@truffle/debugger/9.1.0: dependencies: '@truffle/abi-utils': 0.2.1 @@ -6759,11 +6348,11 @@ packages: dependencies: '@textile/hub': 6.1.2 '@truffle/preserve': 0.2.2 - cids: 1.1.6 + cids: 1.1.7 ipfs-http-client: 48.2.2 - isomorphic-ws: 4.0.1_ws@7.4.6 + isomorphic-ws: 4.0.1_ws@7.5.0 iter-tools: 7.1.3 - ws: 7.4.6 + ws: 7.5.0 dev: false optional: true resolution: @@ -6771,7 +6360,7 @@ packages: /@truffle/preserve-to-filecoin/0.2.2: dependencies: '@truffle/preserve': 0.2.2 - cids: 1.1.6 + cids: 1.1.7 delay: 5.0.0 filecoin.js: 0.0.5-alpha node-fetch: 2.6.1 @@ -6782,7 +6371,7 @@ packages: /@truffle/preserve-to-ipfs/0.2.2: dependencies: '@truffle/preserve': 0.2.2 - cids: 1.1.6 + cids: 1.1.7 ipfs-http-client: 48.2.2 iter-tools: 7.1.3 dev: false @@ -6886,7 +6475,7 @@ packages: integrity: sha512-qZLoYeXSTgQuK1h7QQS16hqLGdmqtRmN8w/rl3Au/l5x/zkHx+a4VHrHyBsi1I1vtK2oBHxSzKIu0R5p6spdOA== /@types/babel__core/7.1.14: dependencies: - '@babel/parser': 7.14.5 + '@babel/parser': 7.14.6 '@babel/types': 7.14.5 '@types/babel__generator': 7.6.2 '@types/babel__template': 7.4.0 @@ -6902,7 +6491,7 @@ packages: integrity: sha512-MdSJnBjl+bdwkLskZ3NGFp9YcXGx5ggLpQQPqtgakVhsWK0hTtNYhjpZLlWQTviGTvF8at+Bvli3jV7faPdgeQ== /@types/babel__template/7.4.0: dependencies: - '@babel/parser': 7.14.5 + '@babel/parser': 7.14.6 '@babel/types': 7.14.5 dev: false resolution: @@ -6925,20 +6514,20 @@ packages: integrity: sha512-LiMQ6EOPob/4yUL66SZzu6Yh77cbzJFYll+ZfaPiPPFswtIlA/Fs1MzdKYA7JApHU49zQTbJGX3PDmCpIdDBRQ== /@types/bn.js/4.11.6: dependencies: - '@types/node': 14.17.2 + '@types/node': 14.17.3 dev: false resolution: integrity: sha512-pqr857jrp2kPuO9uRjZ3PwnJTjoQy+fcdxvBTvHm6dkmEL9q+hDD/2j/0ELOBPtPnS8LjCX0gI9nbl8lVkadpg== /@types/bn.js/5.1.0: dependencies: - '@types/node': 14.17.2 + '@types/node': 14.17.3 dev: false resolution: integrity: sha512-QSSVYj7pYFN49kW77o2s9xTCwZ8F2xLbjLLSEVh8D2F4JUhZtPAGOFLTD+ffqksBx/u4cE/KImFjyhqCjn/LIA== /@types/body-parser/1.19.0: dependencies: '@types/connect': 3.4.34 - '@types/node': 14.17.2 + '@types/node': 14.17.3 dev: false resolution: integrity: sha512-W98JrE0j2K78swW4ukqMleo8R7h/pFETjM2DQ90MF6XK2i4LO4W3gQ71Lt4w3bfm2EvVSyWHplECvB5sK22yFQ== @@ -6948,7 +6537,7 @@ packages: integrity: sha512-TbH79tcyi9FHwbyboOKeRachRq63mSuWYXOflsNO9ZyE5ClQ/JaozNKl+aWUq87qPNsXasXxi2AbgfwIJ+8GQw== /@types/cbor/2.0.0: dependencies: - '@types/node': 14.17.2 + '@types/node': 14.17.3 dev: false resolution: integrity: sha1-xievwu4i8j8jN/7LNGKKT5fGr7s= @@ -6958,7 +6547,7 @@ packages: integrity: sha512-rYff6FI+ZTKAPkJUoyz7Udq3GaoDZnxYDEvdEdFZASiA7PoErltHezDishqQiSDWrGxvxmplH304jyzQmjp0AQ== /@types/cheerio/0.22.29: dependencies: - '@types/node': 14.17.2 + '@types/node': 14.17.3 dev: false resolution: integrity: sha512-rNX1PsrDPxiNiyLnRKiW2NXHJFHqx0Fl3J2WsZq0MTBspa/FgwlqhXJE2crIcc+/2IglLHtSWw7g053oUR8fOg== @@ -6974,7 +6563,7 @@ packages: integrity: sha512-rr+OQyAjxze7GgWrSaJwydHStIhHq2lvY3BOC2Mj7KnzI7XK0Uw1TOOdI9lDoajEbSWLiYgoo4f1R51erQfhPQ== /@types/connect/3.4.34: dependencies: - '@types/node': 14.17.2 + '@types/node': 14.17.3 dev: false resolution: integrity: sha512-ePPA/JuI+X0vb+gSWlPKOY0NdNAie/rPUqX2GUPpbZwiKTkSPhjXWuee47E4MtE54QVzGCQMQkAL6JhV2E1+cQ== @@ -7003,14 +6592,14 @@ packages: integrity: sha512-C7srjHiVG3Ey1nR6d511dtDkCEjxuN9W1HWAEjGq8kpcwmNM6JJkpC0xvabM7BXTG2wDq8Eu33iH9aQKa7IvLQ== /@types/cron/1.7.2: dependencies: - '@types/node': 14.17.2 + '@types/node': 14.17.3 moment: 2.29.1 dev: false resolution: integrity: sha512-AEpNLRcsVSc5AdseJKNHpz0d4e8+ow+abTaC0fKDbAU86rF1evoFF0oC2fV9FdqtfVXkG2LKshpLTJCFOpyvTg== /@types/dotenv/6.1.1: dependencies: - '@types/node': 14.17.2 + '@types/node': 14.17.3 dev: false resolution: integrity: sha512-ftQl3DtBvqHl9L16tpqqzA4YzCSXZfi7g8cQceTz5rOlYtk/IZbFjAv3mLOQlNIgOaylCQWQoBdDQHPgEBJPHg== @@ -7029,7 +6618,7 @@ packages: /@types/enzyme/3.10.8: dependencies: '@types/cheerio': 0.22.29 - '@types/react': 17.0.9 + '@types/react': 17.0.11 dev: false resolution: integrity: sha512-vlOuzqsTHxog6PV79+tvOHFb6hq4QZKMq1lLD9MaWD1oec2lHTKndn76XOpSwCA0oFTaIbKVPrgM3k78Jjd16g== @@ -7057,7 +6646,7 @@ packages: integrity: sha512-c5ciR06jK8u9BstrmJyO97m+klJrrhCf9u3rLu3DEAJBirxRqSCvDQoYKmxuYwQI5SZChAWu+tq9oVlGRuzPAg== /@types/eth-sig-util/2.1.0: dependencies: - '@types/node': 14.17.2 + '@types/node': 14.17.3 dev: false resolution: integrity: sha512-GWX0s/FFGWl6lO2nbd9nq3fh1x47vmLL/p4yDG1+VgCqrip1ErQrbHlTZThtEc6JrcmwCKB2H1de32Hdo3JdJg== @@ -7072,7 +6661,7 @@ packages: integrity: sha512-DJOSHzX7pCiSElWaGR8kCprwibCB/3yW6vcT8VG3P0SJjnv19gnWG/AZMfM60Xj/YJIp/YCaDHyvzsFVeniARA== /@types/express-serve-static-core/4.17.21: dependencies: - '@types/node': 14.17.2 + '@types/node': 14.17.3 '@types/qs': 6.9.6 '@types/range-parser': 1.2.3 dev: false @@ -7081,7 +6670,7 @@ packages: /@types/express/4.17.11: dependencies: '@types/body-parser': 1.19.0 - '@types/express-serve-static-core': 4.17.21 + '@types/express-serve-static-core': 4.17.19 '@types/qs': 6.9.6 '@types/serve-static': 1.13.9 dev: false @@ -7106,7 +6695,7 @@ packages: integrity: sha512-FKVPOCFbhCvZxpVAMhdBdTfVfXUpsh15wFHgqOKxh9N9vzWZVuWCSijZ5T4U34XYNnuj2oduh6xcs1i+LPI+BQ== /@types/fs-extra/7.0.0: dependencies: - '@types/node': 14.17.2 + '@types/node': 14.17.3 dev: false resolution: integrity: sha512-ndoMMbGyuToTy4qB6Lex/inR98nPiNHacsgMPvy+zqMLgSxbt8VtWpDArpGp69h1fEDQHn1KB+9DWD++wgbwYA== @@ -7117,7 +6706,7 @@ packages: /@types/glob/7.1.3: dependencies: '@types/minimatch': 3.0.4 - '@types/node': 14.17.2 + '@types/node': 14.17.3 dev: false resolution: integrity: sha512-SEYeGAIQIQX8NN6LDKprLjbrd5dARM5EXsd8GI/A5l0apYI1fGMWgPHSe4ZKL4eozlAyI+doUE9XbYS4xCkQ1w== @@ -7128,7 +6717,7 @@ packages: integrity: sha512-ubeqvw7sl6CdgeiIilsXB2jIFoD/D0F+/LIEp7xEBEXRNtDJcf05FRINybsJtL7GlkWOUVn6gJs2W9OF+xI6lg== /@types/graceful-fs/4.1.5: dependencies: - '@types/node': 14.17.2 + '@types/node': 14.17.3 dev: false resolution: integrity: sha512-anKkLmZZ+xm4p8JWBf4hElkM4XR+EZeA2M9BAkkTldmcyDY4mbdIJnRghDJH3Ov5ooY7/UAoENtmdMSkaAd7Cw== @@ -7144,7 +6733,7 @@ packages: integrity: sha512-S78QIYirQcUoo6UJZx9CSP0O2ix9IaeAXwQi26Rhr/+mg7qqPy8TzaxHSUut7eGjL8WmLccT7/MXf304WjqHcA== /@types/hoist-non-react-statics/3.3.1: dependencies: - '@types/react': 17.0.9 + '@types/react': 17.0.11 hoist-non-react-statics: 3.3.2 dev: false resolution: @@ -7207,13 +6796,13 @@ packages: integrity: sha1-7ihweulOEdK4J7y+UnC86n8+ce4= /@types/jsonwebtoken/8.5.0: dependencies: - '@types/node': 14.17.2 + '@types/node': 14.17.3 dev: false resolution: integrity: sha512-9bVao7LvyorRGZCw0VmH/dr7Og+NdjYSsKAxB43OQoComFbBgsEpoR9JW6+qSq/ogwVBg8GI2MfAlk4SYI4OLg== /@types/jsonwebtoken/8.5.1: dependencies: - '@types/node': 14.17.2 + '@types/node': 14.17.3 dev: false resolution: integrity: sha512-rNAPdomlIUX0i0cg2+I+Q1wOUr531zHBQ+cV/28PJ39bSPKjahatZZ2LMuhiguETkCgLVzfruw/ZvNMNkKoSzw== @@ -7253,7 +6842,7 @@ packages: integrity: sha512-5tXH6Bx/kNGd3MgffdmP4dy2Z+G4eaXw0SE81Tq3BNadtnMR5/ySMzX4SLEzHJzSmPNn4HIdpQsBvXMUykr58w== /@types/markdown-to-jsx/6.11.3: dependencies: - '@types/react': 17.0.9 + '@types/react': 17.0.11 dev: false resolution: integrity: sha512-30nFYpceM/ZEvhGiqWjm5quLUxNeld0HCzJEXMZZDpq53FPkS85mTwkWtCXzCqq8s5JYLgM5W392a02xn8Bdaw== @@ -7279,7 +6868,7 @@ packages: integrity: sha512-1z8k4wzFnNjVK/tlxvrWuK5WMt6mydWWP7+zvH5eFep4oj+UkrfiJTRtjCeBXNpwaA/FYqqtb4/QS4ianFpIRA== /@types/mkdirp/0.5.2: dependencies: - '@types/node': 14.17.2 + '@types/node': 14.17.3 dev: false resolution: integrity: sha512-U5icWpv7YnZYGsN4/cmh3WD2onMY0aJIiTE6+51TwJCttdHvtCYmkBNOobHlXwrJRL0nkH9jH4kD+1FAdMN4Tg== @@ -7305,7 +6894,7 @@ packages: integrity: sha512-9b/0a8JyrR0r2nQhL73JR86obWL7cogfX12augvlrvcpciCo/hkvEsgu80Z4S2g2DHGVXHr8pUIi1VhqFJ8Ufw== /@types/node-fetch/2.5.10: dependencies: - '@types/node': 14.17.2 + '@types/node': 14.17.3 form-data: 3.0.1 dev: false resolution: @@ -7328,17 +6917,13 @@ packages: dev: false resolution: integrity: sha512-F6S4Chv4JicJmyrwlDkxUdGNSplsQdGwp1A0AJloEVDirWdZOAiRHhovDlsFkKUrquUXhz1imJhXHsf59auyAg== - /@types/node/14.17.2: - dev: false - resolution: - integrity: sha512-sld7b/xmFum66AAKuz/rp/CUO8+98fMpyQ3SBfzzBNGMd/1iHBTAg9oyAvcYlAj46bpc74r91jSw2iFdnx29nw== /@types/node/14.17.3: dev: false resolution: integrity: sha512-e6ZowgGJmTuXa3GyaPbTGxX17tnThl2aSSizrFthQ7m9uLGZBXiGhgE55cjRZTF5kjZvYn9EOPOMljdjwbflxw== /@types/nodemailer/6.4.2: dependencies: - '@types/node': 14.17.2 + '@types/node': 14.17.3 dev: false resolution: integrity: sha512-yhsqg5Xbr8aWdwjFS3QjkniW5/tLpWXtOYQcJdo9qE3DolBxsKzgRCQrteaMY0hos8MklJNSEsMqDpZynGzMNg== @@ -7348,7 +6933,7 @@ packages: integrity: sha512-f5j5b/Gf71L+dbqxIpQ4Z2WlmI/mPJ0fOkGGmFgtb6sAu97EPczzbS3/tJKxmcYDj55OX6ssqwDAWOHIYDRDGA== /@types/npm/2.0.31: dependencies: - '@types/node': 14.17.2 + '@types/node': 14.17.3 dev: false resolution: integrity: sha512-v4JpUx83wVGItleYsnYeZrM8NTLSnYDfTE/iGm4owy6zZPNFNmnsvvrxiYtG3cVHt/XutzTjUBQ9Bh8bnvEkCw== @@ -7399,13 +6984,13 @@ packages: integrity: sha512-9oKfrJXuAxvyxdrtMCxKkHgmd6DMO8NDOLvMJ1LvIWd6/xP+i81PAkpTaEca7VhJX9S009RciwZL/j6dsLsHrA== /@types/pbkdf2/3.1.0: dependencies: - '@types/node': 14.17.2 + '@types/node': 14.17.3 dev: false resolution: integrity: sha512-Cf63Rv7jCQ0LaL8tNXmEyqTHuIJxRdlS5vMh1mj5voN4+QFhVZnlZruezqpWYDiJ8UTzhP0VmeLXCmBk66YrMQ== /@types/pg/7.14.11: dependencies: - '@types/node': 14.17.2 + '@types/node': 14.17.3 pg-protocol: 1.5.0 pg-types: 2.2.0 dev: false @@ -7415,10 +7000,10 @@ packages: dev: false resolution: integrity: sha512-5qOlnZscTn4xxM5MeGXAMOsIOIKIbh9e85zJWfBRVPlRMEVawzoPhINYbRGkBZCI8LxvBe7tJCdWiarA99OZfQ== - /@types/prettier/2.2.3: + /@types/prettier/2.3.0: dev: false resolution: - integrity: sha512-PijRCG/K3s3w1We6ynUKdxEc5AcuuH3NBmMDP8uvKVp6X43UY7NQlTzczakXP3DJR0F4dfNQIGjU2cUeRYs2AA== + integrity: sha512-hkc1DATxFLQo4VxPDpMH1gCkPpBbpOoJ/4nhuXw4n63/0R6bCpQECj4+K226UJ4JO/eJQz+1mC2I7JsWanAdQw== /@types/pretty-hrtime/1.0.0: dev: false resolution: @@ -7446,7 +7031,7 @@ packages: integrity: sha512-ewFXqrQHlFsgc09MK5jP5iR7vumV/BYayNC6PgJO2LPe8vrnNFyjQjSppfEngITi0qvfKtzFvgKymGheFM9UOA== /@types/reach__router/1.3.8: dependencies: - '@types/react': 17.0.9 + '@types/react': 17.0.11 dev: false resolution: integrity: sha512-cjjT0FPdwuvhLWpCDt2WCh4sdBqNzJe3XhxXmRQGsY3IvT58M8sE4E7A0QaFYuJs3ar+McSJTiJxdYKWAXbBhw== @@ -7459,7 +7044,7 @@ packages: /@types/react-redux/7.1.16: dependencies: '@types/hoist-non-react-statics': 3.3.1 - '@types/react': 17.0.9 + '@types/react': 17.0.11 hoist-non-react-statics: 3.3.2 redux: 4.1.0 dev: false @@ -7468,7 +7053,7 @@ packages: /@types/react-router-dom/5.1.7: dependencies: '@types/history': 4.7.8 - '@types/react': 17.0.9 + '@types/react': 17.0.11 '@types/react-router': 5.1.15 dev: false resolution: @@ -7476,19 +7061,19 @@ packages: /@types/react-router/5.1.15: dependencies: '@types/history': 4.7.8 - '@types/react': 17.0.9 + '@types/react': 17.0.11 dev: false resolution: integrity: sha512-z3UlMG/x91SFEVmmvykk9FLTliDvfdIUky4k2rCfXWQ0NKbrP8o9BTCaCTPuYsB8gDkUnUmkcA2vYlm2DR+HAA== /@types/react-syntax-highlighter/11.0.5: dependencies: - '@types/react': 17.0.9 + '@types/react': 17.0.11 dev: false resolution: integrity: sha512-VIOi9i2Oj5XsmWWoB72p3KlZoEbdRAcechJa8Ztebw7bDl2YmR+odxIqhtJGp1q2EozHs02US+gzxJ9nuf56qg== /@types/react-transition-group/4.4.1: dependencies: - '@types/react': 17.0.9 + '@types/react': 17.0.11 dev: false resolution: integrity: sha512-vIo69qKKcYoJ8wKCJjwSgCTM+z3chw3g18dkrDfVX665tMH7tmbDxEAnPdey4gTlwZz5QuHGzd+hul0OVZDqqQ== @@ -7500,14 +7085,6 @@ packages: dev: false resolution: integrity: sha512-yFRQbD+whVonItSk7ZzP/L+gPTJVBkL/7shLEF+i9GC/1cV3JmUxEQz6+9ylhUpWSDuqo1N9qEvqS6vTj4USUA== - /@types/react/17.0.9: - dependencies: - '@types/prop-types': 15.7.3 - '@types/scheduler': 0.16.1 - csstype: 3.0.8 - dev: false - resolution: - integrity: sha512-2Cw7FvevpJxQrCb+k5t6GH1KIvmadj5uBbjPaLlJB/nZWUj56e1ZqcD6zsoMFB47MsJUTFl9RJ132A7hb3QFJA== /@types/redux-logger/3.0.8: dependencies: redux: 4.1.0 @@ -7516,7 +7093,7 @@ packages: integrity: sha512-zM+cxiSw6nZtRbxpVp9SE3x/X77Z7e7YAfHD1NkxJyJbAGSXJGF0E9aqajZfPOa/sTYnuwutmlCldveExuCeLw== /@types/resolve/0.0.8: dependencies: - '@types/node': 14.17.2 + '@types/node': 14.17.3 dev: false resolution: integrity: sha512-auApPaJf3NPfe18hSoJkp8EbZzer2ISk7o8mCC3M9he/a04+gbMF97NkpD2S8riMGvm4BMRI59/SZQSaLTKpsQ== @@ -7526,7 +7103,7 @@ packages: integrity: sha512-EaCxbanVeyxDRTQBkdLb3Bvl/HK7PBK6UJjsSixB0iHKoWxE5uu2Q/DgtpOhPIojN0Zl1whvOd7PoHs2P0s5eA== /@types/secp256k1/4.0.2: dependencies: - '@types/node': 14.17.2 + '@types/node': 14.17.3 dev: false resolution: integrity: sha512-QMg+9v0bbNJ2peLuHRWxzmy0HRJIG6gFZNhaRSp7S3ggSbCCxiqQB2/ybvhXyhHOCequpNkrx7OavNhrWOsW0A== @@ -7537,7 +7114,7 @@ packages: /@types/serve-static/1.13.9: dependencies: '@types/mime': 1.3.2 - '@types/node': 14.17.2 + '@types/node': 14.17.3 dev: false resolution: integrity: sha512-ZFqF6qa48XsPdjXV5Gsz0Zqmux2PerNd3a/ktL45mHpa19cuMi/cL8tcxdAx497yRh+QtYPuofjT9oWw9P7nkA== @@ -7576,14 +7153,14 @@ packages: integrity: sha512-RJJrrySY7A8havqpGObOB4W92QXKJo63/jFLLgpvOtsGUqbQZ9Sbgl35KMm1DjC6j7AvmmU2bIno+3IyEaemaw== /@types/styled-jsx/2.2.8: dependencies: - '@types/react': 17.0.9 + '@types/react': 17.0.11 dev: false resolution: integrity: sha512-Yjye9VwMdYeXfS71ihueWRSxrruuXTwKCbzue4+5b2rjnQ//AtyM7myZ1BEhNhBQ/nL/RE7bdToUoLln2miKvg== /@types/superagent/4.1.11: dependencies: '@types/cookiejar': 2.1.2 - '@types/node': 14.17.2 + '@types/node': 14.17.3 dev: false resolution: integrity: sha512-cZkWBXZI+jESnUTp8RDGBmk1Zn2MkScP4V5bjD7DyqB7L0WNWpblh4KX5K/6aTqxFZMhfo1bhi2cwoAEDVBBJw== @@ -7639,7 +7216,7 @@ packages: integrity: sha512-Fx+NpfOO0CpeYX2g9bkvX8O5qh9wrU1sOF4g8sft4Mu7z+qfe387YlyY8w8daDyDsKY5vUxM0yxkAYnbkRbZEw== /@types/webpack-sources/2.1.0: dependencies: - '@types/node': 14.17.2 + '@types/node': 14.17.3 '@types/source-list-map': 0.1.2 source-map: 0.7.3 dev: false @@ -7647,7 +7224,7 @@ packages: integrity: sha512-LXn/oYIpBeucgP1EIJbKQ2/4ZmpvRl+dlrFdX7+94SKRUV3Evy3FsfMZY318vGhkWUS5MPhtOM3w1/hCOAOXcg== /@types/webpack/4.41.29: dependencies: - '@types/node': 14.17.2 + '@types/node': 14.17.3 '@types/tapable': 1.0.7 '@types/uglify-js': 3.13.0 '@types/webpack-sources': 2.1.0 @@ -7658,13 +7235,13 @@ packages: integrity: sha512-6pLaORaVNZxiB3FSHbyBiWM7QdazAWda1zvAq4SbZObZqHSDbWLi62iFdblVea6SK9eyBIVp5yHhKt/yNQdR7Q== /@types/websocket/1.0.2: dependencies: - '@types/node': 14.17.2 + '@types/node': 14.17.3 dev: false resolution: integrity: sha512-B5m9aq7cbbD/5/jThEr33nUY8WEfVi6A2YKCTOvw5Ldy7mtsOkqRvGjnzy6g7iMMDsgu7xREuCzqATLDLQVKcQ== /@types/ws/7.4.4: dependencies: - '@types/node': 14.17.2 + '@types/node': 14.17.3 dev: false resolution: integrity: sha512-d/7W23JAXPodQNbOZNXvl2K+bqAQrCMwlh/nuQsPSQk6Fq0opHoPrUw43aHsvSbIiQPr8Of2hkFbnz1XBFVyZQ== @@ -7705,12 +7282,12 @@ packages: dev: false resolution: integrity: sha512-HrCIVMLjE1MOozVoD86622S7aunluLb2PJdPfb3nYiEtohm8mIB/vyv0Fd37AdeMFrTUQXEunw78YloMA3Qilg== - /@typescript-eslint/experimental-utils/4.26.1_typescript@4.3.2: + /@typescript-eslint/experimental-utils/4.27.0_typescript@4.3.2: dependencies: '@types/json-schema': 7.0.7 - '@typescript-eslint/scope-manager': 4.26.1 - '@typescript-eslint/types': 4.26.1 - '@typescript-eslint/typescript-estree': 4.26.1_typescript@4.3.2 + '@typescript-eslint/scope-manager': 4.27.0 + '@typescript-eslint/types': 4.27.0 + '@typescript-eslint/typescript-estree': 4.27.0_typescript@4.3.2 eslint-scope: 5.1.1 eslint-utils: 3.0.0 dev: false @@ -7720,28 +7297,28 @@ packages: eslint: '*' typescript: '*' resolution: - integrity: sha512-sQHBugRhrXzRCs9PaGg6rowie4i8s/iD/DpTB+EXte8OMDfdCG5TvO73XlO9Wc/zi0uyN4qOmX9hIjQEyhnbmQ== - /@typescript-eslint/scope-manager/4.26.1: + integrity: sha512-n5NlbnmzT2MXlyT+Y0Jf0gsmAQzCnQSWXKy4RGSXVStjDvS5we9IWbh7qRVKdGcxT0WYlgcCYUK/HRg7xFhvjQ== + /@typescript-eslint/scope-manager/4.27.0: dependencies: - '@typescript-eslint/types': 4.26.1 - '@typescript-eslint/visitor-keys': 4.26.1 + '@typescript-eslint/types': 4.27.0 + '@typescript-eslint/visitor-keys': 4.27.0 dev: false engines: node: ^8.10.0 || ^10.13.0 || >=11.10.1 resolution: - integrity: sha512-TW1X2p62FQ8Rlne+WEShyd7ac2LA6o27S9i131W4NwDSfyeVlQWhw8ylldNNS8JG6oJB9Ha9Xyc+IUcqipvheQ== - /@typescript-eslint/types/4.26.1: + integrity: sha512-DY73jK6SEH6UDdzc6maF19AHQJBFVRf6fgAXHPXCGEmpqD4vYgPEzqpFz1lf/daSbOcMpPPj9tyXXDPW2XReAw== + /@typescript-eslint/types/4.27.0: dev: false engines: node: ^8.10.0 || ^10.13.0 || >=11.10.1 resolution: - integrity: sha512-STyMPxR3cS+LaNvS8yK15rb8Y0iL0tFXq0uyl6gY45glyI7w0CsyqyEXl/Fa0JlQy+pVANeK3sbwPneCbWE7yg== - /@typescript-eslint/typescript-estree/4.26.1_typescript@4.3.2: + integrity: sha512-I4ps3SCPFCKclRcvnsVA/7sWzh7naaM/b4pBO2hVxnM3wrU51Lveybdw5WoIktU/V4KfXrTt94V9b065b/0+wA== + /@typescript-eslint/typescript-estree/4.27.0_typescript@4.3.2: dependencies: - '@typescript-eslint/types': 4.26.1 - '@typescript-eslint/visitor-keys': 4.26.1 + '@typescript-eslint/types': 4.27.0 + '@typescript-eslint/visitor-keys': 4.27.0 debug: 4.3.1 - globby: 11.0.3 + globby: 11.0.4 is-glob: 4.0.1 semver: 7.3.5 tsutils: 3.21.0_typescript@4.3.2 @@ -7755,16 +7332,16 @@ packages: typescript: optional: true resolution: - integrity: sha512-l3ZXob+h0NQzz80lBGaykdScYaiEbFqznEs99uwzm8fPHhDjwaBFfQkjUC/slw6Sm7npFL8qrGEAMxcfBsBJUg== - /@typescript-eslint/visitor-keys/4.26.1: + integrity: sha512-KH03GUsUj41sRLLEy2JHstnezgpS5VNhrJouRdmh6yNdQ+yl8w5LrSwBkExM+jWwCJa7Ct2c8yl8NdtNRyQO6g== + /@typescript-eslint/visitor-keys/4.27.0: dependencies: - '@typescript-eslint/types': 4.26.1 + '@typescript-eslint/types': 4.27.0 eslint-visitor-keys: 2.1.0 dev: false engines: node: ^8.10.0 || ^10.13.0 || >=11.10.1 resolution: - integrity: sha512-IGouNSSd+6x/fHtYRyLOM6/C+QxMDzWlDtN41ea+flWuSF9g02iqcIlX8wM53JkfljoIjP0U+yp7SiTS1onEkw== + integrity: sha512-es0GRYNZp0ieckZ938cEANfEhsfHrzuLrePukLKtY3/KPXcq1Xd555Mno9/GOgXhKzn0QfkDLVgqWO3dGY80bg== /@ungap/promise-all-settled/1.1.2: dev: false resolution: @@ -8185,7 +7762,7 @@ packages: /abstract-leveldown/6.3.0: dependencies: buffer: 5.7.1 - immediate: 3.3.0 + immediate: 3.2.3 level-concat-iterator: 2.0.1 level-supports: 1.0.1 xtend: 4.0.2 @@ -8204,6 +7781,12 @@ packages: node: '>= 0.6' resolution: integrity: sha512-Il80Qs2WjYlJIBNzNkK6KYqlVMTbZLXgHx2oT0pU/fjRHyEp+PEfEPY0R3WCwAGVOtauxh1hOxNgIf5bv7dQpA== + /acorn-dynamic-import/2.0.2: + dependencies: + acorn: 4.0.13 + dev: false + resolution: + integrity: sha1-x1K9IQvvZ5UBtsbLf8hPj0cVjMQ= /acorn-globals/1.0.9: dependencies: acorn: 2.7.0 @@ -8273,6 +7856,13 @@ packages: hasBin: true resolution: integrity: sha1-EFSVrlNh1pe9GVyCUZLhrX8lN4c= + /acorn/5.7.4: + dev: false + engines: + node: '>=0.4.0' + hasBin: true + resolution: + integrity: sha512-1D++VG7BhrtvQpNbBzovKNc1FLGGEE/oGe7b9xJm/RFHMBeUaUGpluV9RLjZa47YFdPcDAenEYuq9pQPcMdLJg== /acorn/6.4.2: dev: false engines: @@ -8287,13 +7877,13 @@ packages: hasBin: true resolution: integrity: sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A== - /acorn/8.3.0: + /acorn/8.4.0: dev: false engines: node: '>=0.4.0' hasBin: true resolution: - integrity: sha512-tqPKHZ5CaBJw0Xmy0ZZvLs1qTV+BNFSyvn77ASXkpBNfIRk8ev26fKrD9iLGwGA9zedPao52GSHzq8lyZG0NUw== + integrity: sha512-ULr0LDaEqQrMFGyQ3bhJkLsbtrQ8QibAseGZeaSUiT/6zb9IvIkomWHJIvgvwad+hinRAgsI51JcWk2yvwyL+w== /address/1.1.2: dev: false engines: @@ -8777,7 +8367,7 @@ packages: /apollo-upload-client/14.1.2_graphql@15.5.0+react@17.0.2: dependencies: '@apollo/client': 3.3.20_graphql@15.5.0+react@17.0.2 - '@babel/runtime': 7.14.5 + '@babel/runtime': 7.14.6 extract-files: 9.0.0 graphql: 15.5.0 dev: false @@ -8857,8 +8447,8 @@ packages: integrity: sha1-bnIHtOzbObCviDA/pa4ivajfYcs= /aria-query/4.2.2: dependencies: - '@babel/runtime': 7.14.5 - '@babel/runtime-corejs3': 7.14.5 + '@babel/runtime': 7.14.6 + '@babel/runtime-corejs3': 7.14.6 dev: false engines: node: '>=6.0' @@ -9086,7 +8676,7 @@ packages: integrity: sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c= /ast-types/0.13.4: dependencies: - tslib: 2.2.0 + tslib: 2.3.0 dev: false engines: node: '>=4' @@ -9094,7 +8684,7 @@ packages: integrity: sha512-x1FCFnFifvYDDzTaLII71vG5uvDwgtmDTEVWAxrgeiR8VjMONcCXJx7E+USjDtHlwFmt9MysbqgF9b9Vjr6w+w== /ast-types/0.14.2: dependencies: - tslib: 2.2.0 + tslib: 2.3.0 dev: false engines: node: '>=4' @@ -9187,11 +8777,11 @@ packages: /autoprefixer/9.8.6: dependencies: browserslist: 4.16.6 - caniuse-lite: 1.0.30001236 + caniuse-lite: 1.0.30001237 colorette: 1.2.2 normalize-range: 0.1.2 num2fraction: 1.2.2 - postcss: 7.0.35 + postcss: 7.0.36 postcss-value-parser: 4.1.0 dev: false hasBin: true @@ -9379,14 +8969,14 @@ packages: dev: false resolution: integrity: sha1-NHHenK7DiOXIUOWX5Yom3fN2ArI= - /babel-jest/27.0.2_@babel+core@7.14.3: + /babel-jest/27.0.2_@babel+core@7.14.5: dependencies: - '@babel/core': 7.14.3 + '@babel/core': 7.14.5 '@jest/transform': 27.0.2 '@jest/types': 27.0.2 '@types/babel__core': 7.1.14 babel-plugin-istanbul: 6.0.0 - babel-preset-jest: 27.0.1_@babel+core@7.14.3 + babel-preset-jest: 27.0.1_@babel+core@7.14.5 chalk: 4.1.1 graceful-fs: 4.2.6 slash: 3.0.0 @@ -9397,9 +8987,9 @@ packages: '@babel/core': ^7.8.0 resolution: integrity: sha512-9OThPl3/IQbo4Yul2vMz4FYwILPQak8XelX4YGowygfHaOl5R5gfjm4iVx4d8aUugkW683t8aq0A74E7b5DU1Q== - /babel-loader/8.2.2_105470dfa535e5f605a4a54ef7d81e87: + /babel-loader/8.2.2_802eaa88f56443e8614799ffa818327a: dependencies: - '@babel/core': 7.14.3 + '@babel/core': 7.14.5 find-cache-dir: 3.3.1 loader-utils: 1.4.0 make-dir: 3.1.0 @@ -9518,7 +9108,7 @@ packages: integrity: sha512-sqBF0owAcCDBVEDtxqfYr2F36eSHdx7lAVGyYuOBRnKdD6gzcy0I0XrAYCZgOA3CRrLhmR+Uae9nogPzmAtOfQ== /babel-plugin-macros/2.8.0: dependencies: - '@babel/runtime': 7.14.5 + '@babel/runtime': 7.14.6 cosmiconfig: 6.0.0 resolve: 1.20.0 dev: false @@ -9526,7 +9116,7 @@ packages: integrity: sha512-SEP5kJpfGYqYKpBrj5XU3ahw5p5GOHJ0U5ssOSQ/WBVdwkD2Dzlce95exQTs3jOVWPPKLBN2rlEWkCK7dSmLvg== /babel-plugin-macros/3.1.0: dependencies: - '@babel/runtime': 7.14.5 + '@babel/runtime': 7.14.6 cosmiconfig: 7.0.0 resolve: 1.20.0 dev: false @@ -9543,41 +9133,41 @@ packages: '@babel/core': ^7.1.0 resolution: integrity: sha512-squySRkf+6JGnvjoUtDEjSREJEBirnXi9NqP6rjSYsylxQxqBTz+pkmf395i9E2zsvmYUaI40BHo6SqZUdydlw== - /babel-plugin-polyfill-corejs2/0.2.2_@babel+core@7.14.3: + /babel-plugin-polyfill-corejs2/0.2.2_@babel+core@7.14.5: dependencies: '@babel/compat-data': 7.14.5 - '@babel/core': 7.14.3 - '@babel/helper-define-polyfill-provider': 0.2.3_@babel+core@7.14.3 + '@babel/core': 7.14.5 + '@babel/helper-define-polyfill-provider': 0.2.3_@babel+core@7.14.5 semver: 6.3.0 dev: false peerDependencies: '@babel/core': ^7.0.0-0 resolution: integrity: sha512-kISrENsJ0z5dNPq5eRvcctITNHYXWOA4DUZRFYCz3jYCcvTb/A546LIddmoGNMVYg2U38OyFeNosQwI9ENTqIQ== - /babel-plugin-polyfill-corejs3/0.1.7_@babel+core@7.14.3: + /babel-plugin-polyfill-corejs3/0.1.7_@babel+core@7.14.5: dependencies: - '@babel/core': 7.14.3 - '@babel/helper-define-polyfill-provider': 0.1.5_@babel+core@7.14.3 + '@babel/core': 7.14.5 + '@babel/helper-define-polyfill-provider': 0.1.5_@babel+core@7.14.5 core-js-compat: 3.14.0 dev: false peerDependencies: '@babel/core': ^7.0.0-0 resolution: integrity: sha512-u+gbS9bbPhZWEeyy1oR/YaaSpod/KDT07arZHb80aTpl8H5ZBq+uN1nN9/xtX7jQyfLdPfoqI4Rue/MQSWJquw== - /babel-plugin-polyfill-corejs3/0.2.2_@babel+core@7.14.3: + /babel-plugin-polyfill-corejs3/0.2.3_@babel+core@7.14.5: dependencies: - '@babel/core': 7.14.3 - '@babel/helper-define-polyfill-provider': 0.2.3_@babel+core@7.14.3 + '@babel/core': 7.14.5 + '@babel/helper-define-polyfill-provider': 0.2.3_@babel+core@7.14.5 core-js-compat: 3.14.0 dev: false peerDependencies: '@babel/core': ^7.0.0-0 resolution: - integrity: sha512-l1Cf8PKk12eEk5QP/NQ6TH8A1pee6wWDJ96WjxrMXFLHLOBFzYM4moG80HFgduVhTqAFez4alnZKEhP/bYHg0A== - /babel-plugin-polyfill-regenerator/0.2.2_@babel+core@7.14.3: + integrity: sha512-rCOFzEIJpJEAU14XCcV/erIf/wZQMmMT5l5vXOpL5uoznyOGfDIjPj6FVytMvtzaKSTSVKouOCTPJ5OMUZH30g== + /babel-plugin-polyfill-regenerator/0.2.2_@babel+core@7.14.5: dependencies: - '@babel/core': 7.14.3 - '@babel/helper-define-polyfill-provider': 0.2.3_@babel+core@7.14.3 + '@babel/core': 7.14.5 + '@babel/helper-define-polyfill-provider': 0.2.3_@babel+core@7.14.5 dev: false peerDependencies: '@babel/core': ^7.0.0-0 @@ -9809,21 +9399,21 @@ packages: dev: false resolution: integrity: sha1-1fr3qleKZbvlkc9e2uBKDGcCB1g= - /babel-preset-current-node-syntax/1.0.1_@babel+core@7.14.3: - dependencies: - '@babel/core': 7.14.3 - '@babel/plugin-syntax-async-generators': 7.8.4_@babel+core@7.14.3 - '@babel/plugin-syntax-bigint': 7.8.3_@babel+core@7.14.3 - '@babel/plugin-syntax-class-properties': 7.12.13_@babel+core@7.14.3 - '@babel/plugin-syntax-import-meta': 7.10.4_@babel+core@7.14.3 - '@babel/plugin-syntax-json-strings': 7.8.3_@babel+core@7.14.3 - '@babel/plugin-syntax-logical-assignment-operators': 7.10.4_@babel+core@7.14.3 - '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3_@babel+core@7.14.3 - '@babel/plugin-syntax-numeric-separator': 7.10.4_@babel+core@7.14.3 - '@babel/plugin-syntax-object-rest-spread': 7.8.3_@babel+core@7.14.3 - '@babel/plugin-syntax-optional-catch-binding': 7.8.3_@babel+core@7.14.3 - '@babel/plugin-syntax-optional-chaining': 7.8.3_@babel+core@7.14.3 - '@babel/plugin-syntax-top-level-await': 7.14.5_@babel+core@7.14.3 + /babel-preset-current-node-syntax/1.0.1_@babel+core@7.14.5: + dependencies: + '@babel/core': 7.14.5 + '@babel/plugin-syntax-async-generators': 7.8.4_@babel+core@7.14.5 + '@babel/plugin-syntax-bigint': 7.8.3_@babel+core@7.14.5 + '@babel/plugin-syntax-class-properties': 7.12.13_@babel+core@7.14.5 + '@babel/plugin-syntax-import-meta': 7.10.4_@babel+core@7.14.5 + '@babel/plugin-syntax-json-strings': 7.8.3_@babel+core@7.14.5 + '@babel/plugin-syntax-logical-assignment-operators': 7.10.4_@babel+core@7.14.5 + '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3_@babel+core@7.14.5 + '@babel/plugin-syntax-numeric-separator': 7.10.4_@babel+core@7.14.5 + '@babel/plugin-syntax-object-rest-spread': 7.8.3_@babel+core@7.14.5 + '@babel/plugin-syntax-optional-catch-binding': 7.8.3_@babel+core@7.14.5 + '@babel/plugin-syntax-optional-chaining': 7.8.3_@babel+core@7.14.5 + '@babel/plugin-syntax-top-level-await': 7.14.5_@babel+core@7.14.5 dev: false peerDependencies: '@babel/core': ^7.0.0 @@ -9891,7 +9481,7 @@ packages: '@babel/plugin-transform-react-display-name': 7.14.5_@babel+core@7.14.5 '@babel/plugin-transform-react-jsx': 7.14.5_@babel+core@7.14.5 '@babel/plugin-transform-shorthand-properties': 7.14.5_@babel+core@7.14.5 - '@babel/plugin-transform-spread': 7.14.5_@babel+core@7.14.5 + '@babel/plugin-transform-spread': 7.14.6_@babel+core@7.14.5 '@babel/plugin-transform-template-literals': 7.14.5_@babel+core@7.14.5 babel-plugin-syntax-trailing-function-commas: 7.0.0-beta.0 dev: false @@ -9900,11 +9490,11 @@ packages: '@babel/core': ^7.0.0 resolution: integrity: sha512-9ywCsCvo1ojrw0b+XYk7aFvTH6D9064t0RIL1rtMf3nsa02Xw41MS7sZw216Im35xj/UY0PDBQsa1brUDDF1Ow== - /babel-preset-jest/27.0.1_@babel+core@7.14.3: + /babel-preset-jest/27.0.1_@babel+core@7.14.5: dependencies: - '@babel/core': 7.14.3 + '@babel/core': 7.14.5 babel-plugin-jest-hoist: 27.0.1 - babel-preset-current-node-syntax: 1.0.1_@babel+core@7.14.3 + babel-preset-current-node-syntax: 1.0.1_@babel+core@7.14.5 dev: false engines: node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0 @@ -10068,6 +9658,12 @@ packages: node: '>8.0.0' resolution: integrity: sha512-kIPXZS5qwyKiX/HcRvDYfmBQUa8XP17I0mYZZ0y4UhpYOSvtsLHDYqmomS+Mj20aDvD3knEiQ0ecQy2nhio3yA== + /big-integer/1.6.36: + dev: false + engines: + node: '>=0.6' + resolution: + integrity: sha512-t70bfa7HYEA1D9idDbmuv7YbsbVkQ+Hp+8KFSul4aE5e/i1bjCNIRYJZlA8Q8p0r9T8cF/RVvwUgRA//FydEyg== /big.js/5.2.2: dev: false resolution: @@ -10403,7 +9999,7 @@ packages: integrity: sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA== /browserslist/3.2.8: dependencies: - caniuse-lite: 1.0.30001236 + caniuse-lite: 1.0.30001237 electron-to-chromium: 1.3.752 dev: false hasBin: true @@ -10411,7 +10007,7 @@ packages: integrity: sha512-WHVocJYavUwVgVViC0ORikPHQquXwVh939TaelZ4WDqpWgTX/FsGhl/+P4qBUAGcRvtOgDgC+xftNWWp2RUTAQ== /browserslist/4.14.2: dependencies: - caniuse-lite: 1.0.30001236 + caniuse-lite: 1.0.30001237 electron-to-chromium: 1.3.752 escalade: 3.1.1 node-releases: 1.1.73 @@ -10423,7 +10019,7 @@ packages: integrity: sha512-HI4lPveGKUR0x2StIz+2FXfDk9SfVMrxn6PLh1JeGUwcuoDkdKZebWiyLRJ68iIPDpMI4JLVDf7S7XzslgWOhw== /browserslist/4.16.6: dependencies: - caniuse-lite: 1.0.30001236 + caniuse-lite: 1.0.30001237 colorette: 1.2.2 electron-to-chromium: 1.3.752 escalade: 3.1.1 @@ -10628,7 +10224,7 @@ packages: dev: false resolution: integrity: sha1-HRPL/3F65xWAlKqIGzXQgbOHJT4= - /c8/7.7.2: + /c8/7.7.3: dependencies: '@bcoe/v8-coverage': 0.2.3 '@istanbuljs/schema': 0.1.3 @@ -10639,7 +10235,7 @@ packages: istanbul-reports: 3.0.2 rimraf: 3.0.2 test-exclude: 6.0.0 - v8-to-istanbul: 7.1.2 + v8-to-istanbul: 8.0.0 yargs: 16.2.0 yargs-parser: 20.2.7 dev: false @@ -10647,7 +10243,7 @@ packages: node: '>=10.12.0' hasBin: true resolution: - integrity: sha512-8AqNnUMxB3hsgYCYso2GJjlwnaNPlrEEbYbCQb7N76V1nrOgCKXiTcE3gXU18rIj0FeduPywROrIBMC7XAKApg== + integrity: sha512-ZyA7n3w8i4ETV25tVYMHwJxCSnaOf/LfA8vOcuZOPbonuQfD7tBT/gMWZy7eczRpCDuHcvMXwoqAemg6R0p3+A== /cacache/12.0.4: dependencies: bluebird: 3.7.2 @@ -10770,7 +10366,7 @@ packages: /camel-case/4.1.2: dependencies: pascal-case: 3.1.2 - tslib: 2.2.0 + tslib: 2.3.0 dev: false resolution: integrity: sha512-gxGWBrTT1JuMx6R+o5PTXMmUnhnVzLQ9SNutD4YqKtI6ap897t3tKECYla6gCWEkplXnlNybEkZg9GEGxKFCgw== @@ -10805,7 +10401,6 @@ packages: dev: false engines: node: '>=0.10.0' - optional: true resolution: integrity: sha1-MvxLn82vhF/N9+c7uXysImHwqwo= /camelcase/4.1.0: @@ -10826,10 +10421,10 @@ packages: node: '>=10' resolution: integrity: sha512-c7wVvbw3f37nuobQNtgsgG9POC9qMbNuMQmTCqZv23b6MIz0fcYpBiOlv9gEN/hdLdnZTDQhg6e9Dq5M1vKvfg== - /caniuse-lite/1.0.30001236: + /caniuse-lite/1.0.30001237: dev: false resolution: - integrity: sha512-o0PRQSrSCGJKCPZcgMzl5fUaj5xHe8qA2m4QRvnyY4e1lITqoNkr7q/Oh1NcpGSy0Th97UZ35yoKcINPoq7YOQ== + integrity: sha512-pDHgRndit6p1NR2GhzMbQ6CkRrp4VKuSsqbcLeOQppYPKOYkKT/6ZvZDvKJUqcmtyWIAHuZq3SVS2vc1egCZzw== /capture-exit/2.0.0: dependencies: rsvp: 4.8.5 @@ -11092,7 +10687,7 @@ packages: htmlparser2: 6.1.0 parse5: 6.0.1 parse5-htmlparser2-tree-adapter: 6.0.1 - tslib: 2.2.0 + tslib: 2.3.0 dev: false engines: node: '>= 6' @@ -11178,6 +10773,22 @@ packages: fsevents: 2.3.2 resolution: integrity: sha512-9+s+Od+W0VJJzawDma/gvBNQqkTiqYTWLuZoyAsivsI4AaWTCzHG06/TMjsf1cYe9Cb97UCEhjz7HvnPk2p/tw== + /chokidar/3.5.2: + dependencies: + anymatch: 3.1.2 + braces: 3.0.2 + glob-parent: 5.1.2 + is-binary-path: 2.1.0 + is-glob: 4.0.1 + normalize-path: 3.0.0 + readdirp: 3.6.0 + dev: false + engines: + node: '>= 8.10.0' + optionalDependencies: + fsevents: 2.3.2 + resolution: + integrity: sha512-ekGhOnNVPgT77r4K/U3GDhu+FQ2S8TnK/s2KbIGXi0SZWuwkZ2QNyfWdZW+TVfn84DpEP7rLeCt2UI6bJ8GwbQ== /chownr/1.1.4: dev: false resolution: @@ -11215,7 +10826,7 @@ packages: npm: '>=3.0.0' resolution: integrity: sha512-zT7mPeghoWAu+ppn8+BS1tQ5qGmbMfB4AregnQjA/qHY3GC1m1ptI9GkWNlgeu38r7CuRdXB47uY2XgAYt6QVA== - /cids/1.1.6: + /cids/1.1.7: dependencies: multibase: 4.0.4 multicodec: 3.0.1 @@ -11227,7 +10838,7 @@ packages: npm: '>=3.0.0' optional: true resolution: - integrity: sha512-5P+Jas2bVpjiHibp/SOwKY+v7JhAjTChaAZN+vCIrsWXn/JZV0frX22Vp5zZgEyJRPco79pX+yNQ2S3LkRukHQ== + integrity: sha512-dlh+K0hMwFAFFjWQ2ZzxOhgGVNVREPdmk8cqHFui2U4sOodcemLMxdE5Ujga4cDcDQhWfldEPThkfu6KWBt1eA== /cipher-base/1.0.4: dependencies: inherits: 2.0.4 @@ -11274,7 +10885,7 @@ packages: dependencies: '@types/validator': 13.0.0 google-libphonenumber: 3.2.21 - tslib: 2.2.0 + tslib: 2.3.0 validator: 13.0.0 dev: false resolution: @@ -11420,7 +11031,6 @@ packages: strip-ansi: 3.0.1 wrap-ansi: 2.1.0 dev: false - optional: true resolution: integrity: sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0= /cliui/4.1.0: @@ -11925,7 +11535,7 @@ packages: dependencies: fast-glob: 3.2.5 glob-parent: 6.0.0 - globby: 11.0.3 + globby: 11.0.4 normalize-path: 3.0.0 p-limit: 3.1.0 schema-utils: 3.0.0 @@ -12142,6 +11752,18 @@ packages: node: '>= 8' resolution: integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w== + /crypto-addr-codec/0.1.7: + dependencies: + base-x: 3.0.8 + big-integer: 1.6.36 + blakejs: 1.1.0 + bs58: 4.0.1 + ripemd160-min: 0.0.6 + safe-buffer: 5.2.1 + sha3: 2.1.4 + dev: false + resolution: + integrity: sha512-X4hzfBzNhy4mAc3UpiXEC/L0jo5E8wAa9unsnA8nNXYzXjCcGk83hfC5avJWCSGT8V91xMnAS9AKMHmjw5+XCg== /crypto-browserify/3.12.0: dependencies: browserify-cipher: 1.0.1 @@ -12175,7 +11797,7 @@ packages: icss-utils: 4.1.1 loader-utils: 1.4.0 normalize-path: 3.0.0 - postcss: 7.0.35 + postcss: 7.0.36 postcss-modules-extract-imports: 2.0.0 postcss-modules-local-by-default: 3.0.3 postcss-modules-scope: 2.2.0 @@ -12193,13 +11815,13 @@ packages: integrity: sha512-M5lSukoWi1If8dhQAUCvj4H8vUt3vOnwbQBH9DdTm/s4Ym2B/3dPMtYZeJmq7Q3S3Pa+I94DcZ7pc9bP14cWIQ== /css-loader/5.2.6_webpack@5.38.1: dependencies: - icss-utils: 5.1.0_postcss@8.3.1 + icss-utils: 5.1.0_postcss@8.3.5 loader-utils: 2.0.0 - postcss: 8.3.1 - postcss-modules-extract-imports: 3.0.0_postcss@8.3.1 - postcss-modules-local-by-default: 4.0.0_postcss@8.3.1 - postcss-modules-scope: 3.0.0_postcss@8.3.1 - postcss-modules-values: 4.0.0_postcss@8.3.1 + postcss: 8.3.5 + postcss-modules-extract-imports: 3.0.0_postcss@8.3.5 + postcss-modules-local-by-default: 4.0.0_postcss@8.3.5 + postcss-modules-scope: 3.0.0_postcss@8.3.5 + postcss-modules-values: 4.0.0_postcss@8.3.5 postcss-value-parser: 4.1.0 schema-utils: 3.0.0 semver: 7.3.5 @@ -12269,7 +11891,7 @@ packages: integrity: sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q== /css-vendor/2.0.8: dependencies: - '@babel/runtime': 7.14.5 + '@babel/runtime': 7.14.6 is-in-browser: 1.1.3 dev: false resolution: @@ -12524,7 +12146,7 @@ packages: integrity: sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ== /debug/4.1.1: dependencies: - ms: 2.1.3 + ms: 2.1.2 deprecated: Debug versions >=3.2.0 <3.2.7 || >=4 <4.3.1 have a low-severity ReDos regression when used in a Node.js environment. It is recommended you upgrade to 3.2.7 or 4.3.1. (https://github.com/visionmedia/debug/issues/797) dev: false resolution: @@ -12774,7 +12396,7 @@ packages: /deferred-leveldown/5.0.1: dependencies: abstract-leveldown: 6.0.3 - inherits: 2.0.4 + inherits: 2.0.3 dev: false engines: node: '>=6' @@ -13115,7 +12737,7 @@ packages: integrity: sha512-gd3ypIPfOMr9h5jIKq8E3sHOTCjeirnl0WK5ZdS1AW0Odt0b1PaWaHdJ4Qk4klv+YB9aJBS7mESXjFoDQPu6DA== /dom-helpers/5.2.1: dependencies: - '@babel/runtime': 7.14.5 + '@babel/runtime': 7.14.6 csstype: 3.0.8 dev: false resolution: @@ -13223,7 +12845,7 @@ packages: /dot-case/3.0.4: dependencies: no-case: 3.0.4 - tslib: 2.2.0 + tslib: 2.3.0 dev: false resolution: integrity: sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w== @@ -13286,7 +12908,7 @@ packages: integrity: sha1-ED01J/0xUo9AGIEwyEHv3XgmTlw= /downshift/6.1.3_react@17.0.2: dependencies: - '@babel/runtime': 7.14.5 + '@babel/runtime': 7.14.6 compute-scroll-into-view: 1.0.17 prop-types: 15.7.2 react: 17.0.2 @@ -13438,7 +13060,7 @@ packages: integrity: sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q== /emotion-theming/10.0.27_33bb31e1d857102242df3642b32eda18: dependencies: - '@babel/runtime': 7.14.5 + '@babel/runtime': 7.14.6 '@emotion/core': 10.1.1_react@17.0.2 '@emotion/weak-memoize': 0.2.5 hoist-non-react-statics: 3.3.2 @@ -13475,7 +13097,7 @@ packages: dependencies: abstract-leveldown: 6.3.0 inherits: 2.0.4 - level-codec: 9.0.2 + level-codec: 9.0.1 level-errors: 2.0.1 dev: false engines: @@ -13514,6 +13136,17 @@ packages: dev: false resolution: integrity: sha512-mADztvcC+vCk4XEZaCz6xIPO2NHQuprv5CAEjuVAu6aZwqAj7nVNlMyl1goPFYqCCpS2OJV9jwpumJLkotZrNw== + /enhanced-resolve/3.4.1: + dependencies: + graceful-fs: 4.2.6 + memory-fs: 0.4.1 + object-assign: 4.1.1 + tapable: 0.2.9 + dev: false + engines: + node: '>=4.3.0 <5.0.0 || >=5.10' + resolution: + integrity: sha1-BCHjOf1xQZs9oT0Smzl5BAIwR24= /enhanced-resolve/4.5.0: dependencies: graceful-fs: 4.2.6 @@ -13738,14 +13371,42 @@ packages: dependencies: d: 1.0.1 es5-ext: 0.10.53 - es6-symbol: 3.1.3 + es6-symbol: 3.1.3 + dev: false + resolution: + integrity: sha1-p96IkUGgWpSwhUQDstCg+/qY87c= + /es6-map/0.1.5: + dependencies: + d: 1.0.1 + es5-ext: 0.10.53 + es6-iterator: 2.0.3 + es6-set: 0.1.5 + es6-symbol: 3.1.3 + event-emitter: 0.3.5 + dev: false + resolution: + integrity: sha1-kTbgUD3MBqMBaQ8LsU/042TpSfA= + /es6-set/0.1.5: + dependencies: + d: 1.0.1 + es5-ext: 0.10.53 + es6-iterator: 2.0.3 + es6-symbol: 3.1.1 + event-emitter: 0.3.5 dev: false resolution: - integrity: sha1-p96IkUGgWpSwhUQDstCg+/qY87c= + integrity: sha1-0rPsXU2ADO2BjbU40ol02wpzzLE= /es6-shim/0.35.6: dev: false resolution: integrity: sha512-EmTr31wppcaIAgblChZiuN/l9Y7DPyw8Xtbg7fIVngn6zMW+IEBJDJngeKC3x6wr0V/vcA2wqeFnaw1bFJbDdA== + /es6-symbol/3.1.1: + dependencies: + d: 1.0.1 + es5-ext: 0.10.53 + dev: false + resolution: + integrity: sha1-vwDvT9q2uhtG7Le2KbTH7VcVzHc= /es6-symbol/3.1.3: dependencies: d: 1.0.1 @@ -13753,6 +13414,15 @@ packages: dev: false resolution: integrity: sha512-NJ6Yn3FuDinBaBRWl/q5X/s4koRHBrgKAu+yGI6JCBeiu3qrcbJhwT2GeR/EXVfylRk8dpQVJoLEFhK+Mu31NA== + /es6-weak-map/2.0.3: + dependencies: + d: 1.0.1 + es5-ext: 0.10.53 + es6-iterator: 2.0.3 + es6-symbol: 3.1.3 + dev: false + resolution: + integrity: sha512-p5um32HOTO1kP+w7PRnB+5lQ43Z6muuMuIMffvDN8ZB4GcnjLBV6zGStpbASIMk4DCAvEaamhe2zhyCb/QXXsA== /escalade/3.1.1: dev: false engines: @@ -13809,6 +13479,17 @@ packages: source-map: 0.6.1 resolution: integrity: sha512-mmHKys/C8BFUGI+MAWNcSYoORYLMdPzjrknd2Vc+bUsjN5bXcr8EhrNB+UTqfL1y3I9c4fw2ihgtMPQLBRiQxw== + /escope/3.6.0: + dependencies: + es6-map: 0.1.5 + es6-weak-map: 2.0.3 + esrecurse: 4.3.0 + estraverse: 4.3.0 + dev: false + engines: + node: '>=0.4.0' + resolution: + integrity: sha1-4Bl16BJ4GhY6ba392AOY3GTIicM= /esdoc/1.1.0: dependencies: babel-generator: 6.26.1 @@ -13830,7 +13511,7 @@ packages: integrity: sha512-vsUcp52XJkOWg9m1vDYplGZN2iDzvmjDL5M/Mp8qkoDG3p2s0yIQCIjKR5wfPBaM3eV14a6zhQNYiNTCVzPnxA== /eslint-plugin-jest/24.3.6_typescript@4.3.2: dependencies: - '@typescript-eslint/experimental-utils': 4.26.1_typescript@4.3.2 + '@typescript-eslint/experimental-utils': 4.27.0_typescript@4.3.2 dev: false engines: node: '>=10' @@ -13937,7 +13618,7 @@ packages: dependencies: '@babel/traverse': 7.14.5 '@babel/types': 7.14.5 - c8: 7.7.2 + c8: 7.7.3 dev: false engines: node: '>=8.3.0' @@ -14087,12 +13768,12 @@ packages: dev: false resolution: integrity: sha512-/MSbf/r2/Ld8o0l15AymjOTlPqpN8Cr4ByUEA9GtR4x0yAh3TdtDzEg29zMjXCNPI7u6E5fOQdj/Cf9Tc7oVNw== - /ethereum-bloom-filters/1.0.9: + /ethereum-bloom-filters/1.0.10: dependencies: js-sha3: 0.8.0 dev: false resolution: - integrity: sha512-GiK/RQkAkcVaEdxKVkPcG07PQ5vD7v2MFSHgZmBJSfMzNRHimntdBithsHAT89tAXnIpzVDWt8iaCD1DvkaxGg== + integrity: sha512-rxJ5OFN3RwjQxDcFP2Z5+Q9ho4eIdEmSc2ht0fCu8Se9nbXjZ7/031uXoUYJ87KHCOdVeiUuwSnoS7hmYAGVHA== /ethereum-common/0.0.18: dev: false resolution: @@ -14121,17 +13802,6 @@ packages: dev: false resolution: integrity: sha512-w8/4x1SGGzc+tO97TASLja6SLd3fRIK2tLVcV2Gx4IB21hE19atll5Cq9o3d0ZmAYC/8aw0ipieTSiekAea4SQ== - /ethereum-ens/0.8.0: - dependencies: - bluebird: 3.7.2 - eth-ens-namehash: 2.0.8 - js-sha3: 0.5.7 - pako: 1.0.11 - underscore: 1.13.1 - web3: 1.3.6 - dev: false - resolution: - integrity: sha512-a8cBTF4AWw1Q1Y37V1LSCS9pRY4Mh3f8vCg5cbXCCEJ3eno1hbI/+Ccv9SZLISYpqQhaglP3Bxb/34lS4Qf7Bg== /ethereumjs-abi/0.6.5: dependencies: bn.js: 4.12.0 @@ -14211,6 +13881,14 @@ packages: dev: false resolution: integrity: sha512-hTfZjwGX52GS2jcVO6E2sx4YuFnf0Fhp5ylo4pEPhEffNln7vS59Hr5sLnp3/QCazFLluuBZ+FZ6J5HTp0EqCA== + /ethereumjs-testrpc/6.0.3: + dependencies: + webpack: 3.12.0 + deprecated: ethereumjs-testrpc has been renamed to ganache-cli, please use this package from now on. + dev: false + hasBin: true + resolution: + integrity: sha512-lAxxsxDKK69Wuwqym2K49VpXtBvLEsXr1sryNG4AkvL5DomMdeCBbu3D87UEevKenLHBiT8GTjARwN6Yj039gA== /ethereumjs-tx/1.3.7: dependencies: ethereum-common: 0.0.18 @@ -14358,7 +14036,7 @@ packages: integrity: sha512-sZD5K8H28dOrcidzx9f8KYh8083n5BexIO3+SbE4jK83L85FxtpXZBCQdXb8gkg+7sBqomcLhhkU7UHL+F7I2g== /ethers/5.0.7: dependencies: - '@ethersproject/abi': 5.3.0 + '@ethersproject/abi': 5.3.1 '@ethersproject/abstract-provider': 5.3.0 '@ethersproject/abstract-signer': 5.3.0 '@ethersproject/address': 5.3.0 @@ -14372,10 +14050,10 @@ packages: '@ethersproject/json-wallets': 5.3.0 '@ethersproject/keccak256': 5.3.0 '@ethersproject/logger': 5.3.0 - '@ethersproject/networks': 5.3.0 + '@ethersproject/networks': 5.3.1 '@ethersproject/pbkdf2': 5.3.0 '@ethersproject/properties': 5.3.0 - '@ethersproject/providers': 5.3.0 + '@ethersproject/providers': 5.3.1 '@ethersproject/random': 5.3.0 '@ethersproject/rlp': 5.3.0 '@ethersproject/sha2': 5.3.0 @@ -14464,6 +14142,13 @@ packages: hasBin: true resolution: integrity: sha512-x2nKK98zmd72SFWL3Ul1S6scWYf5QqG221N6/mFNMO661g7ASvTRINGIWVvHzsvflW6y4tvgMSjnTN5RCTuZug== + /event-emitter/0.3.5: + dependencies: + d: 1.0.1 + es5-ext: 0.10.53 + dev: false + resolution: + integrity: sha1-34xp7vFkeSPHFXuc6DhAYQsCzDk= /event-iterator/1.2.0: dev: false optional: true @@ -14774,7 +14459,7 @@ packages: integrity: sha512-Hypkn9jUTnFr0DpekNam53X47tXn3ucY08BQumv7kdGgeVUBLq3DJHJTi6HNxv4jl9W+Skxjz9+RnK0sJyqqjA== /extract-zip/2.0.1_supports-color@8.1.1: dependencies: - debug: 4.3.1_supports-color@8.1.1 + debug: 4.3.2_supports-color@8.1.1 get-stream: 5.2.0 yauzl: 2.10.0 dev: false @@ -15031,7 +14716,7 @@ packages: integrity: sha512-qo3glqyTa61Ytg4u73GultjHGjdRyig3tG6lPtyX/jOEJvHif9uB0/OCI2Kif6ctF3caQTW2G5gym21oAsI4pw== /file-selector/0.2.4: dependencies: - tslib: 2.2.0 + tslib: 2.3.0 dev: false engines: node: '>= 10' @@ -15091,14 +14776,14 @@ packages: bitcore-mnemonic: 8.25.10 btoa-lite: 1.0.0 events: 3.3.0 - isomorphic-ws: 4.0.1_ws@7.4.6 + isomorphic-ws: 4.0.1_ws@7.5.0 node-fetch: 2.6.1 rpc-websockets: 5.3.1 scrypt-async: 2.0.1 tweetnacl: 1.0.3 tweetnacl-util: 0.15.1 websocket: 1.0.34 - ws: 7.4.6 + ws: 7.5.0 dev: false optional: true resolution: @@ -15424,7 +15109,7 @@ packages: '@babel/code-frame': 7.14.5 '@types/json-schema': 7.0.7 chalk: 4.1.1 - chokidar: 3.5.1 + chokidar: 3.5.2 cosmiconfig: 6.0.0 deepmerge: 4.2.2 fs-extra: 9.1.0 @@ -16151,8 +15836,22 @@ packages: dev: false engines: node: '>=10' + optional: true resolution: integrity: sha512-ffdmosjA807y7+lA1NM0jELARVmYul/715xiILEjo3hBLPTcirgQNnXECn5g3mtR8TOLCVbkfua1Hpen25/Xcg== + /globby/11.0.4: + dependencies: + array-union: 2.1.0 + dir-glob: 3.0.1 + fast-glob: 3.2.5 + ignore: 5.1.8 + merge2: 1.4.1 + slash: 3.0.0 + dev: false + engines: + node: '>=10' + resolution: + integrity: sha512-9O4MVG9ioZJ08ffbcyVYyLOJLk5JQ688pJ4eMGLpdWLHq/Wr1D9BlriLQyL0E+jbkuePVZXYFj47QM/v093wHg== /globby/6.1.0: dependencies: array-union: 1.0.2 @@ -16278,7 +15977,7 @@ packages: /graphql-tag/2.12.4_graphql@15.5.0: dependencies: graphql: 15.5.0 - tslib: 2.2.0 + tslib: 2.3.0 dev: false engines: node: '>=10' @@ -16643,13 +16342,13 @@ packages: dev: false resolution: integrity: sha512-tzcUFauisWKNHaRkN4Wjl/ZA07gENAjFl3J/c480dprkGTg5EQstgaNFqBfUqCq54kZRIEcreTsAgF/m2quD7A== - /highlightjs-solidity/1.1.0: + /highlightjs-solidity/1.1.1: dev: false resolution: - integrity: sha512-LtH7uuoe+FOmtQd41ozAZKLJC2chqdqs461FJcWAx00R3VcBhSQTRFfzRGtTQqu2wsVIEdHiyynrPrEDDWyIMw== + integrity: sha512-NNcuj6GC0OP8qIrXVaqUA33d/nQoGvwRPS3FR2juIT+I1LAcNkebLbEp1AxzH0TiQ9InPxG62P/FnON8Ns15sQ== /history/4.10.1: dependencies: - '@babel/runtime': 7.14.5 + '@babel/runtime': 7.14.6 loose-envify: 1.4.0 resolve-pathname: 3.0.0 tiny-invariant: 1.1.0 @@ -16983,7 +16682,7 @@ packages: integrity: sha512-EqHafx/sL8eoEowwqi5P6cXtLrzJXBKI4RmV+UaMXlpIJNfckVsq873F2KkMKkApxiw2ATj46C8MurmhMsHQGw== /i18next/20.3.1: dependencies: - '@babel/runtime': 7.14.5 + '@babel/runtime': 7.14.6 dev: false resolution: integrity: sha512-WTY07KreR5z2LBSzAIKs05zpR5tgUT98C4fD96e7Risbc/HZePwF6AEnb9VkjdeSeRn9PDqQBay7ZkphuXt0Xw== @@ -17028,15 +16727,15 @@ packages: integrity: sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw== /icss-utils/4.1.1: dependencies: - postcss: 7.0.35 + postcss: 7.0.36 dev: false engines: node: '>= 6' resolution: integrity: sha512-4aFq7wvWyMHKgxsH8QQtGpvbASCf+eM3wPRLI6R+MgAnTCZ6STYsRvttLvRWK0Nfif5piF394St3HeJDaljGPA== - /icss-utils/5.1.0_postcss@8.3.1: + /icss-utils/5.1.0_postcss@8.3.5: dependencies: - postcss: 8.3.1 + postcss: 8.3.5 dev: false engines: node: ^10 || ^12 || >= 14 @@ -17374,7 +17073,7 @@ packages: integrity: sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g== /ipfs-core-types/0.2.1: dependencies: - cids: 1.1.6 + cids: 1.1.7 multiaddr: 8.1.2 peer-id: 0.14.8 dev: false @@ -17386,7 +17085,7 @@ packages: any-signal: 2.1.2 blob-to-it: 1.0.2 browser-readablestream-to-it: 1.0.2 - cids: 1.1.6 + cids: 1.1.7 err-code: 2.0.3 ipfs-core-types: 0.2.1 ipfs-utils: 5.0.1 @@ -17406,7 +17105,7 @@ packages: dependencies: any-signal: 2.1.2 bignumber.js: 9.0.1 - cids: 1.1.6 + cids: 1.1.7 debug: 4.3.1 form-data: 3.0.1 ipfs-core-types: 0.2.1 @@ -17461,7 +17160,7 @@ packages: integrity: sha512-28KZPgO4Uf5duT2ORLAYfboUp98iUshDD7yRAfbNxNAR8Dtidfn6o20rZfoXnkri2zKBVIPlJkuCPmPJB+6erg== /ipld-block/0.11.1: dependencies: - cids: 1.1.6 + cids: 1.1.7 dev: false engines: node: '>=6.0.0' @@ -17472,7 +17171,7 @@ packages: /ipld-dag-cbor/0.17.1: dependencies: borc: 2.1.2 - cids: 1.1.6 + cids: 1.1.7 is-circular: 1.0.2 multicodec: 3.0.1 multihashing-async: 2.1.2 @@ -17486,7 +17185,7 @@ packages: integrity: sha512-Bakj/cnxQBdscORyf4LRHxQJQfoaY8KWc7PWROQgX+aw5FCzBt8ga0VM/59K+ABOznsqNvyLR/wz/oYImOpXJw== /ipld-dag-pb/0.20.0: dependencies: - cids: 1.1.6 + cids: 1.1.7 class-is: 1.1.0 multicodec: 2.1.3 multihashing-async: 2.1.2 @@ -17504,7 +17203,7 @@ packages: integrity: sha512-zfM0EdaolqNjAxIrtpuGKvXxWk5YtH9jKinBuQGTcngOsWFQhyybGCTJHGNGGtRjHNJi2hz5Udy/8pzv4kcKyg== /ipld-raw/6.0.0: dependencies: - cids: 1.1.6 + cids: 1.1.7 multicodec: 2.1.3 multihashing-async: 2.1.2 dev: false @@ -18220,9 +17919,9 @@ packages: ws: '*' resolution: integrity: sha512-BhBvN2MBpWTaSHdWRb/bwdZJ1WaehQ2L1KngkCkfLUGF0mAWAT1sQUQacEmQ0jXkFw/czDXPNQSL5u2/Krsz1w== - /isomorphic-ws/4.0.1_ws@7.4.6: + /isomorphic-ws/4.0.1_ws@7.5.0: dependencies: - ws: 7.4.6 + ws: 7.5.0 dev: false optional: true peerDependencies: @@ -18248,7 +17947,7 @@ packages: /istanbul-lib-instrument/3.3.0: dependencies: '@babel/generator': 7.14.5 - '@babel/parser': 7.14.5 + '@babel/parser': 7.14.6 '@babel/template': 7.14.5 '@babel/traverse': 7.14.5 '@babel/types': 7.14.5 @@ -18261,7 +17960,7 @@ packages: integrity: sha512-5nnIN4vo5xQZHdXno/YDXJ0G+I3dAm4XgzfSVTPLQpj/zAV2dV6Juy0yaf10/zrJOJeHoN3fraFe+XRq2bFVZA== /istanbul-lib-instrument/4.0.3: dependencies: - '@babel/core': 7.14.3 + '@babel/core': 7.14.5 '@istanbuljs/schema': 0.1.3 istanbul-lib-coverage: 3.0.0 semver: 6.3.0 @@ -18381,7 +18080,7 @@ packages: integrity: sha512-DTB5TJRZG3untmZehcaFN0kGWl2bNv7tnJRgQHAO9QEt8jfvVRrebZtnD5NZd4SCj4WVPjl0LSrugNWE/UaZRQ== /iter-tools/7.1.3: dependencies: - '@babel/runtime': 7.14.5 + '@babel/runtime': 7.14.6 dev: false optional: true resolution: @@ -18434,7 +18133,7 @@ packages: '@jest/environment': 27.0.3 '@jest/test-result': 27.0.2 '@jest/types': 27.0.2 - '@types/node': 14.17.2 + '@types/node': 14.17.3 chalk: 4.1.1 co: 4.6.0 dedent: 0.7.0 @@ -18483,10 +18182,10 @@ packages: integrity: sha512-E0T+/i2lxsWAzV7LKYd0SB7HUAvePqaeIh5vX43/G5jXLhv1VzjYzJAGEkTfvxV774ll9cyE2ljcL73PVMEOXQ== /jest-config/27.0.4_ts-node@9.1.1: dependencies: - '@babel/core': 7.14.3 + '@babel/core': 7.14.5 '@jest/test-sequencer': 27.0.4 '@jest/types': 27.0.2 - babel-jest: 27.0.2_@babel+core@7.14.3 + babel-jest: 27.0.2_@babel+core@7.14.5 chalk: 4.1.1 deepmerge: 4.2.2 glob: 7.1.7 @@ -18573,7 +18272,7 @@ packages: '@jest/environment': 27.0.3 '@jest/fake-timers': 27.0.3 '@jest/types': 27.0.2 - '@types/node': 14.17.2 + '@types/node': 14.17.3 jest-mock: 27.0.3 jest-util: 27.0.2 jsdom: 16.6.0 @@ -18587,7 +18286,7 @@ packages: '@jest/environment': 27.0.3 '@jest/fake-timers': 27.0.3 '@jest/types': 27.0.2 - '@types/node': 14.17.2 + '@types/node': 14.17.3 jest-mock: 27.0.3 jest-util: 27.0.2 dev: false @@ -18631,7 +18330,7 @@ packages: dependencies: '@jest/types': 26.6.2 '@types/graceful-fs': 4.1.5 - '@types/node': 14.17.2 + '@types/node': 14.17.3 anymatch: 3.1.2 fb-watchman: 2.0.1 graceful-fs: 4.2.6 @@ -18653,7 +18352,7 @@ packages: dependencies: '@jest/types': 27.0.2 '@types/graceful-fs': 4.1.5 - '@types/node': 14.17.2 + '@types/node': 14.17.3 anymatch: 3.1.2 fb-watchman: 2.0.1 graceful-fs: 4.2.6 @@ -18677,7 +18376,7 @@ packages: '@jest/source-map': 27.0.1 '@jest/test-result': 27.0.2 '@jest/types': 27.0.2 - '@types/node': 14.17.2 + '@types/node': 14.17.3 chalk: 4.1.1 co: 4.6.0 expect: 27.0.2 @@ -18757,7 +18456,7 @@ packages: /jest-mock/27.0.3: dependencies: '@jest/types': 27.0.2 - '@types/node': 14.17.2 + '@types/node': 14.17.3 dev: false engines: node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0 @@ -18827,7 +18526,7 @@ packages: '@jest/test-result': 27.0.2 '@jest/transform': 27.0.2 '@jest/types': 27.0.2 - '@types/node': 14.17.2 + '@types/node': 14.17.3 chalk: 4.1.1 emittery: 0.8.1 exit: 0.1.2 @@ -18890,7 +18589,7 @@ packages: integrity: sha512-DxYipDr8OvfrKH3Kel6NdED3OXxjvxXZ1uIY2I9OFbGg+vUkkg7AGvi65qbhbWNPvDckXmzMPbK3u3HaDO49bQ== /jest-serializer/26.6.2: dependencies: - '@types/node': 14.17.2 + '@types/node': 14.17.3 graceful-fs: 4.2.6 dev: false engines: @@ -18899,7 +18598,7 @@ packages: integrity: sha512-S5wqyz0DXnNJPd/xfIzZ5Xnp1HrJWBczg8mMfMpN78OJ5eDxXyf+Ygld9wX1DnUWbIbhM1YDY95NjR4CBXkb2g== /jest-serializer/27.0.1: dependencies: - '@types/node': 14.17.2 + '@types/node': 14.17.3 graceful-fs: 4.2.6 dev: false engines: @@ -18908,17 +18607,17 @@ packages: integrity: sha512-svy//5IH6bfQvAbkAEg1s7xhhgHTtXu0li0I2fdKHDsLP2P2MOiscPQIENQep8oU2g2B3jqLyxKKzotZOz4CwQ== /jest-snapshot/27.0.4: dependencies: - '@babel/core': 7.14.3 + '@babel/core': 7.14.5 '@babel/generator': 7.14.5 - '@babel/parser': 7.14.5 - '@babel/plugin-syntax-typescript': 7.14.5_@babel+core@7.14.3 + '@babel/parser': 7.14.6 + '@babel/plugin-syntax-typescript': 7.14.5_@babel+core@7.14.5 '@babel/traverse': 7.14.5 '@babel/types': 7.14.5 '@jest/transform': 27.0.2 '@jest/types': 27.0.2 '@types/babel__traverse': 7.11.1 - '@types/prettier': 2.2.3 - babel-preset-current-node-syntax: 1.0.1_@babel+core@7.14.3 + '@types/prettier': 2.3.0 + babel-preset-current-node-syntax: 1.0.1_@babel+core@7.14.5 chalk: 4.1.1 expect: 27.0.2 graceful-fs: 4.2.6 @@ -18959,7 +18658,7 @@ packages: /jest-util/26.6.2: dependencies: '@jest/types': 26.6.2 - '@types/node': 14.17.2 + '@types/node': 14.17.3 chalk: 4.1.1 graceful-fs: 4.2.6 is-ci: 2.0.0 @@ -18972,7 +18671,7 @@ packages: /jest-util/27.0.2: dependencies: '@jest/types': 27.0.2 - '@types/node': 14.17.2 + '@types/node': 14.17.3 chalk: 4.1.1 graceful-fs: 4.2.6 is-ci: 3.0.0 @@ -18999,7 +18698,7 @@ packages: dependencies: '@jest/test-result': 27.0.2 '@jest/types': 27.0.2 - '@types/node': 14.17.2 + '@types/node': 14.17.3 ansi-escapes: 4.3.2 chalk: 4.1.1 jest-util: 27.0.2 @@ -19020,7 +18719,7 @@ packages: integrity: sha512-51PE4haMSXcHohnSMdM42anbvZANYTqMrr52tVKPqqsPJMzoP6FYYDVqahX/HrAoKEKz3uUPzSvKs9A3qR4iVw== /jest-worker/26.6.2: dependencies: - '@types/node': 14.17.2 + '@types/node': 14.17.3 merge-stream: 2.0.0 supports-color: 7.2.0 dev: false @@ -19030,7 +18729,7 @@ packages: integrity: sha512-KWYVV1c4i+jbMpaBC+U++4Va0cp8OisU185o73T1vo99hqi7w8tSJfUXYswwqqrjzwxa6KpRK54WhPvwf5w6PQ== /jest-worker/27.0.2: dependencies: - '@types/node': 14.17.2 + '@types/node': 14.17.3 merge-stream: 2.0.0 supports-color: 8.1.1 dev: false @@ -19162,7 +18861,7 @@ packages: whatwg-encoding: 1.0.5 whatwg-mimetype: 2.3.0 whatwg-url: 7.1.0 - ws: 7.4.6 + ws: 7.5.0 xml-name-validator: 3.0.0 dev: false engines: @@ -19177,7 +18876,7 @@ packages: /jsdom/16.6.0: dependencies: abab: 2.0.5 - acorn: 8.3.0 + acorn: 8.4.0 acorn-globals: 6.0.0 cssom: 0.4.4 cssstyle: 2.3.0 @@ -19201,7 +18900,7 @@ packages: whatwg-encoding: 1.0.5 whatwg-mimetype: 2.3.0 whatwg-url: 8.6.0 - ws: 7.4.6 + ws: 7.5.0 xml-name-validator: 3.0.0 dev: false engines: @@ -19262,6 +18961,10 @@ packages: dev: false resolution: integrity: sha1-Wx85evx11ne96Lz8Dkfh+aPZqJg= + /json-loader/0.5.7: + dev: false + resolution: + integrity: sha512-QLPs8Dj7lnf3e3QYS1zkCo+4ZwqOiF9d/nZnYozTISxXWCfNs9yuky5rJw4/W34s7POaNlbZmQGaB5NiXCbP4w== /json-parse-better-errors/1.0.2: dev: false resolution: @@ -19437,7 +19140,7 @@ packages: integrity: sha1-MT5mvB5cwG5Di8G3SZwuXFastqI= /jss-plugin-camel-case/10.6.0: dependencies: - '@babel/runtime': 7.14.5 + '@babel/runtime': 7.14.6 hyphenate-style-name: 1.0.4 jss: 10.6.0 dev: false @@ -19445,21 +19148,21 @@ packages: integrity: sha512-JdLpA3aI/npwj3nDMKk308pvnhoSzkW3PXlbgHAzfx0yHWnPPVUjPhXFtLJzgKZge8lsfkUxvYSQ3X2OYIFU6A== /jss-plugin-default-unit/10.6.0: dependencies: - '@babel/runtime': 7.14.5 + '@babel/runtime': 7.14.6 jss: 10.6.0 dev: false resolution: integrity: sha512-7y4cAScMHAxvslBK2JRK37ES9UT0YfTIXWgzUWD5euvR+JR3q+o8sQKzBw7GmkQRfZijrRJKNTiSt1PBsLI9/w== /jss-plugin-global/10.6.0: dependencies: - '@babel/runtime': 7.14.5 + '@babel/runtime': 7.14.6 jss: 10.6.0 dev: false resolution: integrity: sha512-I3w7ji/UXPi3VuWrTCbHG9rVCgB4yoBQLehGDTmsnDfXQb3r1l3WIdcO8JFp9m0YMmyy2CU7UOV6oPI7/Tmu+w== /jss-plugin-nested/10.6.0: dependencies: - '@babel/runtime': 7.14.5 + '@babel/runtime': 7.14.6 jss: 10.6.0 tiny-warning: 1.0.3 dev: false @@ -19467,14 +19170,14 @@ packages: integrity: sha512-fOFQWgd98H89E6aJSNkEh2fAXquC9aZcAVjSw4q4RoQ9gU++emg18encR4AT4OOIFl4lQwt5nEyBBRn9V1Rk8g== /jss-plugin-props-sort/10.6.0: dependencies: - '@babel/runtime': 7.14.5 + '@babel/runtime': 7.14.6 jss: 10.6.0 dev: false resolution: integrity: sha512-oMCe7hgho2FllNc60d9VAfdtMrZPo9n1Iu6RNa+3p9n0Bkvnv/XX5San8fTPujrTBScPqv9mOE0nWVvIaohNuw== /jss-plugin-rule-value-function/10.6.0: dependencies: - '@babel/runtime': 7.14.5 + '@babel/runtime': 7.14.6 jss: 10.6.0 tiny-warning: 1.0.3 dev: false @@ -19482,7 +19185,7 @@ packages: integrity: sha512-TKFqhRTDHN1QrPTMYRlIQUOC2FFQb271+AbnetURKlGvRl/eWLswcgHQajwuxI464uZk91sPiTtdGi7r7XaWfA== /jss-plugin-vendor-prefixer/10.6.0: dependencies: - '@babel/runtime': 7.14.5 + '@babel/runtime': 7.14.6 css-vendor: 2.0.8 jss: 10.6.0 dev: false @@ -19490,7 +19193,7 @@ packages: integrity: sha512-doJ7MouBXT1lypLLctCwb4nJ6lDYqrTfVS3LtXgox42Xz0gXusXIIDboeh6UwnSmox90QpVnub7au8ybrb0krQ== /jss/10.6.0: dependencies: - '@babel/runtime': 7.14.5 + '@babel/runtime': 7.14.6 csstype: 3.0.8 indefinite-observable: 2.0.1 is-in-browser: 1.1.3 @@ -19661,7 +19364,7 @@ packages: integrity: sha1-U3cWwHduTPeePtG2IfdljCkRsbE= /lazy-universal-dotenv/3.0.1: dependencies: - '@babel/runtime': 7.14.5 + '@babel/runtime': 7.14.6 app-root-dir: 1.0.2 core-js: 3.14.0 dotenv: 8.2.0 @@ -20061,6 +19764,17 @@ packages: node: '>=0.10.0' resolution: integrity: sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA= + /load-json-file/2.0.0: + dependencies: + graceful-fs: 4.2.6 + parse-json: 2.2.0 + pify: 2.3.0 + strip-bom: 3.0.0 + dev: false + engines: + node: '>=4' + resolution: + integrity: sha1-eUfkIUmvgNaWy/eXvKq8/h/inKg= /load-json-file/4.0.0: dependencies: graceful-fs: 4.2.6 @@ -20155,7 +19869,6 @@ packages: integrity: sha1-DM8tiRZq8Ds2Y8eWU4t1rG4RTZ0= /lodash.assign/4.2.0: dev: false - optional: true resolution: integrity: sha1-DZnzzNem0mHRm9rrkkUAXShYCOc= /lodash.assignin/4.2.0: @@ -20463,7 +20176,7 @@ packages: integrity: sha1-miyr0bno4K6ZOkv31YdcOcQujqw= /lower-case/2.0.2: dependencies: - tslib: 2.2.0 + tslib: 2.3.0 dev: false resolution: integrity: sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg== @@ -20671,13 +20384,13 @@ packages: hasBin: true resolution: integrity: sha512-ea2eGWOqNxPcXv8dyERdSr/6FmzvWwzjMxpfGB/sbMccXoct+xY+YukPD+QTUZwyvK7BZwcr4m21WBOW41pAkg== - /marked/2.0.7: + /marked/2.1.1: dev: false engines: - node: '>= 8.16.2' + node: '>= 12' hasBin: true resolution: - integrity: sha512-BJXxkuIfJchcXOJWTT2DOL+yFWifFv2yGYOUzvXg8Qz610QKw+sHCvTMYwA+qWGhlA2uivBezChZ/pBy1tWdkQ== + integrity: sha512-5XFS69o9CzDpQDSpUYC+AN2xvq8yl1EGa5SG/GI1hP78/uTeo3PDfiDNmsUyiahpyhToDDJhQk7fNtJsga+KVw== /math-random/1.0.4: dev: false resolution: @@ -21024,7 +20737,7 @@ packages: integrity: sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg== /mini-create-react-context/0.4.1_prop-types@15.7.2+react@17.0.2: dependencies: - '@babel/runtime': 7.14.5 + '@babel/runtime': 7.14.6 prop-types: 15.7.2 react: 17.0.2 tiny-warning: 1.0.3 @@ -21366,7 +21079,7 @@ packages: integrity: sha512-OjpkVHOXEmIKMO8WChzzQ7aZQcSQX8squxmvtDbRpy7/QNmJ3Z7jv6qyD74C28QtaeNie8O8ngW2AkeiMmKP7A== /multiaddr/8.1.2: dependencies: - cids: 1.1.6 + cids: 1.1.7 class-is: 1.1.0 dns-over-http-resolver: 1.2.3 err-code: 2.0.3 @@ -21529,6 +21242,10 @@ packages: dev: false resolution: integrity: sha512-M2ufzIiINKCuDfBSAUr1vWQ+vuVcA9kqx8JJUsbQi6yf1uGRyb7HfpdfUr5qLXf3B/t8dPvcjhKMmlfnP47EzQ== + /nano-base32/1.0.1: + dev: false + resolution: + integrity: sha1-ulSMh578+5DaHE2eCX20pGySVe8= /nano-json-stream-parser/0.1.2: dev: false resolution: @@ -21695,7 +21412,7 @@ packages: /no-case/3.0.4: dependencies: lower-case: 2.0.2 - tslib: 2.2.0 + tslib: 2.3.0 dev: false resolution: integrity: sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg== @@ -22441,7 +22158,6 @@ packages: dev: false engines: node: '>=0.10.0' - optional: true resolution: integrity: sha1-IPnxeuKe00XoveWDsT0gCYA8FNk= /os-locale/2.1.0: @@ -22713,7 +22429,7 @@ packages: /param-case/3.0.4: dependencies: dot-case: 3.0.4 - tslib: 2.2.0 + tslib: 2.3.0 dev: false resolution: integrity: sha512-RXlj7zCYokReqWpOPH9oYivUzLYZ5vAPIfEmCTNViosC78F8F0H9y7T7gG2M39ymgutxF5gcFEsyZQSph9Bp3A== @@ -22852,7 +22568,7 @@ packages: /pascal-case/3.1.2: dependencies: no-case: 3.0.4 - tslib: 2.2.0 + tslib: 2.3.0 dev: false resolution: integrity: sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g== @@ -23007,6 +22723,14 @@ packages: node: '>=0.10.0' resolution: integrity: sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE= + /path-type/2.0.0: + dependencies: + pify: 2.3.0 + dev: false + engines: + node: '>=4' + resolution: + integrity: sha1-8BLMuEFbcJb8LaoQVMPXI4lZTHM= /path-type/3.0.0: dependencies: pify: 3.0.0 @@ -23051,7 +22775,7 @@ packages: integrity: sha512-iuh7L6jA7JEGu2WxDwtQP1ddOpaJNC4KlDEFfdQajSGgGPNi4OyDc2R7QnbY2bR9QjBVGwgvTdNJZoE7RaxUMA== /peer-id/0.14.8: dependencies: - cids: 1.1.6 + cids: 1.1.7 class-is: 1.1.0 libp2p-crypto: 0.19.4 minimist: 1.2.5 @@ -23267,7 +22991,7 @@ packages: integrity: sha512-7Wjy+9E3WwLOEL30D+m8TSTF7qJJUJLONBnwQp0518siuMxUQUbgZwssaFX+QKlZkjHZcw/IpZCt/H0srrntSg== /polished/4.1.3: dependencies: - '@babel/runtime': 7.14.5 + '@babel/runtime': 7.14.6 dev: false engines: node: '>=10' @@ -23299,16 +23023,16 @@ packages: integrity: sha1-AerA/jta9xoqbAL+q7jB/vfgDqs= /postcss-flexbugs-fixes/4.2.1: dependencies: - postcss: 7.0.35 + postcss: 7.0.36 dev: false resolution: integrity: sha512-9SiofaZ9CWpQWxOwRh1b/r85KD5y7GgvsNt1056k6OYLvWUun0czCvogfJgylC22uJTwW1KzY3Gz65NZRlvoiQ== - /postcss-loader/4.3.0_postcss@7.0.35+webpack@4.46.0: + /postcss-loader/4.3.0_postcss@7.0.36+webpack@4.46.0: dependencies: cosmiconfig: 7.0.0 klona: 2.0.4 loader-utils: 2.0.0 - postcss: 7.0.35 + postcss: 7.0.36 schema-utils: 3.0.0 semver: 7.3.5 webpack: 4.46.0_webpack-cli@4.7.2 @@ -23322,15 +23046,15 @@ packages: integrity: sha512-M/dSoIiNDOo8Rk0mUqoj4kpGq91gcxCfb9PoyZVdZ76/AuhxylHDYZblNE8o+EQ9AMSASeMFEKxZf5aU6wlx1Q== /postcss-modules-extract-imports/2.0.0: dependencies: - postcss: 7.0.35 + postcss: 7.0.36 dev: false engines: node: '>= 6' resolution: integrity: sha512-LaYLDNS4SG8Q5WAWqIJgdHPJrDDr/Lv775rMBFUbgjTz6j34lUznACHcdRWroPvXANP2Vj7yNK57vp9eFqzLWQ== - /postcss-modules-extract-imports/3.0.0_postcss@8.3.1: + /postcss-modules-extract-imports/3.0.0_postcss@8.3.5: dependencies: - postcss: 8.3.1 + postcss: 8.3.5 dev: false engines: node: ^10 || ^12 || >= 14 @@ -23341,7 +23065,7 @@ packages: /postcss-modules-local-by-default/3.0.3: dependencies: icss-utils: 4.1.1 - postcss: 7.0.35 + postcss: 7.0.36 postcss-selector-parser: 6.0.6 postcss-value-parser: 4.1.0 dev: false @@ -23349,10 +23073,10 @@ packages: node: '>= 6' resolution: integrity: sha512-e3xDq+LotiGesympRlKNgaJ0PCzoUIdpH0dj47iWAui/kyTgh3CiAr1qP54uodmJhl6p9rN6BoNcdEDVJx9RDw== - /postcss-modules-local-by-default/4.0.0_postcss@8.3.1: + /postcss-modules-local-by-default/4.0.0_postcss@8.3.5: dependencies: - icss-utils: 5.1.0_postcss@8.3.1 - postcss: 8.3.1 + icss-utils: 5.1.0_postcss@8.3.5 + postcss: 8.3.5 postcss-selector-parser: 6.0.6 postcss-value-parser: 4.1.0 dev: false @@ -23364,16 +23088,16 @@ packages: integrity: sha512-sT7ihtmGSF9yhm6ggikHdV0hlziDTX7oFoXtuVWeDd3hHObNkcHRo9V3yg7vCAY7cONyxJC/XXCmmiHHcvX7bQ== /postcss-modules-scope/2.2.0: dependencies: - postcss: 7.0.35 + postcss: 7.0.36 postcss-selector-parser: 6.0.6 dev: false engines: node: '>= 6' resolution: integrity: sha512-YyEgsTMRpNd+HmyC7H/mh3y+MeFWevy7V1evVhJWewmMbjDHIbZbOXICC2y+m1xI1UVfIT1HMW/O04Hxyu9oXQ== - /postcss-modules-scope/3.0.0_postcss@8.3.1: + /postcss-modules-scope/3.0.0_postcss@8.3.5: dependencies: - postcss: 8.3.1 + postcss: 8.3.5 postcss-selector-parser: 6.0.6 dev: false engines: @@ -23385,14 +23109,14 @@ packages: /postcss-modules-values/3.0.0: dependencies: icss-utils: 4.1.1 - postcss: 7.0.35 + postcss: 7.0.36 dev: false resolution: integrity: sha512-1//E5jCBrZ9DmRX+zCtmQtRSV6PV42Ix7Bzj9GbwJceduuf7IqP8MgeTXuRDHOWj2m0VzZD5+roFWDuU8RQjcg== - /postcss-modules-values/4.0.0_postcss@8.3.1: + /postcss-modules-values/4.0.0_postcss@8.3.5: dependencies: - icss-utils: 5.1.0_postcss@8.3.1 - postcss: 8.3.1 + icss-utils: 5.1.0_postcss@8.3.5 + postcss: 8.3.5 dev: false engines: node: ^10 || ^12 || >= 14 @@ -23413,7 +23137,7 @@ packages: dev: false resolution: integrity: sha512-97DXOFbQJhk71ne5/Mt6cOu6yxsSfM0QGQyl0L25Gca4yGWEGJaig7l7gbCX623VqTBNGLRLaVUCnNkcedlRSQ== - /postcss/7.0.35: + /postcss/7.0.36: dependencies: chalk: 2.4.2 source-map: 0.6.1 @@ -23422,8 +23146,8 @@ packages: engines: node: '>=6.0.0' resolution: - integrity: sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg== - /postcss/8.3.1: + integrity: sha512-BebJSIUMwJHRH0HAQoxN4u1CN86glsrwsW0q7T+/m44eXOUAxSNdHRkNZPYz5vVUbg17hFgOQDE7fZk7li3pZw== + /postcss/8.3.5: dependencies: colorette: 1.2.2 nanoid: 3.1.23 @@ -23432,7 +23156,7 @@ packages: engines: node: ^10 || ^12 || >=14 resolution: - integrity: sha512-9qH0MGjsSm+fjxOi3GnwViL1otfi7qkj+l/WX5gcRGmZNGsIcqc+A5fBkE6PUobEQK4APqYVaES+B3Uti98TCw== + integrity: sha512-NxTuJocUhYGsMiMFHDUkmjSKT3EdH4/WbGF6GCi1NDGk+vbcUTun4fpbOqaPtD8IIsztA2ilZm2DhYCuyN58gA== /postgres-array/2.0.0: dev: false engines: @@ -23801,7 +23525,7 @@ packages: /pretty-error/2.1.2: dependencies: lodash: 4.17.21 - renderkid: 2.0.6 + renderkid: 2.0.7 dev: false resolution: integrity: sha512-EY5oDzmsX5wvuynAByrmY0P0hcp+QpnAKbJng2A2MPjVKXCxrDSUkzghVJ4ZGPIv+JC4gX8fPUWscC0RtjsWGw== @@ -23835,7 +23559,7 @@ packages: integrity: sha1-t+PqQkNaTJsnWdmeDyAesZWALuE= /preview-email/2.0.2: dependencies: - '@babel/runtime': 7.14.5 + '@babel/runtime': 7.14.6 dayjs: 1.10.5 debug: 4.3.1 mailparser: 2.8.1 @@ -24009,7 +23733,7 @@ packages: '@protobufjs/pool': 1.1.0 '@protobufjs/utf8': 1.1.0 '@types/long': 4.0.1 - '@types/node': 14.17.2 + '@types/node': 14.17.3 long: 4.0.0 dev: false hasBin: true @@ -24501,7 +24225,7 @@ packages: endent: 2.0.1 micromatch: 4.0.4 react-docgen-typescript: 1.22.0_typescript@4.3.2 - tslib: 2.2.0 + tslib: 2.3.0 typescript: 4.3.2 dev: false peerDependencies: @@ -24518,9 +24242,9 @@ packages: integrity: sha512-MPLbF8vzRwAG3GcjdL+OHQlhgtWsLTXs+7uJiHfEeT3Ur7IsZaNYqRTLQ9sj2nB6M6jylcPCeCmH7qbszJmecg== /react-docgen/5.4.0: dependencies: - '@babel/core': 7.14.3 + '@babel/core': 7.14.5 '@babel/generator': 7.14.5 - '@babel/runtime': 7.14.5 + '@babel/runtime': 7.14.6 ast-types: 0.14.2 commander: 2.20.3 doctrine: 3.0.0 @@ -24579,7 +24303,7 @@ packages: integrity: sha512-WZbvG72cjLXAxV7VOuSzuHEaI3RHj10DZu8EcKQpkKcAj7+qAkG5XUeSdX5FXrA0vPrlx0QsnAzZEBJwzV0e+w== /react-error-boundary/3.1.3_react@17.0.2: dependencies: - '@babel/runtime': 7.14.5 + '@babel/runtime': 7.14.6 react: 17.0.2 dev: false engines: @@ -24603,7 +24327,7 @@ packages: integrity: sha512-rtGImPZ0YyLrscKI9xTpV8psd6I8VAtjKCzQDlzyDvqJA8XOW78TXYQwNRNd8g8JZnDu8q9Fu/1v4HPAVwVdHA== /react-helmet-async/1.0.9_react-dom@17.0.2+react@17.0.2: dependencies: - '@babel/runtime': 7.14.5 + '@babel/runtime': 7.14.6 invariant: 2.2.4 prop-types: 15.7.2 react: 17.0.2 @@ -24626,7 +24350,7 @@ packages: integrity: sha512-prq82ofMbnRyj5wqDe8hsTRcdR25jQ+B8KtCS7BLCzjFHAwNuCjRwzPuP4eYLsEBjEIeYd6try+pdLdw0kPkpg== /react-i18next/11.10.0_i18next@20.3.1+react@17.0.2: dependencies: - '@babel/runtime': 7.14.5 + '@babel/runtime': 7.14.6 html-parse-stringify: 3.0.1 i18next: 20.3.1 react: 17.0.2 @@ -24638,7 +24362,7 @@ packages: integrity: sha512-Vn0Xw2MczBZHKciWdayx4J+P3S9Im2FWIzUPV2O7iUVFqIOhMv6o9mVTJN1gEi/MA2FZzorjvaEijglCMeehZQ== /react-inspector/5.1.1_react@17.0.2: dependencies: - '@babel/runtime': 7.14.5 + '@babel/runtime': 7.14.6 is-dom: 1.1.0 prop-types: 15.7.2 react: 17.0.2 @@ -24661,7 +24385,7 @@ packages: integrity: sha512-fBASbA6LnOU9dOU2eW7aQ8xmYBSXUIWr+UmF9b1efZBazGNO+rcXT/icdKnYm2pTwcRylVUYwW7H1PHfLekVzA== /react-popper-tooltip/3.1.1_react-dom@17.0.2+react@17.0.2: dependencies: - '@babel/runtime': 7.14.5 + '@babel/runtime': 7.14.6 '@popperjs/core': 2.9.2 react: 17.0.2 react-dom: 17.0.2_react@17.0.2 @@ -24686,7 +24410,7 @@ packages: integrity: sha512-kxGkS80eQGtLl18+uig1UIf9MKixFSyPxglsgLBxlYnyDf65BiY9B3nZSc6C9XUNDgStROB0fMQlTEz1KxGddw== /react-redux/7.2.4_react-dom@17.0.2+react@17.0.2: dependencies: - '@babel/runtime': 7.14.5 + '@babel/runtime': 7.14.6 '@types/react-redux': 7.1.16 hoist-non-react-statics: 3.3.2 loose-envify: 1.4.0 @@ -24714,7 +24438,7 @@ packages: integrity: sha512-X8jZHc7nCMjaCqoU+V2I0cOhNW+QMBwSUkeXnTi8IPe6zaRWfn60ZzvFDZqWPfmSJfjub7dDW1SP0jaHWLu/hg== /react-router-dom/5.2.0_react@17.0.2: dependencies: - '@babel/runtime': 7.14.5 + '@babel/runtime': 7.14.6 history: 4.10.1 loose-envify: 1.4.0 prop-types: 15.7.2 @@ -24729,7 +24453,7 @@ packages: integrity: sha512-gxAmfylo2QUjcwxI63RhQ5G85Qqt4voZpUXSEqCwykV0baaOTQDR1f0PmY8AELqIyVc0NEZUj0Gov5lNGcXgsA== /react-router/5.2.0_react@17.0.2: dependencies: - '@babel/runtime': 7.14.5 + '@babel/runtime': 7.14.6 history: 4.10.1 hoist-non-react-statics: 3.3.2 loose-envify: 1.4.0 @@ -24761,7 +24485,7 @@ packages: integrity: sha512-9Hf1NLgSbny1bha77l9HwvwwxQUJxFUqi44Ih+y3evA+PezBpGdCGlnvye6avss2cIgs9PgdYgMnfuzJWn/RUw== /react-syntax-highlighter/13.5.3_react@17.0.2: dependencies: - '@babel/runtime': 7.14.5 + '@babel/runtime': 7.14.6 highlight.js: 10.7.3 lowlight: 1.20.0 prismjs: 1.23.0 @@ -24786,7 +24510,7 @@ packages: integrity: sha512-L8yPjqPE5CZO6rKsKXRO/rVPiaCOy0tQQJbC+UjPNlobl5mad59lvPjwFsQHTvL03caVDIVr9x9/OSgDe6I5Eg== /react-textarea-autosize/8.3.3_189cc19b8edfe5959338b863f6e5c247: dependencies: - '@babel/runtime': 7.14.5 + '@babel/runtime': 7.14.6 react: 17.0.2 use-composed-ref: 1.1.0_react@17.0.2 use-latest: 1.2.0_189cc19b8edfe5959338b863f6e5c247 @@ -24800,7 +24524,7 @@ packages: integrity: sha512-2XlHXK2TDxS6vbQaoPbMOfQ8GK7+irc2fVK6QFIcC8GOnH3zI/v481n+j1L0WaPVvKxwesnY93fEfH++sus2rQ== /react-transition-group/4.4.2_react-dom@17.0.2+react@17.0.2: dependencies: - '@babel/runtime': 7.14.5 + '@babel/runtime': 7.14.6 dom-helpers: 5.2.1 loose-envify: 1.4.0 prop-types: 15.7.2 @@ -24830,6 +24554,15 @@ packages: node: '>=0.10.0' resolution: integrity: sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI= + /read-pkg-up/2.0.0: + dependencies: + find-up: 2.1.0 + read-pkg: 2.0.0 + dev: false + engines: + node: '>=4' + resolution: + integrity: sha1-a3KoBImE4MQeeVEP1en6mbO1Sb4= /read-pkg-up/4.0.0: dependencies: find-up: 3.0.0 @@ -24859,6 +24592,16 @@ packages: node: '>=0.10.0' resolution: integrity: sha1-9f+qXs0pyzHAR0vKfXVra7KePyg= + /read-pkg/2.0.0: + dependencies: + load-json-file: 2.0.0 + normalize-package-data: 2.5.0 + path-type: 2.0.0 + dev: false + engines: + node: '>=4' + resolution: + integrity: sha1-jvHAYjxqbbDcZxPEv6xGMysjaPg= /read-pkg/3.0.0: dependencies: load-json-file: 4.0.0 @@ -24888,7 +24631,7 @@ packages: /readable-stream/1.0.33: dependencies: core-util-is: 1.0.2 - inherits: 2.0.4 + inherits: 2.0.3 isarray: 0.0.1 string_decoder: 0.10.31 dev: false @@ -24973,6 +24716,14 @@ packages: node: '>=8.10.0' resolution: integrity: sha512-cMhu7c/8rdhkHXWsY+osBhfSy0JikwpHK/5+imo+LpeasTF8ouErHrlYkwT0++njiyuDvc7OFY5T3ukvZ8qmFQ== + /readdirp/3.6.0: + dependencies: + picomatch: 2.3.0 + dev: false + engines: + node: '>=8.10.0' + resolution: + integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA== /realpath-native/1.1.0: dependencies: util.promisify: 1.1.1 @@ -25090,7 +24841,7 @@ packages: integrity: sha512-pNqnf9q1hI5HHZRBkj3bAngGZW/JMCmexDlOxw4XagXY2o1327nHH54LoTjiPJ0gizoqPDRqWyX/00g0hD6w+A== /redux/4.1.0: dependencies: - '@babel/runtime': 7.14.5 + '@babel/runtime': 7.14.6 dev: false resolution: integrity: sha512-uI2dQN43zqLWCt6B/BMGRMY6db7TTY4qeHHfGeKb3EOhmOKjU3KdWvNLJyqaHRksv/ErdNH7cFZWg9jXtewy4g== @@ -25140,7 +24891,7 @@ packages: integrity: sha512-PJepbvDbuK1xgIgnau7Y90cwaAmO/LCLMI2mPvaXq2heGMR3aWW5/BQvYrhJ8jgmQjXewXvBjzfqKcVOmhjZ6Q== /regenerator-transform/0.14.5: dependencies: - '@babel/runtime': 7.14.5 + '@babel/runtime': 7.14.6 dev: false resolution: integrity: sha512-eOf6vka5IO151Jfsw2NO9WpGX58W6wWmefK3I1zEGr0lOD0u8rwPaNqQL1aRxUaxLeKO3ArNh3VYg1KbaD+FFw== @@ -25227,8 +24978,8 @@ packages: dependencies: '@babel/core': 7.14.5 '@babel/generator': 7.14.5 - '@babel/parser': 7.14.5 - '@babel/runtime': 7.14.5 + '@babel/parser': 7.14.6 + '@babel/runtime': 7.14.6 '@babel/traverse': 7.14.5 '@babel/types': 7.14.5 babel-preset-fbjs: 3.4.0_@babel+core@7.14.5 @@ -25251,7 +25002,7 @@ packages: integrity: sha512-HPqc3N3tNgEgUH5+lTr5lnLbgnsZMt+MRiyS0uAVNhuPY2It0X1ZJG+9qdA3L9IqKFUNwVn6zTO7RArjMZbARQ== /relay-runtime/10.1.0: dependencies: - '@babel/runtime': 7.14.5 + '@babel/runtime': 7.14.6 fbjs: 3.0.0 dev: false optional: true @@ -25359,16 +25110,16 @@ packages: dev: false resolution: integrity: sha512-O3vsMYfWighyFbTd8hk8VaSj9UAGENxAtX+//ugIst2RMk5e03h6RoIS+0ylsFxY1gvmPuAY/PO4It+gPEeySA== - /renderkid/2.0.6: + /renderkid/2.0.7: dependencies: css-select: 4.1.3 dom-converter: 0.2.0 htmlparser2: 6.1.0 lodash: 4.17.21 - strip-ansi: 6.0.0 + strip-ansi: 3.0.1 dev: false resolution: - integrity: sha512-GIis2GBr/ho0pFNf57D4XM4+PgnQuTii0WCPjEZmZfKivzUfGuRdjN2aQYtYMiNggHmNyBve+thFnNR1iBRcKg== + integrity: sha512-oCcFyxaMrKsKcTY59qnCAtmDVSLfPbrv6A3tVbPdFMMrv5jaK10V6m40cKsoPNhAqN6rmHW9sswW4o3ruSrwUQ== /repeat-element/1.1.4: dev: false engines: @@ -25461,6 +25212,12 @@ packages: node: '>=0.10.0' resolution: integrity: sha1-jGStX9MNqxyXbiNE/+f3kqam30I= + /require-from-string/1.2.1: + dev: false + engines: + node: '>=0.10.0' + resolution: + integrity: sha1-UpyczvJzgK3+yaL5ZbZJu+5jZBg= /require-from-string/2.0.2: dev: false engines: @@ -25549,7 +25306,7 @@ packages: adjust-sourcemap-loader: 4.0.0 convert-source-map: 1.7.0 loader-utils: 2.0.0 - postcss: 7.0.35 + postcss: 7.0.36 source-map: 0.6.1 dev: false engines: @@ -25654,7 +25411,7 @@ packages: integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw== /rifm/0.7.0_react@17.0.2: dependencies: - '@babel/runtime': 7.14.5 + '@babel/runtime': 7.14.6 react: 17.0.2 dev: false peerDependencies: @@ -25683,6 +25440,12 @@ packages: hasBin: true resolution: integrity: sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA== + /ripemd160-min/0.0.6: + dev: false + engines: + node: '>=8' + resolution: + integrity: sha512-+GcJgQivhs6S9qvLogusiTcS9kQUfgR75whKuy5jIhuiOfQuJ8fjqxV6EGD5duH1Y/FawFUMtMhyeq3Fbnib8A== /ripemd160/2.0.2: dependencies: hash-base: 3.1.0 @@ -25703,7 +25466,7 @@ packages: integrity: sha512-btNg5kzHcjZZ7t7mvvV/4wNJ9e3MPgrWivkRgWURzXL0JJ0pwWlU4zrbmdlz3HHzHOxhBhHB4D+/dbMFfu4/4A== /rpc-websockets/5.3.1: dependencies: - '@babel/runtime': 7.14.5 + '@babel/runtime': 7.14.6 assert-args: 1.2.1 babel-runtime: 6.26.0 circular-json: 0.5.9 @@ -26217,6 +25980,12 @@ packages: hasBin: true resolution: integrity: sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ== + /sha3/2.1.4: + dependencies: + buffer: 6.0.3 + dev: false + resolution: + integrity: sha512-S8cNxbyb0UGUM2VhRD4Poe5N58gJnJsLJ5vC7FYWGUmGhcsj4++WaIOBFVDxlG0W3To6xBuiRh+i0Qp2oNCOtg== /shallow-clone/3.0.1: dependencies: kind-of: 6.0.3 @@ -26532,6 +26301,17 @@ packages: node: '>=8.0.0' resolution: integrity: sha512-FWBnuQfU537SVSsBxuE4XkOKcK88a/bpLMVde2gc3BZcj0VmPc38wYO0Hkqqxsek7ZLK2lmXuEDLmgXhXl8Kyw== + /solc/0.4.26: + dependencies: + fs-extra: 0.30.0 + memorystream: 0.3.1 + require-from-string: 1.2.1 + semver: 5.7.1 + yargs: 4.8.1 + dev: false + hasBin: true + resolution: + integrity: sha512-o+c6FpkiHd+HPjmjEVpQgH7fqZ14tJpXhho+/bQXlXbliLIS/xjXb42Vxh+qQY1WCSTMQ0+a5vR9vi0MfhU6mA== /solc/0.8.4: dependencies: command-exists: 1.2.9 @@ -27281,7 +27061,7 @@ packages: graphql: 15.5.0 iterall: 1.3.0 symbol-observable: 1.2.0 - ws: 7.4.6 + ws: 7.5.0 dev: false optional: true peerDependencies: @@ -27374,6 +27154,14 @@ packages: node: '>=4' resolution: integrity: sha512-rKC3+DyXWgK0ZLKwmRsrkyHVZAjNkfzeehuFWdGGcqGDTZFH73+RH6S/RDAAxl9GusSjZSUWYLmT9N5pzXFOXQ== + /supports-color/4.5.0: + dependencies: + has-flag: 2.0.0 + dev: false + engines: + node: '>=4' + resolution: + integrity: sha1-vnoN5ITexcXN34s9WRJQRJEvY1s= /supports-color/5.5.0: dependencies: has-flag: 3.0.0 @@ -27556,6 +27344,12 @@ packages: dev: false resolution: integrity: sha1-KtNxaWKUmPylvIQkMJbTzeDsOjQ= + /tapable/0.2.9: + dev: false + engines: + node: '>=0.6' + resolution: + integrity: sha512-2wsvQ+4GwBvLPLWsNfLCDYGsW6xb7aeC6utq2Qh0PFwgEy7K7dsma9Jsmb2zSQj7GvYAyUGSntLtsv++GmgL1A== /tapable/1.1.3: dev: false engines: @@ -27788,6 +27582,11 @@ packages: node: '>=0.10.0' resolution: integrity: sha1-Edpv9nDzRxpztiXKTz/c97t0gpE= + /testrpc/0.0.1: + deprecated: testrpc has been renamed to ganache-cli, please use this package from now on. + dev: false + resolution: + integrity: sha512-afH1hO+SQ/VPlmaLUFj2636QMeDvPCeQMc/9RBMW0IfjNe9gFD9Ra3ShqYkB7py0do1ZcCna/9acHyzTJ+GcNA== /text-encoding/0.6.4: deprecated: no longer maintained dev: false @@ -28316,7 +28115,7 @@ packages: optional: true resolution: integrity: sha512-uEtWkFM/sdZvRNNDL3Ehu4WVpwaulhwQszV8mrtcdeE8nN00BV9mAmQ88RkrBhFgl9gMgvjJLAQcZbnPXI9mlA== - /ts-invariant/0.7.3: + /ts-invariant/0.7.5: dependencies: tslib: 2.2.0 dev: false @@ -28324,7 +28123,7 @@ packages: node: '>=8' optional: true resolution: - integrity: sha512-UWDDeovyUTIMWj+45g5nhnl+8oo+GhxL5leTaHn5c8FkQWfh8v66gccLd2/YzVmV5hoQUjCEjhrXnQqVDJdvKA== + integrity: sha512-qfVyqTYWEqADMtncLqwpUdMjMSXnsqOeqGtj1LeJNFDjz8oqZ1YxLEp29YCOq65z0LgEiERqQ8ThVjnfibJNpg== /ts-jest/27.0.3_jest@27.0.4+typescript@4.3.2: dependencies: bs-logger: 0.2.6 @@ -28396,7 +28195,7 @@ packages: integrity: sha512-csd+vJOb/gkzvcCHgTGSChYpy5f1/XKNsmvBGO4JXS+z1v2HobugDz4s1IeFXM3wZB44uczs+eazB5Q/ccdhQw== /ts-sinon/2.0.1: dependencies: - '@types/node': 14.17.2 + '@types/node': 14.17.3 '@types/sinon': 9.0.11 '@types/sinon-chai': 3.2.5 sinon: 9.2.4 @@ -28441,6 +28240,10 @@ packages: dev: false resolution: integrity: sha512-gS9GVHRU+RGn5KQM2rllAlR3dU6m7AcpJKdtH8gFvQiC4Otgk98XnmMU+nZenHt/+VhnBPWwgrJsyrdcw6i23w== + /tslib/2.3.0: + dev: false + resolution: + integrity: sha512-N82ooyxVNm6h1riLCoyS9e3fuJ3AMG2zIZs2Gd1ATcSFjSA23Q0fzjjZeh0jbJvWVDZ0cJT8yaNNaaXHzueNjg== /tsort/0.0.1: dev: false resolution: @@ -28567,7 +28370,7 @@ packages: integrity: sha512-gbQmJXPKuYQ0p3tK+dMhpdQql/UPtSnkPQXw2QM/aqwCengI86z2vEM2e5rVQpmk/blFx1PYNdApSDxE12rR1Q== /typechain/5.0.0_typescript@4.3.2: dependencies: - '@types/prettier': 2.2.3 + '@types/prettier': 2.3.0 command-line-args: 4.0.7 debug: 4.3.1 fs-extra: 7.0.1 @@ -28616,7 +28419,7 @@ packages: handlebars: 4.7.7 lodash: 4.17.21 lunr: 2.3.9 - marked: 2.0.7 + marked: 2.1.1 minimatch: 3.0.4 progress: 2.0.3 shelljs: 0.8.4 @@ -28650,7 +28453,7 @@ packages: mkdirp: 1.0.4 reflect-metadata: 0.1.13 sha.js: 2.4.11 - tslib: 2.2.0 + tslib: 2.3.0 xml2js: 0.4.23 yargonaut: 1.1.4 yargs: 16.2.0 @@ -28746,6 +28549,20 @@ packages: optional: true resolution: integrity: sha1-bgkk1r2mta/jSeOabWMoUKD4grc= + /uglifyjs-webpack-plugin/0.4.6_webpack@3.12.0: + dependencies: + source-map: 0.5.7 + uglify-js: 2.8.29 + webpack: 3.12.0 + webpack-sources: 1.4.3 + dev: false + engines: + node: '>=4.3.0 <5.0.0 || >=5.10' + peerDependencies: + webpack: ^1.9 || ^2 || ^2.1.0-beta || ^2.2.0-rc || ^3.0.0 + requiresBuild: true + resolution: + integrity: sha1-uVH0q7a9YX5m9j64kUmOORdj4wk= /uint8arrays/1.1.0: dependencies: multibase: 3.1.2 @@ -29269,6 +29086,16 @@ packages: node: '>=10.10.0' resolution: integrity: sha512-TxNb7YEUwkLXCQYeudi6lgQ/SZrzNO4kMdlqVxaZPUIUjCv6iSSypUQX70kNBSERpQ8fk48+d61FXk+tgqcWow== + /v8-to-istanbul/8.0.0: + dependencies: + '@types/istanbul-lib-coverage': 2.0.3 + convert-source-map: 1.7.0 + source-map: 0.7.3 + dev: false + engines: + node: '>=10.12.0' + resolution: + integrity: sha512-LkmXi8UUNxnCC+JlH7/fsfsKr5AU110l+SYGJimWNkWhxbN5EyeOtm1MJ0hhvqMMOhGwBj1Fp70Yv9i+hX0QAg== /vali-date/1.0.0: dev: false engines: @@ -29477,7 +29304,7 @@ packages: neo-async: 2.6.2 dev: false optionalDependencies: - chokidar: 3.5.1 + chokidar: 3.5.2 watchpack-chokidar2: 2.0.1 resolution: integrity: sha512-9P3MWk6SrKjHsGkLT2KHXdQ/9SNkyoJbabxnKOoJepsvJjJG8uYTR3yTPxPQvNDI3w4Nz1xnE0TLHK4RIVe/MQ== @@ -30494,7 +30321,7 @@ packages: dependencies: bn.js: 4.12.0 eth-lib: 0.2.8 - ethereum-bloom-filters: 1.0.9 + ethereum-bloom-filters: 1.0.10 ethjs-unit: 0.1.6 number-to-bn: 1.7.0 randombytes: 2.1.0 @@ -30510,7 +30337,7 @@ packages: dependencies: bn.js: 4.11.8 eth-lib: 0.2.7 - ethereum-bloom-filters: 1.0.9 + ethereum-bloom-filters: 1.0.10 ethjs-unit: 0.1.6 number-to-bn: 1.7.0 randombytes: 2.1.0 @@ -30525,7 +30352,7 @@ packages: dependencies: bn.js: 4.11.8 eth-lib: 0.2.7 - ethereum-bloom-filters: 1.0.9 + ethereum-bloom-filters: 1.0.10 ethjs-unit: 0.1.6 number-to-bn: 1.7.0 randombytes: 2.1.0 @@ -30540,7 +30367,7 @@ packages: dependencies: bn.js: 4.12.0 eth-lib: 0.2.8 - ethereum-bloom-filters: 1.0.9 + ethereum-bloom-filters: 1.0.10 ethjs-unit: 0.1.6 number-to-bn: 1.7.0 randombytes: 2.1.0 @@ -30813,6 +30640,36 @@ packages: dev: false resolution: integrity: sha512-kDUmfm3BZrei0y+1NTHJInejzxfhtU8eDj2M7OKb2IWrPFAeO1SOH2KuQ68MSZu9IGEHcxbkKKR1v18FrUSOmA== + /webpack/3.12.0: + dependencies: + acorn: 5.7.4 + acorn-dynamic-import: 2.0.2 + ajv: 6.12.6 + ajv-keywords: 3.5.2_ajv@6.12.6 + async: 2.6.3 + enhanced-resolve: 3.4.1 + escope: 3.6.0 + interpret: 1.4.0 + json-loader: 0.5.7 + json5: 0.5.1 + loader-runner: 2.4.0 + loader-utils: 1.4.0 + memory-fs: 0.4.1 + mkdirp: 0.5.5 + node-libs-browser: 2.2.1 + source-map: 0.5.7 + supports-color: 4.5.0 + tapable: 0.2.9 + uglifyjs-webpack-plugin: 0.4.6_webpack@3.12.0 + watchpack: 1.7.5 + webpack-sources: 1.4.3 + yargs: 8.0.2 + dev: false + engines: + node: '>=4.3.0 <5.0.0 || >=5.10' + hasBin: true + resolution: + integrity: sha512-Sw7MdIIOv/nkzPzee4o0EdvCuPmxT98+vVpIvwtcwcF1Q4SDSNp92vwcKc4REe7NItH9f1S4ra9FuQ7yuYZ8bQ== /webpack/4.46.0_webpack-cli@4.7.2: dependencies: '@webassemblyjs/ast': 1.9.0 @@ -30860,7 +30717,7 @@ packages: '@webassemblyjs/ast': 1.11.0 '@webassemblyjs/wasm-edit': 1.11.0 '@webassemblyjs/wasm-parser': 1.11.0 - acorn: 8.3.0 + acorn: 8.4.0 browserslist: 4.16.6 chrome-trace-event: 1.0.3 enhanced-resolve: 5.8.2 @@ -30897,7 +30754,7 @@ packages: '@webassemblyjs/ast': 1.11.0 '@webassemblyjs/wasm-edit': 1.11.0 '@webassemblyjs/wasm-parser': 1.11.0 - acorn: 8.3.0 + acorn: 8.4.0 browserslist: 4.16.6 chrome-trace-event: 1.0.3 enhanced-resolve: 5.8.2 @@ -31029,6 +30886,10 @@ packages: dev: false resolution: integrity: sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg== + /which-module/1.0.0: + dev: false + resolution: + integrity: sha1-u6Y8qGGUiZT/MHc2CJ47lgJsKk8= /which-module/2.0.0: dev: false resolution: @@ -31099,7 +30960,6 @@ packages: engines: node: '>= 0.10.0' hasBin: true - optional: true resolution: integrity: sha1-tDFbtCFKPXBY6+7okuE/ok2YsHU= /windows-release/4.0.0: @@ -31328,6 +31188,20 @@ packages: optional: true resolution: integrity: sha512-YmhHDO4MzaDLB+M9ym/mDA5z0naX8j7SIlT8f8z+I0VtzsRbekxEutHSme7NPS2qE8StCYQNUnfWdXta/Yu85A== + /ws/7.5.0: + dev: false + engines: + node: '>=8.3.0' + peerDependencies: + bufferutil: ^4.0.1 + utf-8-validate: ^5.0.2 + peerDependenciesMeta: + bufferutil: + optional: true + utf-8-validate: + optional: true + resolution: + integrity: sha512-6ezXvzOZupqKj4jUqbQ9tXuJNo+BR2gU8fFRk3XCP3e0G6WT414u5ELe6Y0vtp7kmSJ3F7YWObSNr1ESsgi4vw== /xdg-basedir/3.0.0: dev: false engines: @@ -31511,7 +31385,6 @@ packages: camelcase: 3.0.0 lodash.assign: 4.2.0 dev: false - optional: true resolution: integrity: sha1-hVaN488VD/SfpRgl8DqMiA3cxcQ= /yargs-parser/20.2.4: @@ -31526,6 +31399,12 @@ packages: node: '>=10' resolution: integrity: sha512-FiNkvbeHzB/syOjIUxFDCnhSfzAL8R5vs40MgLFBorXACCOAEaWu0gRZl14vG8MR9AOJIZbmkjhusqBYZ3HTHw== + /yargs-parser/7.0.0: + dependencies: + camelcase: 4.1.0 + dev: false + resolution: + integrity: sha1-jQrELxbqVd69MyyvTEA4s+P139k= /yargs-parser/8.1.0: dependencies: camelcase: 4.1.0 @@ -31663,6 +31542,43 @@ packages: optional: true resolution: integrity: sha1-y0BQwBWb+2u2ScD0r1UFJqhGGdw= + /yargs/4.8.1: + dependencies: + cliui: 3.2.0 + decamelize: 1.2.0 + get-caller-file: 1.0.3 + lodash.assign: 4.2.0 + os-locale: 1.4.0 + read-pkg-up: 1.0.1 + require-directory: 2.1.1 + require-main-filename: 1.0.1 + set-blocking: 2.0.0 + string-width: 1.0.2 + which-module: 1.0.0 + window-size: 0.2.0 + y18n: 3.2.2 + yargs-parser: 2.4.1 + dev: false + resolution: + integrity: sha1-wMQpJMpKqmsObaFznfshZDn53cA= + /yargs/8.0.2: + dependencies: + camelcase: 4.1.0 + cliui: 3.2.0 + decamelize: 1.2.0 + get-caller-file: 1.0.3 + os-locale: 2.1.0 + read-pkg-up: 2.0.0 + require-directory: 2.1.1 + require-main-filename: 1.0.1 + set-blocking: 2.0.0 + string-width: 2.1.1 + which-module: 2.0.0 + y18n: 3.2.2 + yargs-parser: 7.0.0 + dev: false + resolution: + integrity: sha1-YpmpBVsc78lp/355wdkY3Osiw2A= /yauzl/2.10.0: dependencies: buffer-crc32: 0.2.13 @@ -31684,7 +31600,7 @@ packages: integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q== /yup/0.32.9: dependencies: - '@babel/runtime': 7.14.5 + '@babel/runtime': 7.14.6 '@types/lodash': 4.14.170 lodash: 4.17.21 lodash-es: 4.17.21 @@ -33286,7 +33202,6 @@ packages: resolution: tarball: https://codeload.github.com/web3-js/scrypt-shim/tar.gz/aafdadda13e660e25e1c525d1f5b2443f5eb1ebb version: 0.1.0 -registry: '' specifiers: '@babel/core': 7.14.5 '@date-io/moment': 1.3.13 diff --git a/packages/traceability/issuer-api/src/pods/certificate/handlers/bulk-claim-certificates.handler.ts b/packages/traceability/issuer-api/src/pods/certificate/handlers/bulk-claim-certificates.handler.ts index 8522dec3c3..01806876d3 100644 --- a/packages/traceability/issuer-api/src/pods/certificate/handlers/bulk-claim-certificates.handler.ts +++ b/packages/traceability/issuer-api/src/pods/certificate/handlers/bulk-claim-certificates.handler.ts @@ -1,7 +1,7 @@ import { CommandHandler, ICommandHandler } from '@nestjs/cqrs'; import { InjectRepository } from '@nestjs/typeorm'; import { Repository } from 'typeorm'; -import { CertificateUtils } from '@energyweb/issuer'; +import { CertificateBatchOperations } from '@energyweb/issuer'; import { ISuccessResponse, ResponseFailure, ResponseSuccess } from '@energyweb/origin-backend-core'; import { BigNumber } from 'ethers'; import { HttpStatus } from '@nestjs/common'; @@ -38,7 +38,7 @@ export class BulkClaimCertificatesHandler implements ICommandHandler cert.id), claimData, blockchainProperties.wrap(), diff --git a/packages/trade/exchange/test/utils.ts b/packages/trade/exchange/test/utils.ts index df100afc68..d200bfc9ba 100644 --- a/packages/trade/exchange/test/utils.ts +++ b/packages/trade/exchange/test/utils.ts @@ -29,16 +29,8 @@ export const issueToken = async ( const { name } = registryInterface.parseLog(log); const { _id: requestId } = registryInterface.decodeEventLog(name, log.data, log.topics); - const validityData = registryInterface.encodeFunctionData('isRequestValid', [ - requestId.toString() - ]); - const approvalReceipt = await ( - (await issuer.approveCertificationRequest( - requestId, - amount, - validityData - )) as ContractTransaction + (await issuer.approveCertificationRequest(requestId, amount)) as ContractTransaction ).wait(); const { args } = approvalReceipt.events.find( From 1c6551832266f9df8e3ba587f841376802ddb4db Mon Sep 17 00:00:00 2001 From: Joseph Bagaric Date: Thu, 17 Jun 2021 13:31:15 +0200 Subject: [PATCH 05/11] chore(issuer): Registry.sol detailed comments --- .../issuer/contracts/Registry.sol | 122 ++++++++++++++---- 1 file changed, 97 insertions(+), 25 deletions(-) diff --git a/packages/traceability/issuer/contracts/Registry.sol b/packages/traceability/issuer/contracts/Registry.sol index 6089fdf6d3..566016cdfc 100644 --- a/packages/traceability/issuer/contracts/Registry.sol +++ b/packages/traceability/issuer/contracts/Registry.sol @@ -4,50 +4,76 @@ pragma solidity 0.8.4; import "@openzeppelin/contracts/token/ERC1155/ERC1155.sol"; import "./ERC1888/IERC1888.sol"; +/** + * @dev Implementation of the Transferable Certificate standard ERC-1888. + * See https://github.com/ethereum/EIPs/issues/1888 + * + * Also complies to ERC-1155: https://eips.ethereum.org/EIPS/eip-1155. + */ contract Registry is ERC1155, ERC1888 { + // Storage for the Certificate structs mapping(uint256 => Certificate) public certificateStorage; + + // Mapping from token ID to account balances mapping(uint256 => mapping(address => uint256)) public claimedBalances; + // Incrementing nonce, used for generating certificate IDs uint256 private _latestCertificateId; constructor(string memory _uri) public ERC1155(_uri) {} + /** + * @dev See {IERC1888-issue}. + * + * Requirements: + * - `_to` cannot be the zero address. + */ function issue(address _to, bytes calldata _validityData, uint256 _topic, uint256 _value, bytes calldata _issuanceData) external override returns (uint256) { + require(_to != address(0x0), "Registry::issue: to must be non-zero."); + _validate(_msgSender(), _validityData); - uint256 _id = ++_latestCertificateId; - ERC1155._mint(_to, _id, _value, _issuanceData); + uint256 id = ++_latestCertificateId; + ERC1155._mint(_to, id, _value, _issuanceData); - certificateStorage[_id] = Certificate({ + certificateStorage[id] = Certificate({ topic: _topic, issuer: _msgSender(), validityData: _validityData, data: _issuanceData }); - emit IssuanceSingle(_msgSender(), _topic, _id, _value); + emit IssuanceSingle(_msgSender(), _topic, id, _value); - return _id; + return id; } + /** + * @dev See {IERC1888-batchIssue}. + * + * Requirements: + * - `_to` cannot be the zero address. + * - `_issuanceData`, `_values` and `_validityCalls` must have the same length. + */ function batchIssue(address _to, bytes memory _issuanceData, uint256 _topic, uint256[] memory _values, bytes[] memory _validityCalls) external override returns (uint256[] memory) { + require(_to != address(0x0), "Registry::issue: to must be non-zero."); require(_issuanceData.length == _values.length, "Registry::batchIssueMultiple: _issuanceData and _values arrays have to be the same length"); require(_values.length == _validityCalls.length, "Registry::batchIssueMultiple: _values and _validityCalls arrays have to be the same length"); - uint256[] memory _ids = new uint256[](_values.length); + uint256[] memory ids = new uint256[](_values.length); address operator = _msgSender(); for (uint256 i = 0; i <= _values.length; i++) { - _ids[i] = i + _latestCertificateId + 1; + ids[i] = i + _latestCertificateId + 1; _validate(operator, _validityCalls[i]); } - ERC1155._mintBatch(_to, _ids, _values, _issuanceData); + ERC1155._mintBatch(_to, ids, _values, _issuanceData); - for (uint256 i = 0; i < _ids.length; i++) { - certificateStorage[_ids[i]] = Certificate({ + for (uint256 i = 0; i < ids.length; i++) { + certificateStorage[ids[i]] = Certificate({ topic: _topic, issuer: operator, validityData: _validityCalls[i], @@ -55,32 +81,38 @@ contract Registry is ERC1155, ERC1888 { }); } - emit IssuanceBatch(operator, _topic, _ids, _values); + emit IssuanceBatch(operator, _topic, ids, _values); - return _ids; + return ids; } - /* - * Not a part of the ERC-1888 standard - allows batch issuing to an array of _to addresses - */ + /** + * @dev Similar to {IERC1888-batchIssue}, but not a part of the ERC-1888 standard. + * Allows batch issuing to an array of _to addresses. + * + * Requirements: + * - `_to` cannot be the zero addresses. + * - `_to`, `_issuanceData`, `_values` and `_validityCalls` must have the same length. + */ function batchIssueMultiple(address[] memory _to, bytes[] memory _issuanceData, uint256 _topic, uint256[] memory _values, bytes[] memory _validityCalls) external returns (uint256[] memory) { require(_to.length == _issuanceData.length, "Registry::batchIssueMultiple: _to and _issuanceData arrays have to be the same length"); require(_issuanceData.length == _values.length, "Registry::batchIssueMultiple: _issuanceData and _values arrays have to be the same length"); require(_values.length == _validityCalls.length, "Registry::batchIssueMultiple: _values and _validityCalls arrays have to be the same length"); - uint256[] memory _ids = new uint256[](_values.length); + uint256[] memory ids = new uint256[](_values.length); address operator = _msgSender(); for (uint256 i = 0; i < _values.length; i++) { - _ids[i] = i + _latestCertificateId + 1; + ids[i] = i + _latestCertificateId + 1; _validate(operator, _validityCalls[i]); } - for (uint256 i = 0; i < _ids.length; i++) { - ERC1155._mint(_to[i], _ids[i], _values[i], _issuanceData[i]); + for (uint256 i = 0; i < ids.length; i++) { + require(_to[i] != address(0x0), "Registry::issue: to must be non-zero."); + ERC1155._mint(_to[i], ids[i], _values[i], _issuanceData[i]); - certificateStorage[_ids[i]] = Certificate({ + certificateStorage[ids[i]] = Certificate({ topic: _topic, issuer: operator, validityData: _validityCalls[i], @@ -88,15 +120,22 @@ contract Registry is ERC1155, ERC1888 { }); } - _latestCertificateId = _ids[_ids.length - 1]; + _latestCertificateId = ids[ids.length - 1]; - emit IssuanceBatch(operator, _topic, _ids, _values); + emit IssuanceBatch(operator, _topic, ids, _values); - return _ids; + return ids; } + /** + * @dev Allows the issuer to mint more fungible tokens for existing ERC-188 certificates. + * + * Requirements: + * - `_to` cannot be the zero addresses. + */ function mint(uint256 _id, address _to, uint256 _quantity) external { - require(_quantity > 0, "Registry::mint: _value must be higher than 0."); + require(_to != address(0x0), "Registry::issue: to must be non-zero."); + require(_quantity > 0, "Registry::mint: _quantity must be higher than 0."); Certificate memory cert = certificateStorage[_id]; require(_msgSender() == cert.issuer, "Registry::mint: only the original certificate issuer can mint more tokens"); @@ -104,6 +143,13 @@ contract Registry is ERC1155, ERC1888 { ERC1155._mint(_to, _id, _quantity, new bytes(0)); } + /** + * @dev See {IERC1888-safeTransferAndClaimFrom}. + * + * Requirements: + * - `_to` cannot be the zero address. + * - `_from` has to have a balance above or equal `_value`. + */ function safeTransferAndClaimFrom( address _from, address _to, @@ -117,8 +163,10 @@ contract Registry is ERC1155, ERC1888 { _validate(cert.issuer, cert.validityData); require(_to != address(0x0), "Registry::safeTransferAndClaimFrom: _to must be non-zero."); + require(_from != address(0x0), "Registry::safeBatchTransferAndClaimFrom: _from address must be non-zero."); + require(_from == _msgSender() || ERC1155.isApprovedForAll(_from, _msgSender()), "safeTransferAndClaimFrom: Need operator approval for 3rd party claims."); - require(ERC1155.balanceOf(_from, _id) > 0, "Registry::safeTransferAndClaimFrom: _from balance has to be higher than 0"); + require(ERC1155.balanceOf(_from, _id) >= _value, "Registry::safeTransferAndClaimFrom: _from balance has to be higher or equal _value"); if (_from != _to) { safeTransferFrom(_from, _to, _id, _value, _data); @@ -129,6 +177,13 @@ contract Registry is ERC1155, ERC1888 { emit ClaimSingle(_from, _to, cert.topic, _id, _value, _claimData); //_claimSubject address ?? } + /** + * @dev See {IERC1888-safeBatchTransferAndClaimFrom}. + * + * Requirements: + * - `_to` and `_from` cannot be the zero addresses. + * - `_from` has to have a balance above 0. + */ function safeBatchTransferAndClaimFrom( address _from, address _to, @@ -140,6 +195,8 @@ contract Registry is ERC1155, ERC1888 { uint256 numberOfClaims = _ids.length; require(_to != address(0x0), "Registry::safeBatchTransferAndClaimFrom: _to address must be non-zero."); + require(_from != address(0x0), "Registry::safeBatchTransferAndClaimFrom: _from address must be non-zero."); + require(_ids.length == _values.length, "Registry::safeBatchTransferAndClaimFrom: _ids and _values array length must match."); require(_from == _msgSender() || ERC1155.isApprovedForAll(_from, _msgSender()), "Registry::safeBatchTransferAndClaimFrom: Need operator approval for 3rd party transfers."); @@ -168,6 +225,9 @@ contract Registry is ERC1155, ERC1888 { emit ClaimBatch(_from, _to, topics, _ids, _values, _claimData); } + /** + * @dev See {IERC1888-getCertificate}. + */ function getCertificate(uint256 _id) public view override returns (address issuer, uint256 topic, bytes memory validityCall, bytes memory data) { require(_id <= _latestCertificateId, "Registry::getCertificate: _id out of bounds"); @@ -175,10 +235,16 @@ contract Registry is ERC1155, ERC1888 { return (certificate.issuer, certificate.topic, certificate.validityData, certificate.data); } + /** + * @dev See {IERC1888-claimedBalanceOf}. + */ function claimedBalanceOf(address _owner, uint256 _id) external override view returns (uint256) { return claimedBalances[_id][_owner]; } + /** + * @dev See {IERC1888-claimedBalanceOfBatch}. + */ function claimedBalanceOfBatch(address[] calldata _owners, uint256[] calldata _ids) external override view returns (uint256[] memory) { require(_owners.length == _ids.length, "Registry::ERC1155: _owners and ids length mismatch"); @@ -191,12 +257,18 @@ contract Registry is ERC1155, ERC1888 { return batchClaimBalances; } + /** + * @dev Burn certificates after they've been claimed, and increase the claimed balance. + */ function _burn(address _from, uint256 _id, uint256 _value) internal override { ERC1155._burn(_from, _id, _value); claimedBalances[_id][_from] = claimedBalances[_id][_from] + _value; } + /** + * @dev Validate if the certificate is valid against an external `_verifier` contract. + */ function _validate(address _verifier, bytes memory _validityData) internal view { (bool success, bytes memory result) = _verifier.staticcall(_validityData); From 132361d9d2036861cf7009d5a3367c79b03418d2 Mon Sep 17 00:00:00 2001 From: Joseph Bagaric Date: Thu, 17 Jun 2021 14:21:50 +0200 Subject: [PATCH 06/11] chore(issuer): In-line comments for Issuer.sol --- .../traceability/issuer/contracts/Issuer.sol | 69 +++++++++++++++---- 1 file changed, 57 insertions(+), 12 deletions(-) diff --git a/packages/traceability/issuer/contracts/Issuer.sol b/packages/traceability/issuer/contracts/Issuer.sol index da1aedddef..9307b1ac6f 100644 --- a/packages/traceability/issuer/contracts/Issuer.sol +++ b/packages/traceability/issuer/contracts/Issuer.sol @@ -7,6 +7,10 @@ import "@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol"; import "./Registry.sol"; +/** + * @dev Issuer contract. + * Used to manage the request/approve workflow for issuing ERC-1888 certificates. + */ contract Issuer is Initializable, OwnableUpgradeable, UUPSUpgradeable { event CertificationRequested(address indexed _owner, uint256 indexed _id); event CertificationRequestedBatch(address[] indexed _owners, uint256[] indexed _id); @@ -16,25 +20,42 @@ contract Issuer is Initializable, OwnableUpgradeable, UUPSUpgradeable { event CertificateRevoked(uint256 indexed _certificateId); + // Certificate topic - check ERC-1888 topic description uint256 public certificateTopic; + + // ERC-1888 contract to issue certificates to Registry public registry; + + // Optional: Private Issuance contract address public privateIssuer; + // Storage for CertificationRequest structs mapping(uint256 => CertificationRequest) private _certificationRequests; + + // Mapping from request ID to certificate ID mapping(uint256 => uint256) private requestToCertificate; + // Incrementing nonce, used for generating certification request IDs uint256 private _latestCertificationRequestId; + // Mapping to whether a certificate with a specific ID has been revoked by the Issuer mapping(uint256 => bool) private _revokedCertificates; struct CertificationRequest { - address owner; + address owner; // Owner of the request bytes data; bool approved; bool revoked; - address sender; + address sender; // User that triggered the request creation } + /** + * @dev Contructor. + * Uses the OpenZeppelin `initializer` for upgradeability. + * + * Requirements: + * - `_registry` cannot be the zero address. + */ function initialize(uint256 _certificateTopic, address _registry) public initializer { require(_registry != address(0), "Issuer::initialize: Cannot use address 0x0 as registry address."); @@ -45,6 +66,12 @@ contract Issuer is Initializable, OwnableUpgradeable, UUPSUpgradeable { UUPSUpgradeable.__UUPSUpgradeable_init(); } + /** + * @dev Attaches a private issuance contract to this issuance contract. + * + * Requirements: + * - `_privateIssuer` cannot be the zero address. + */ function setPrivateIssuer(address _privateIssuer) public onlyOwner { require(_privateIssuer != address(0), "Issuer::setPrivateIssuer: Cannot use address 0x0 as the private issuer address."); require(privateIssuer == address(0), "Issuer::setPrivateIssuer: private issuance contract already set."); @@ -104,16 +131,6 @@ contract Issuer is Initializable, OwnableUpgradeable, UUPSUpgradeable { return requestCertificationFor(_data, _msgSender()); } - function isRequestValid(uint256 _requestId) external view returns (bool) { - CertificationRequest memory request = _certificationRequests[_requestId]; - uint256 certificateId = requestToCertificate[_requestId]; - - return _requestId <= _latestCertificationRequestId - && request.approved - && !request.revoked - && !_revokedCertificates[certificateId]; - } - function revokeRequest(uint256 _requestId) external { CertificationRequest storage request = _certificationRequests[_requestId]; @@ -198,6 +215,9 @@ contract Issuer is Initializable, OwnableUpgradeable, UUPSUpgradeable { return certificateIds; } + /** + * @dev Directly issue a certificate without going through the request/approve procedure manually. + */ function issue(address _to, uint256 _value, bytes memory _data) public onlyOwner returns (uint256) { uint256 requestId = requestCertificationFor(_data, _to); @@ -207,6 +227,9 @@ contract Issuer is Initializable, OwnableUpgradeable, UUPSUpgradeable { ); } + /** + * @dev Directly issue a batch of certificates without going through the request/approve procedure manually. + */ function issueBatch(address[] memory _to, uint256[] memory _values, bytes[] memory _data) public onlyOwner returns (uint256[] memory) { uint256[] memory requestIds = requestCertificationForBatch(_data, _to); @@ -216,6 +239,24 @@ contract Issuer is Initializable, OwnableUpgradeable, UUPSUpgradeable { ); } + /** + * @dev Validation for certification requests. + * Used by other contracts to validate the token. + * + * Requirements: + * - `_requestId` has to be an existing ID. + */ + function isRequestValid(uint256 _requestId) external view returns (bool) { + require(_requestId <= _latestCertificationRequestId, "Issuer::isRequestValid: certification request ID out of bounds"); + + CertificationRequest memory request = _certificationRequests[_requestId]; + uint256 certificateId = requestToCertificate[_requestId]; + + return request.approved + && !request.revoked + && !_revokedCertificates[certificateId]; + } + /* Info */ @@ -242,5 +283,9 @@ contract Issuer is Initializable, OwnableUpgradeable, UUPSUpgradeable { return !request.approved && !request.revoked; } + /** + * @dev Needed for OpenZeppelin contract upgradeability. + * Allow only to the owner of the contract. + */ function _authorizeUpgrade(address) internal override onlyOwner {} } \ No newline at end of file From 5a22e41d9eb07d8cfa3ba4be8517325b24a81a81 Mon Sep 17 00:00:00 2001 From: Joseph Bagaric Date: Thu, 17 Jun 2021 15:53:16 +0200 Subject: [PATCH 07/11] chore(issuer): in-line comments to PrivateIssuer.sol --- .../issuer/contracts/PrivateIssuer.sol | 126 +++++++++++++++--- 1 file changed, 105 insertions(+), 21 deletions(-) diff --git a/packages/traceability/issuer/contracts/PrivateIssuer.sol b/packages/traceability/issuer/contracts/PrivateIssuer.sol index 522261cd89..480b5070e4 100644 --- a/packages/traceability/issuer/contracts/PrivateIssuer.sol +++ b/packages/traceability/issuer/contracts/PrivateIssuer.sol @@ -7,9 +7,19 @@ import "@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol"; import "./Issuer.sol"; +/** + * @dev Contract for private issuances. + * Private certificate issuance differ from the public ones in a way + * that the fungible volumes that are being transferred/claimed are stored off-chain. + * + * A privately issued certificate can later be migrated to be public. + */ contract PrivateIssuer is Initializable, OwnableUpgradeable, UUPSUpgradeable { + // Public issuance contract Issuer public issuer; + + // ERC-1888 contract to issue certificates to Registry public registry; event PrivateCertificationRequestApproved(address indexed _owner, uint256 indexed _id, uint256 indexed _certificateId); @@ -18,25 +28,33 @@ contract PrivateIssuer is Initializable, OwnableUpgradeable, UUPSUpgradeable { event PrivateTransferRequested(address indexed _owner, uint256 indexed _certificateId); event CertificateMigratedToPublic(uint256 indexed _certificateId, address indexed _owner, uint256 indexed _amount); - uint256 private _requestMigrateToPublicNonce; - uint256 private _requestPrivateTransferNonce; - + // Storage for RequestStateChange mapping(uint256 => RequestStateChange) private _requestMigrateToPublicStorage; + + // Storage for PrivateTransferRequest mapping(uint256 => PrivateTransferRequest) private _requestPrivateTransferStorage; - mapping(uint256 => uint256) private _requestToCertificate; + // Mapping to keep track if a certification request has been migrated to public mapping(uint256 => bool) private _migrations; + + // Storing a commitment (proof) per certification request ID mapping(uint256 => bytes32) private _commitments; + // Nonce for generating RequestStateChange IDs + uint256 private _requestMigrateToPublicNonce; + + // Nonce for generating PrivateTransferRequest IDs + uint256 private _requestPrivateTransferNonce; + struct PrivateTransferRequest { - address owner; - bytes32 hash; + address owner; // Address that requested a migration to public certificate + bytes32 hash; // Commitment proof that } struct RequestStateChange { - address owner; - uint256 certificateId; - bytes32 hash; + address owner; // Owner of the certificate + uint256 certificateId; // ID of the issued certificate + bytes32 hash; // Commitment (proof) bool approved; } @@ -44,7 +62,14 @@ contract PrivateIssuer is Initializable, OwnableUpgradeable, UUPSUpgradeable { bool left; bytes32 hash; } - + + /** + * @dev Contructor. + * Uses the OpenZeppelin `initializer` for upgradeability. + * + * Requirements: + * - `_issuer` cannot be the zero address. + */ function initialize(address _issuer) public initializer { require(_issuer != address(0), "PrivateIssuer::initialize: Cannot use address 0x0 as Issuer address."); @@ -59,6 +84,9 @@ contract PrivateIssuer is Initializable, OwnableUpgradeable, UUPSUpgradeable { Certification requests */ + /** + * @dev Get the commitment (proof) for a specific certificate. + */ function getCertificateCommitment(uint256 certificateId) public view returns (bytes32) { return _commitments[certificateId]; } @@ -70,14 +98,19 @@ contract PrivateIssuer is Initializable, OwnableUpgradeable, UUPSUpgradeable { uint256 certificateId = issuer.approveCertificationRequest(_requestId, 0); _updateCommitment(certificateId, 0x0, _commitment); - Issuer.CertificationRequest memory request = issuer.getCertificationRequest(_requestId); // TO-DO: get storage instead of memory + Issuer.CertificationRequest memory request = issuer.getCertificationRequest(_requestId); emit PrivateCertificationRequestApproved(request.owner, _requestId, certificateId); return certificateId; } + /** + * @dev Directly issue a private certificate. + */ function issuePrivate(address _to, bytes32 _commitment, bytes memory _data) public onlyOwner returns (uint256) { + require(_to != address(0x0), "PrivateIssuer::issuePrivate: Cannot use address 0x0 as _to address."); + uint256 requestId = issuer.requestCertificationFor(_data, _to); return approveCertificationRequestPrivate( @@ -86,12 +119,18 @@ contract PrivateIssuer is Initializable, OwnableUpgradeable, UUPSUpgradeable { ); } - /* - Private transfer - */ + /** + * @dev Request transferring a certain amount of tokens + * + * @param `_certificateId` - Certificate that you want to change the balances of + * @param `_ownerAddressLeafHash` - New updated proof (balances per address) + */ function requestPrivateTransfer(uint256 _certificateId, bytes32 _ownerAddressLeafHash) external { PrivateTransferRequest storage currentRequest = _requestPrivateTransferStorage[_certificateId]; + /* + * RESTRICTION: There can only be one private transfer request at a time per certificate. + */ require(currentRequest.owner == address(0x0), "PrivateIssuer::requestPrivateTransfer:Only one private transfer can be requested at a time."); _requestPrivateTransferStorage[_certificateId] = PrivateTransferRequest({ @@ -102,6 +141,9 @@ contract PrivateIssuer is Initializable, OwnableUpgradeable, UUPSUpgradeable { emit PrivateTransferRequested(_msgSender(), _certificateId); } + /** + * @dev Approve a private transfer of certificates. + */ function approvePrivateTransfer( uint256 _certificateId, Proof[] calldata _proof, @@ -123,26 +165,44 @@ contract PrivateIssuer is Initializable, OwnableUpgradeable, UUPSUpgradeable { return true; } - /* - Migrate to public certificate (public issue) - */ + /** + * @dev Request the certificate volumes to be migrated from private to public. + * + * @param `_certificateId` - Certificate that you want to migrate to public + * @param `_ownerAddressLeafHash` - Final balance proof + */ + function requestMigrateToPublic(uint256 _certificateId, bytes32 _ownerAddressLeafHash) external returns (uint256 _migrationRequestId) { + return _requestMigrateToPublicFor(_certificateId, _ownerAddressLeafHash, _msgSender()); + } + /** + * @dev Request the certificate volumes to be migrated from private to public for someone else. + * + * @param `_certificateId` - Certificate that you want to migrate to public + * @param `_ownerAddressLeafHash` - Final balance proof + * @param `_forAddress` - Owner + */ function requestMigrateToPublicFor(uint256 _certificateId, bytes32 _ownerAddressLeafHash, address _forAddress) external onlyOwner returns (uint256 _migrationRequestId) { return _requestMigrateToPublicFor(_certificateId, _ownerAddressLeafHash, _forAddress); } - function requestMigrateToPublic(uint256 _certificateId, bytes32 _ownerAddressLeafHash) external returns (uint256 _migrationRequestId) { - return _requestMigrateToPublicFor(_certificateId, _ownerAddressLeafHash, _msgSender()); - } - + /** + * @dev Get the private transfer request that is currently active for a specific certificate + */ function getPrivateTransferRequest(uint256 _certificateId) external view onlyOwner returns (PrivateTransferRequest memory) { return _requestPrivateTransferStorage[_certificateId]; } + /** + * @dev Get the migration request. + */ function getMigrationRequest(uint256 _requestId) external view onlyOwner returns (RequestStateChange memory) { return _requestMigrateToPublicStorage[_requestId]; } + /** + * @dev Get the migration request ID for a specific certificate. + */ function getMigrationRequestId(uint256 _certificateId) external view onlyOwner returns (uint256 _migrationRequestId) { bool found = false; @@ -156,6 +216,14 @@ contract PrivateIssuer is Initializable, OwnableUpgradeable, UUPSUpgradeable { require(found, "unable to find the migration request"); } + /** + * @dev Migrate a private certificate to be public + * + * @param `_requestId` - Migration Request ID + * @param `_volume` - Volume that should be minted + * @param `_salt` - Precise Proof salt + * @param `_proof` - Precise Proof + */ function migrateToPublic( uint256 _requestId, uint256 _volume, @@ -183,6 +251,15 @@ contract PrivateIssuer is Initializable, OwnableUpgradeable, UUPSUpgradeable { Utils */ + /** + * @dev Validates that a `_ownerAddress` actually owns `_volume` in a precise proof. + * + * @param `_ownerAddress` - Owner blockchain address + * @param `_volume` - Volume that the owner should have + * @param `_salt` - Precise Proof salt + * @param `_rootHash` - Hash of the merkle tree root + * @param `_proof` - Full Precise Proof + */ function validateOwnershipProof( address _ownerAddress, uint256 _volume, @@ -195,6 +272,13 @@ contract PrivateIssuer is Initializable, OwnableUpgradeable, UUPSUpgradeable { return validateMerkle(leafHash, _rootHash, _proof); } + /** + * @dev Validates that a `_leafHash` is a leaf in the `_proof` with a merkle root hash `_rootHash`. + * + * @param `_leafHash` - Hash of the leaf in the merkle tree + * @param `_rootHash` - Hash of the merkle tree root + * @param `_proof` - Full Precise Proof + */ function validateMerkle(bytes32 _leafHash, bytes32 _rootHash, Proof[] memory _proof) private pure returns (bool) { bytes32 hash = _leafHash; From bd683e260f947da710b6e772b815c77c8ef3408b Mon Sep 17 00:00:00 2001 From: Joseph Bagaric Date: Fri, 18 Jun 2021 07:27:15 +0200 Subject: [PATCH 08/11] chore(issuer): fix params build --- .../issuer/contracts/PrivateIssuer.sol | 38 +++++++++---------- 1 file changed, 19 insertions(+), 19 deletions(-) diff --git a/packages/traceability/issuer/contracts/PrivateIssuer.sol b/packages/traceability/issuer/contracts/PrivateIssuer.sol index 480b5070e4..59d5709655 100644 --- a/packages/traceability/issuer/contracts/PrivateIssuer.sol +++ b/packages/traceability/issuer/contracts/PrivateIssuer.sol @@ -122,8 +122,8 @@ contract PrivateIssuer is Initializable, OwnableUpgradeable, UUPSUpgradeable { /** * @dev Request transferring a certain amount of tokens * - * @param `_certificateId` - Certificate that you want to change the balances of - * @param `_ownerAddressLeafHash` - New updated proof (balances per address) + * @param _certificateId - Certificate that you want to change the balances of + * @param _ownerAddressLeafHash - New updated proof (balances per address) */ function requestPrivateTransfer(uint256 _certificateId, bytes32 _ownerAddressLeafHash) external { PrivateTransferRequest storage currentRequest = _requestPrivateTransferStorage[_certificateId]; @@ -168,8 +168,8 @@ contract PrivateIssuer is Initializable, OwnableUpgradeable, UUPSUpgradeable { /** * @dev Request the certificate volumes to be migrated from private to public. * - * @param `_certificateId` - Certificate that you want to migrate to public - * @param `_ownerAddressLeafHash` - Final balance proof + * @param _certificateId - Certificate that you want to migrate to public + * @param _ownerAddressLeafHash - Final balance proof */ function requestMigrateToPublic(uint256 _certificateId, bytes32 _ownerAddressLeafHash) external returns (uint256 _migrationRequestId) { return _requestMigrateToPublicFor(_certificateId, _ownerAddressLeafHash, _msgSender()); @@ -178,9 +178,9 @@ contract PrivateIssuer is Initializable, OwnableUpgradeable, UUPSUpgradeable { /** * @dev Request the certificate volumes to be migrated from private to public for someone else. * - * @param `_certificateId` - Certificate that you want to migrate to public - * @param `_ownerAddressLeafHash` - Final balance proof - * @param `_forAddress` - Owner + * @param _certificateId - Certificate that you want to migrate to public + * @param _ownerAddressLeafHash - Final balance proof + * @param _forAddress - Owner */ function requestMigrateToPublicFor(uint256 _certificateId, bytes32 _ownerAddressLeafHash, address _forAddress) external onlyOwner returns (uint256 _migrationRequestId) { return _requestMigrateToPublicFor(_certificateId, _ownerAddressLeafHash, _forAddress); @@ -219,10 +219,10 @@ contract PrivateIssuer is Initializable, OwnableUpgradeable, UUPSUpgradeable { /** * @dev Migrate a private certificate to be public * - * @param `_requestId` - Migration Request ID - * @param `_volume` - Volume that should be minted - * @param `_salt` - Precise Proof salt - * @param `_proof` - Precise Proof + * @param _requestId - Migration Request ID + * @param _volume - Volume that should be minted + * @param _salt - Precise Proof salt + * @param _proof - Precise Proof */ function migrateToPublic( uint256 _requestId, @@ -254,11 +254,11 @@ contract PrivateIssuer is Initializable, OwnableUpgradeable, UUPSUpgradeable { /** * @dev Validates that a `_ownerAddress` actually owns `_volume` in a precise proof. * - * @param `_ownerAddress` - Owner blockchain address - * @param `_volume` - Volume that the owner should have - * @param `_salt` - Precise Proof salt - * @param `_rootHash` - Hash of the merkle tree root - * @param `_proof` - Full Precise Proof + * @param _ownerAddress - Owner blockchain address + * @param _volume - Volume that the owner should have + * @param _salt - Precise Proof salt + * @param _rootHash - Hash of the merkle tree root + * @param _proof - Full Precise Proof */ function validateOwnershipProof( address _ownerAddress, @@ -275,9 +275,9 @@ contract PrivateIssuer is Initializable, OwnableUpgradeable, UUPSUpgradeable { /** * @dev Validates that a `_leafHash` is a leaf in the `_proof` with a merkle root hash `_rootHash`. * - * @param `_leafHash` - Hash of the leaf in the merkle tree - * @param `_rootHash` - Hash of the merkle tree root - * @param `_proof` - Full Precise Proof + * @param _leafHash - Hash of the leaf in the merkle tree + * @param _rootHash - Hash of the merkle tree root + * @param _proof - Full Precise Proof */ function validateMerkle(bytes32 _leafHash, bytes32 _rootHash, Proof[] memory _proof) private pure returns (bool) { bytes32 hash = _leafHash; From f90047c137d42cca0878629f61ba6ab21341933d Mon Sep 17 00:00:00 2001 From: Joseph Bagaric Date: Fri, 18 Jun 2021 07:30:06 +0200 Subject: [PATCH 09/11] chore(issuer): params dash rm --- .../issuer/contracts/PrivateIssuer.sol | 41 +++++++++---------- 1 file changed, 20 insertions(+), 21 deletions(-) diff --git a/packages/traceability/issuer/contracts/PrivateIssuer.sol b/packages/traceability/issuer/contracts/PrivateIssuer.sol index 59d5709655..c24fd4b18f 100644 --- a/packages/traceability/issuer/contracts/PrivateIssuer.sol +++ b/packages/traceability/issuer/contracts/PrivateIssuer.sol @@ -122,8 +122,8 @@ contract PrivateIssuer is Initializable, OwnableUpgradeable, UUPSUpgradeable { /** * @dev Request transferring a certain amount of tokens * - * @param _certificateId - Certificate that you want to change the balances of - * @param _ownerAddressLeafHash - New updated proof (balances per address) + * @param _certificateId Certificate that you want to change the balances of + * @param _ownerAddressLeafHash New updated proof (balances per address) */ function requestPrivateTransfer(uint256 _certificateId, bytes32 _ownerAddressLeafHash) external { PrivateTransferRequest storage currentRequest = _requestPrivateTransferStorage[_certificateId]; @@ -168,8 +168,8 @@ contract PrivateIssuer is Initializable, OwnableUpgradeable, UUPSUpgradeable { /** * @dev Request the certificate volumes to be migrated from private to public. * - * @param _certificateId - Certificate that you want to migrate to public - * @param _ownerAddressLeafHash - Final balance proof + * @param _certificateId Certificate that you want to migrate to public + * @param _ownerAddressLeafHash Final balance proof */ function requestMigrateToPublic(uint256 _certificateId, bytes32 _ownerAddressLeafHash) external returns (uint256 _migrationRequestId) { return _requestMigrateToPublicFor(_certificateId, _ownerAddressLeafHash, _msgSender()); @@ -178,9 +178,9 @@ contract PrivateIssuer is Initializable, OwnableUpgradeable, UUPSUpgradeable { /** * @dev Request the certificate volumes to be migrated from private to public for someone else. * - * @param _certificateId - Certificate that you want to migrate to public - * @param _ownerAddressLeafHash - Final balance proof - * @param _forAddress - Owner + * @param _certificateId Certificate that you want to migrate to public + * @param _ownerAddressLeafHash Final balance proof + * @param _forAddress Owner */ function requestMigrateToPublicFor(uint256 _certificateId, bytes32 _ownerAddressLeafHash, address _forAddress) external onlyOwner returns (uint256 _migrationRequestId) { return _requestMigrateToPublicFor(_certificateId, _ownerAddressLeafHash, _forAddress); @@ -219,12 +219,11 @@ contract PrivateIssuer is Initializable, OwnableUpgradeable, UUPSUpgradeable { /** * @dev Migrate a private certificate to be public * - * @param _requestId - Migration Request ID - * @param _volume - Volume that should be minted - * @param _salt - Precise Proof salt - * @param _proof - Precise Proof - */ - function migrateToPublic( + * @param _requestId Migration Request ID + * @param _volume Volume that should be minted + * @param _salt Precise Proof salt + * @param _proof Precise Proof + */function migrateToPublic( uint256 _requestId, uint256 _volume, string calldata _salt, @@ -254,11 +253,11 @@ contract PrivateIssuer is Initializable, OwnableUpgradeable, UUPSUpgradeable { /** * @dev Validates that a `_ownerAddress` actually owns `_volume` in a precise proof. * - * @param _ownerAddress - Owner blockchain address - * @param _volume - Volume that the owner should have - * @param _salt - Precise Proof salt - * @param _rootHash - Hash of the merkle tree root - * @param _proof - Full Precise Proof + * @param _ownerAddress Owner blockchain address + * @param _volume Volume that the owner should have + * @param _salt Precise Proof salt + * @param _rootHash Hash of the merkle tree root + * @param _proof Full Precise Proof */ function validateOwnershipProof( address _ownerAddress, @@ -275,9 +274,9 @@ contract PrivateIssuer is Initializable, OwnableUpgradeable, UUPSUpgradeable { /** * @dev Validates that a `_leafHash` is a leaf in the `_proof` with a merkle root hash `_rootHash`. * - * @param _leafHash - Hash of the leaf in the merkle tree - * @param _rootHash - Hash of the merkle tree root - * @param _proof - Full Precise Proof + * @param _leafHash Hash of the leaf in the merkle tree + * @param _rootHash Hash of the merkle tree root + * @param _proof Full Precise Proof */ function validateMerkle(bytes32 _leafHash, bytes32 _rootHash, Proof[] memory _proof) private pure returns (bool) { bytes32 hash = _leafHash; From 642d97f566b558fe839bc3d2e412b5c1ceab91d8 Mon Sep 17 00:00:00 2001 From: Joseph Bagaric Date: Fri, 18 Jun 2021 08:11:17 +0200 Subject: [PATCH 10/11] docs(issuer): add docs for Traceability --- common/config/rush/pnpm-lock.yaml | 140 +++++++++++++++++- docs/images/issuer.png | Bin 0 -> 24208 bytes docs/images/traceability.png | Bin 0 -> 19909 bytes docs/traceability.md | 28 ++++ .../traceability/contracts/ERC1888/ERC1888.md | 23 +++ docs/traceability/contracts/Issuer.md | 79 ++++++++++ docs/traceability/contracts/Migrations.md | 7 + docs/traceability/contracts/PrivateIssuer.md | 74 +++++++++ docs/traceability/contracts/Registry.md | 81 ++++++++++ packages/traceability/issuer/package.json | 9 +- 10 files changed, 435 insertions(+), 6 deletions(-) create mode 100644 docs/images/issuer.png create mode 100644 docs/images/traceability.png create mode 100644 docs/traceability.md create mode 100644 docs/traceability/contracts/ERC1888/ERC1888.md create mode 100644 docs/traceability/contracts/Issuer.md create mode 100644 docs/traceability/contracts/Migrations.md create mode 100644 docs/traceability/contracts/PrivateIssuer.md create mode 100644 docs/traceability/contracts/Registry.md diff --git a/common/config/rush/pnpm-lock.yaml b/common/config/rush/pnpm-lock.yaml index 79e55b64ee..ca35182157 100644 --- a/common/config/rush/pnpm-lock.yaml +++ b/common/config/rush/pnpm-lock.yaml @@ -216,6 +216,8 @@ dependencies: sass-loader: 12.1.0_node-sass@6.0.0+webpack@5.38.1 shx: 0.3.3 solc: 0.8.4 + solc-0.8: /solc/0.8.4 + solidity-docgen: 0.5.13 source-map-loader: 3.0.0_webpack@5.38.1 stream-browserify: 3.0.0 stream-http: 3.2.0 @@ -4421,6 +4423,76 @@ packages: hasBin: true resolution: integrity: sha512-um0xL3fO7Mf4fDxcqx9KryrB7zgRM5JSlvGN5AGkP6JLM5XEKyjeAiPbNxdXVXQ16isuAhYpvP88NgL2BGd6aA== + /@oclif/command/1.8.0: + dependencies: + '@oclif/config': 1.17.0 + '@oclif/errors': 1.3.4 + '@oclif/parser': 3.8.5 + '@oclif/plugin-help': 3.2.2 + debug: 4.3.1 + semver: 7.3.5 + dev: false + engines: + node: '>=8.0.0' + resolution: + integrity: sha512-5vwpq6kbvwkQwKqAoOU3L72GZ3Ta8RRrewKj9OJRolx28KLJJ8Dg9Rf7obRwt5jQA9bkYd8gqzMTrI7H3xLfaw== + /@oclif/config/1.17.0: + dependencies: + '@oclif/errors': 1.3.4 + '@oclif/parser': 3.8.5 + debug: 4.3.1 + globby: 11.0.4 + is-wsl: 2.2.0 + tslib: 2.3.0 + dev: false + engines: + node: '>=8.0.0' + resolution: + integrity: sha512-Lmfuf6ubjQ4ifC/9bz1fSCHc6F6E653oyaRXxg+lgT4+bYf9bk+nqrUpAbrXyABkCqgIBiFr3J4zR/kiFdE1PA== + /@oclif/errors/1.3.4: + dependencies: + clean-stack: 3.0.1 + fs-extra: 8.1.0 + indent-string: 4.0.0 + strip-ansi: 6.0.0 + wrap-ansi: 7.0.0 + dev: false + engines: + node: '>=8.0.0' + resolution: + integrity: sha512-pJKXyEqwdfRTUdM8n5FIHiQQHg5ETM0Wlso8bF9GodczO40mF5Z3HufnYWJE7z8sGKxOeJCdbAVZbS8Y+d5GCw== + /@oclif/linewrap/1.0.0: + dev: false + resolution: + integrity: sha512-Ups2dShK52xXa8w6iBWLgcjPJWjais6KPJQq3gQ/88AY6BXoTX+MIGFPrWQO1KLMiQfoTpcLnUwloN4brrVUHw== + /@oclif/parser/3.8.5: + dependencies: + '@oclif/errors': 1.3.4 + '@oclif/linewrap': 1.0.0 + chalk: 2.4.2 + tslib: 1.14.1 + dev: false + engines: + node: '>=8.0.0' + resolution: + integrity: sha512-yojzeEfmSxjjkAvMRj0KzspXlMjCfBzNRPkWw8ZwOSoNWoJn+OCS/m/S+yfV6BvAM4u2lTzX9Y5rCbrFIgkJLg== + /@oclif/plugin-help/3.2.2: + dependencies: + '@oclif/command': 1.8.0 + '@oclif/config': 1.17.0 + '@oclif/errors': 1.3.4 + chalk: 4.1.1 + indent-string: 4.0.0 + lodash.template: 4.5.0 + string-width: 4.2.2 + strip-ansi: 6.0.0 + widest-line: 3.1.0 + wrap-ansi: 4.0.0 + dev: false + engines: + node: '>=8.0.0' + resolution: + integrity: sha512-SPZ8U8PBYK0n4srFjCLedk0jWU4QlxgEYLCXIBShJgOwPhTTQknkUlsEwaMIevvCU4iCQZhfMX+D8Pz5GZjFgA== /@openapitools/openapi-generator-cli/2.3.3_eb344851c67507785243f1ab4a9e62e0: dependencies: '@nestjs/common': 7.6.17_80614894cec1c9eb59355dbf1305ce1d @@ -10916,6 +10988,14 @@ packages: node: '>=6' resolution: integrity: sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A== + /clean-stack/3.0.1: + dependencies: + escape-string-regexp: 4.0.0 + dev: false + engines: + node: '>=10' + resolution: + integrity: sha512-lR9wNiMRcVQjSB3a7xXGLuz4cr4wJuuXlaAEbRutGowQTmlp7R72/DOgN21e8jdwblMWl9UOJMJXarX94pzKdg== /cli-boxes/2.2.1: dev: false engines: @@ -19864,7 +19944,6 @@ packages: integrity: sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw== /lodash._reinterpolate/3.0.0: dev: false - optional: true resolution: integrity: sha1-DM8tiRZq8Ds2Y8eWU4t1rG4RTZ0= /lodash.assign/4.2.0: @@ -20035,11 +20114,17 @@ packages: optional: true resolution: integrity: sha1-0FPBno50442WW/T7SV2A8Qnn96Q= + /lodash.template/4.5.0: + dependencies: + lodash._reinterpolate: 3.0.0 + lodash.templatesettings: 4.2.0 + dev: false + resolution: + integrity: sha512-84vYFxIkmidUiFxidA/KjjH9pAycqW+h980j7Fuz5qxRtO9pgB7MDFTdys1N7A5mcucRiDyEq4fusljItR1T/A== /lodash.templatesettings/4.2.0: dependencies: lodash._reinterpolate: 3.0.0 dev: false - optional: true resolution: integrity: sha512-stgLz+i3Aa9mZgnjr/O+v9ruKZsPsndy7qPZOchbqk2cnTU1ZaldKK+v7m54WoKIyxiuMZTKT2H81F8BeAc3ZQ== /lodash.toarray/4.4.0: @@ -26312,6 +26397,22 @@ packages: hasBin: true resolution: integrity: sha512-o+c6FpkiHd+HPjmjEVpQgH7fqZ14tJpXhho+/bQXlXbliLIS/xjXb42Vxh+qQY1WCSTMQ0+a5vR9vi0MfhU6mA== + /solc/0.6.12: + dependencies: + command-exists: 1.2.9 + commander: 3.0.2 + fs-extra: 0.30.0 + js-sha3: 0.8.0 + memorystream: 0.3.1 + require-from-string: 2.0.2 + semver: 5.7.1 + tmp: 0.0.33 + dev: false + engines: + node: '>=8.0.0' + hasBin: true + resolution: + integrity: sha512-Lm0Ql2G9Qc7yPP2Ba+WNmzw2jwsrd3u4PobHYlSOxaut3TtUbj9+5ZrT6f4DUpNPEoBaFUOEg9Op9C0mk7ge9g== /solc/0.8.4: dependencies: command-exists: 1.2.9 @@ -26333,6 +26434,24 @@ packages: dev: false resolution: integrity: sha512-8IpweS/vgHEpKvY4l0sfr3EsHk+JFIzRWqq/0JefRjzP/Wyi2xZYfx8aHlJ9kcEn2M2RCQK9PexuZ+scaa83OQ== + /solidity-docgen/0.5.13: + dependencies: + '@oclif/command': 1.8.0 + '@oclif/config': 1.17.0 + '@oclif/errors': 1.3.4 + '@oclif/plugin-help': 3.2.2 + globby: 11.0.4 + handlebars: 4.7.7 + json5: 2.2.0 + lodash: 4.17.21 + micromatch: 4.0.4 + minimatch: 3.0.4 + semver: 7.3.5 + solc: 0.6.12 + dev: false + hasBin: true + resolution: + integrity: sha512-m8PVkJ9ZCVwjfUI7r6aTlzn7uVystsw9j8gv1Bn0afS3nMe3iqtxUxY5nL3OccGP2kxpxiQbt8xxtsOm5bQAcQ== /solium-plugin-security/0.1.1: dev: false peerDependencies: @@ -31047,6 +31166,16 @@ packages: node: '>=0.10.0' resolution: integrity: sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU= + /wrap-ansi/4.0.0: + dependencies: + ansi-styles: 3.2.1 + string-width: 2.1.1 + strip-ansi: 4.0.0 + dev: false + engines: + node: '>=6' + resolution: + integrity: sha512-uMTsj9rDb0/7kk1PbcbCcwvHUxp60fGDB/NNXpVa0Q+ic/e7y5+BwTxKfQ33VYgDppSwi/FBzpetYzo8s6tfbg== /wrap-ansi/5.1.0: dependencies: ansi-styles: 3.2.1 @@ -32218,6 +32347,8 @@ packages: precise-proofs-js: 1.2.0 shx: 0.3.3 solc: 0.8.4 + solc-0.8: /solc/0.8.4 + solidity-docgen: 0.5.13 truffle: 5.3.10_@types+node@14.17.3+react@17.0.2 truffle-typings: 1.0.8 ts-node: 9.1.1_typescript@4.3.2 @@ -32231,7 +32362,7 @@ packages: peerDependencies: react: '*' resolution: - integrity: sha512-2P9pKFgnKE6SkR2fSXU5JUg0t29U+uutYA0myUYCHHVUGEiQkMrZ7FRLULO03ZO7M2I6lyLXl6qNOsHDmVYT6A== + integrity: sha512-emg4x+9jnX4CI4ceR/eknahrwrykgeoAhMUnMcjgubcdikCYYELf+q6O9lzV/guxCaPk88v3F4fphyK5muptxg== tarball: file:projects/issuer.tgz version: 0.0.0 file:projects/localization.tgz: @@ -33202,6 +33333,7 @@ packages: resolution: tarball: https://codeload.github.com/web3-js/scrypt-shim/tar.gz/aafdadda13e660e25e1c525d1f5b2443f5eb1ebb version: 0.1.0 +registry: '' specifiers: '@babel/core': 7.14.5 '@date-io/moment': 1.3.13 @@ -33420,6 +33552,8 @@ specifiers: sass-loader: 12.1.0 shx: 0.3.3 solc: 0.8.4 + solc-0.8: npm:solc@0.8.4 + solidity-docgen: 0.5.13 source-map-loader: 3.0.0 stream-browserify: 3.0.0 stream-http: 3.2.0 diff --git a/docs/images/issuer.png b/docs/images/issuer.png new file mode 100644 index 0000000000000000000000000000000000000000..1c46ec682f13abc16f0838c388b291f72439f74d GIT binary patch literal 24208 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%0DjYElaVv6$L;MRSI0Mqj1x0 zAqFjop>_=mpw=&fn&gasYQI>rrMw$;`Cy5sf7&pkFH)nWTBz8}VS?Ly1ouQ33gJn$#5lyf8 zA)A{k!&0zhMz7#SB$frl=~oF+OTBBdY%Ym`*C!~YM?U7n_9FNK_;0%E&eQ0yVz@fz zw_SKRx+kdBr5Nm#r^%kq>X?f%pE6oED8jn-*d0}$C$|{-6^hMDaNJZo=ip6iMY6H8d*vFp_Ou|W{JQj% zf8b7Fy)L0$f;kO!!?(!`*=Hkppnd~Ev&QW|69<5-cSRWEqpC+D0Qb)yBFiU2%>&)~sbUU? zNnzfN&$-sf8`4hW!Ok9@jWD4kB5jk)xGzV*`JqwEB=WTwd1Z%AG9+F5Y;R|l9tOG@ zRYRvoMDtb}4~xGNWvw3NiC9BG(y*+T@0Wv>9sx|v1JtQn92&D^nVOsdxq+=_OC5J< zvXdXR5ju=-KPP4BhMunRr7Q5S2|5VH>%O<&svOcjvyp)6XEWm>OVy;=)unPWkP$r6cTPjGZrxcJtN-}mwKA}8@W`-@k@;?Fc#oV7 z+lD+_Au2KKxFn`<{MRm+R{)4l?K{NxUWbn!FYbe$mMmTFO0)MBag-+_xk~I7G1opM zHHvTEqCH;h@4APH?<8=@gx2R_(!3)<|KvbKK>(Ls`6cM{_WK&E3Eukwm)n)05Agv+ zt&fDdajl>)$U;V=^3Y=t|TA3Io7^ zw^INbyqk19Z0a?5KS^-d|NSj~hdbj?q1(rDNKVJ1c9S^54q0-q7T3#N)eBR|{gl8g z50}(dHJxmICj;ucL^}lgSi1BmBGr!fFBtO09_bmrap|_i*iUx*d)MDMXq6LWohkIp zgb35OL%wovO~6Pja&HLSJpSY5W<>r<3FN1L-ZA*C7=Ol;D)m?|g?DSZm0KAZdMqM$ z!$#o+(OVvf7D^Y={-Q(mA#4=$7wK=M?+wa*F5jL)=bE1hKb6N$e%q*>Wy0(!i}!aQ zB@}$njg~e2q>a|L2bxH|pR4KLjP`K|R;Gt@wk-oSSYs~h{}ulmDl~8dHOZSZ*>c?! z(5xDzV{LltYP|~RHAD%M_X;=G-+T7i64^I(mNZtV7 zl&%@-RBH2gqBw~nc<9nrA2!G%A4gf#|Jm)?WR;WS331uou|uI-;QvIqG-y2PH@}hI zLzUMDRwf-a{ovefCsxDacHJLiTJ=aqwtqExn*vLYz^{q@^O zitM-R`6i&UWd!NkL(0uF6>t7{to|PO-K-@GIGlw1UEKW6+x|y{__r-{{zruPf3uVZ zL|C9Bvt-_Gi{`sc590d3GT~`S;(pQ)wp#_#0 zUl_u{;z!Ljjt@l21@19!{Wu%_U70<-N42Y_Dgx=?pUUZ3APPIGC1LkHNc!VhIQTU8 z>f-M$%lCY<|G5$OM3x!irQ`qW$V^qRW}h~C8~x9R#nZLG+K}Buee~bQ+`AL`9=a{* Y{Py`*Y?Zq|D9v-28lT3M7&=G)7g6t?r2qf` literal 0 HcmV?d00001 diff --git a/docs/images/traceability.png b/docs/images/traceability.png new file mode 100644 index 0000000000000000000000000000000000000000..8a5aff8eb8ec6074f5fdfa001e6c2b5dca35f842 GIT binary patch literal 19909 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 M=q@yl?V*If0lw;vFaQ7m literal 0 HcmV?d00001 diff --git a/docs/traceability.md b/docs/traceability.md new file mode 100644 index 0000000000..74bc43c183 --- /dev/null +++ b/docs/traceability.md @@ -0,0 +1,28 @@ +# Traceability SDK + +Traceability SDK is responsible for tracking (tracing) the exchange of Energy Attribute Certificates (EACs). + +The main functions that the Traceability SDK deals with are: + +1. Issuance +2. Transfer +3. Claiming / Redemption + +## Components overview + +### Layers + +![Traceability](images/traceability.png) + +### @energyweb/issuer + +Package contains all the facades and entities that concern the on-chain presence of Certificates and Certification Requesting. + +![@energyweb/issuer](images/issuer.png) + +### Smart contracts + +- [ERC-1888](traceability/contracts/ERC1888/ERC1888.md) +- [Registry](traceability/contracts/Registry.md) +- [Issuer](traceability/contracts/Issuer.md) +- [PrivateIssuer](traceability/contracts/PrivateIssuer.md) diff --git a/docs/traceability/contracts/ERC1888/ERC1888.md b/docs/traceability/contracts/ERC1888/ERC1888.md new file mode 100644 index 0000000000..6e86f10ffa --- /dev/null +++ b/docs/traceability/contracts/ERC1888/ERC1888.md @@ -0,0 +1,23 @@ +## `ERC1888` + +### `issue(address _to, bytes _validityData, uint256 _topic, uint256 _value, bytes _issuanceData) → uint256` (external) + +### `batchIssue(address _to, bytes _issuanceData, uint256 _topic, uint256[] _values, bytes[] _validityCalls) → uint256[]` (external) + +### `safeTransferAndClaimFrom(address _from, address _to, uint256 _id, uint256 _value, bytes _data, bytes _claimData)` (external) + +### `safeBatchTransferAndClaimFrom(address _from, address _to, uint256[] _ids, uint256[] _values, bytes _data, bytes[] _claimData)` (external) + +### `getCertificate(uint256 _id) → address issuer, uint256 topic, bytes validityCall, bytes data` (external) + +### `claimedBalanceOf(address _owner, uint256 _id) → uint256` (external) + +### `claimedBalanceOfBatch(address[] _owners, uint256[] _ids) → uint256[]` (external) + +### `IssuanceSingle(address _issuer, uint256 _topic, uint256 _id, uint256 _value)` + +### `IssuanceBatch(address _issuer, uint256 _topic, uint256[] _ids, uint256[] _values)` + +### `ClaimSingle(address _claimIssuer, address _claimSubject, uint256 _topic, uint256 _id, uint256 _value, bytes _claimData)` + +### `ClaimBatch(address _claimIssuer, address _claimSubject, uint256[] _topics, uint256[] _ids, uint256[] _values, bytes[] _claimData)` diff --git a/docs/traceability/contracts/Issuer.md b/docs/traceability/contracts/Issuer.md new file mode 100644 index 0000000000..5c120fa5fc --- /dev/null +++ b/docs/traceability/contracts/Issuer.md @@ -0,0 +1,79 @@ +## `Issuer` + +Issuer contract. +Used to manage the request/approve workflow for issuing ERC-1888 certificates. + +### `initialize(uint256 _certificateTopic, address _registry)` (public) + +Contructor. +Uses the OpenZeppelin `initializer` for upgradeability. + +Requirements: + +- `_registry` cannot be the zero address. + +### `setPrivateIssuer(address _privateIssuer)` (public) + +Attaches a private issuance contract to this issuance contract. + +Requirements: + +- `_privateIssuer` cannot be the zero address. + +### `getCertificationRequest(uint256 _requestId) → struct Issuer.CertificationRequest` (public) + +### `requestCertificationFor(bytes _data, address _owner) → uint256` (public) + +### `requestCertificationForBatch(bytes[] _data, address[] _owners) → uint256[]` (public) + +### `requestCertification(bytes _data) → uint256` (external) + +### `revokeRequest(uint256 _requestId)` (external) + +### `revokeCertificate(uint256 _certificateId)` (external) + +### `approveCertificationRequest(uint256 _requestId, uint256 _value) → uint256` (public) + +### `approveCertificationRequestBatch(uint256[] _requestIds, uint256[] _values) → uint256[]` (public) + +### `issue(address _to, uint256 _value, bytes _data) → uint256` (public) + +Directly issue a certificate without going through the request/approve procedure manually. + +### `issueBatch(address[] _to, uint256[] _values, bytes[] _data) → uint256[]` (public) + +Directly issue a batch of certificates without going through the request/approve procedure manually. + +### `isRequestValid(uint256 _requestId) → bool` (external) + +Validation for certification requests. +Used by other contracts to validate the token. + +Requirements: + +- `_requestId` has to be an existing ID. + +### `getRegistryAddress() → address` (external) + +### `getPrivateIssuerAddress() → address` (external) + +### `version() → string` (external) + +### `_requestNotApprovedOrRevoked(uint256 _requestId) → bool` (internal) + +### `_authorizeUpgrade(address)` (internal) + +Needed for OpenZeppelin contract upgradeability. +Allow only to the owner of the contract. + +### `CertificationRequested(address _owner, uint256 _id)` + +### `CertificationRequestedBatch(address[] _owners, uint256[] _id)` + +### `CertificationRequestApproved(address _owner, uint256 _id, uint256 _certificateId)` + +### `CertificationRequestBatchApproved(address[] _owners, uint256[] _ids, uint256[] _certificateIds)` + +### `CertificationRequestRevoked(address _owner, uint256 _id)` + +### `CertificateRevoked(uint256 _certificateId)` diff --git a/docs/traceability/contracts/Migrations.md b/docs/traceability/contracts/Migrations.md new file mode 100644 index 0000000000..3a34eb7ef3 --- /dev/null +++ b/docs/traceability/contracts/Migrations.md @@ -0,0 +1,7 @@ +## `Migrations` + +### `restricted()` + +### `setCompleted(uint256 completed)` (public) + +### `upgrade(address new_address)` (public) diff --git a/docs/traceability/contracts/PrivateIssuer.md b/docs/traceability/contracts/PrivateIssuer.md new file mode 100644 index 0000000000..a30313d041 --- /dev/null +++ b/docs/traceability/contracts/PrivateIssuer.md @@ -0,0 +1,74 @@ +## `PrivateIssuer` + +Contract for private issuances. +Private certificate issuance differ from the public ones in a way +that the fungible volumes that are being transferred/claimed are stored off-chain. + +A privately issued certificate can later be migrated to be public. + +### `initialize(address _issuer)` (public) + +Contructor. +Uses the OpenZeppelin `initializer` for upgradeability. + +Requirements: + +- `_issuer` cannot be the zero address. + +### `getCertificateCommitment(uint256 certificateId) → bytes32` (public) + +Get the commitment (proof) for a specific certificate. + +### `approveCertificationRequestPrivate(uint256 _requestId, bytes32 _commitment) → uint256` (public) + +### `issuePrivate(address _to, bytes32 _commitment, bytes _data) → uint256` (public) + +Directly issue a private certificate. + +### `requestPrivateTransfer(uint256 _certificateId, bytes32 _ownerAddressLeafHash)` (external) + +Request transferring a certain amount of tokens + +### `approvePrivateTransfer(uint256 _certificateId, struct PrivateIssuer.Proof[] _proof, bytes32 _previousCommitment, bytes32 _commitment) → bool` (external) + +Approve a private transfer of certificates. + +### `requestMigrateToPublic(uint256 _certificateId, bytes32 _ownerAddressLeafHash) → uint256 _migrationRequestId` (external) + +Request the certificate volumes to be migrated from private to public. + +### `requestMigrateToPublicFor(uint256 _certificateId, bytes32 _ownerAddressLeafHash, address _forAddress) → uint256 _migrationRequestId` (external) + +Request the certificate volumes to be migrated from private to public for someone else. + +### `getPrivateTransferRequest(uint256 _certificateId) → struct PrivateIssuer.PrivateTransferRequest` (external) + +Get the private transfer request that is currently active for a specific certificate + +### `getMigrationRequest(uint256 _requestId) → struct PrivateIssuer.RequestStateChange` (external) + +Get the migration request. + +### `getMigrationRequestId(uint256 _certificateId) → uint256 _migrationRequestId` (external) + +Get the migration request ID for a specific certificate. + +### `migrateToPublic(uint256 _requestId, uint256 _volume, string _salt, struct PrivateIssuer.Proof[] _proof)` (external) + +Migrate a private certificate to be public + +### `_authorizeUpgrade(address)` (internal) + +### `getIssuerAddress() → address` (external) + +### `version() → string` (external) + +### `PrivateCertificationRequestApproved(address _owner, uint256 _id, uint256 _certificateId)` + +### `CommitmentUpdated(address _owner, uint256 _id, bytes32 _commitment)` + +### `MigrateToPublicRequested(address _owner, uint256 _id)` + +### `PrivateTransferRequested(address _owner, uint256 _certificateId)` + +### `CertificateMigratedToPublic(uint256 _certificateId, address _owner, uint256 _amount)` diff --git a/docs/traceability/contracts/Registry.md b/docs/traceability/contracts/Registry.md new file mode 100644 index 0000000000..3a4cccfd1b --- /dev/null +++ b/docs/traceability/contracts/Registry.md @@ -0,0 +1,81 @@ +## `Registry` + +Implementation of the Transferable Certificate standard ERC-1888. +See https://github.com/ethereum/EIPs/issues/1888 + +Also complies to ERC-1155: https://eips.ethereum.org/EIPS/eip-1155. + +### `constructor(string _uri)` (public) + +### `issue(address _to, bytes _validityData, uint256 _topic, uint256 _value, bytes _issuanceData) → uint256` (external) + +See {IERC1888-issue}. + +Requirements: + +- `_to` cannot be the zero address. + +### `batchIssue(address _to, bytes _issuanceData, uint256 _topic, uint256[] _values, bytes[] _validityCalls) → uint256[]` (external) + +See {IERC1888-batchIssue}. + +Requirements: + +- `_to` cannot be the zero address. +- `_issuanceData`, `_values` and `_validityCalls` must have the same length. + +### `batchIssueMultiple(address[] _to, bytes[] _issuanceData, uint256 _topic, uint256[] _values, bytes[] _validityCalls) → uint256[]` (external) + +Similar to {IERC1888-batchIssue}, but not a part of the ERC-1888 standard. +Allows batch issuing to an array of \_to addresses. + +Requirements: + +- `_to` cannot be the zero addresses. +- `_to`, `_issuanceData`, `_values` and `_validityCalls` must have the same length. + +### `mint(uint256 _id, address _to, uint256 _quantity)` (external) + +Allows the issuer to mint more fungible tokens for existing ERC-188 certificates. + +Requirements: + +- `_to` cannot be the zero addresses. + +### `safeTransferAndClaimFrom(address _from, address _to, uint256 _id, uint256 _value, bytes _data, bytes _claimData)` (external) + +See {IERC1888-safeTransferAndClaimFrom}. + +Requirements: + +- `_to` cannot be the zero address. +- `_from` has to have a balance above or equal `_value`. + +### `safeBatchTransferAndClaimFrom(address _from, address _to, uint256[] _ids, uint256[] _values, bytes _data, bytes[] _claimData)` (external) + +See {IERC1888-safeBatchTransferAndClaimFrom}. + +Requirements: + +- `_to` and `_from` cannot be the zero addresses. +- `_from` has to have a balance above 0. + +### `getCertificate(uint256 _id) → address issuer, uint256 topic, bytes validityCall, bytes data` (public) + +See {IERC1888-getCertificate}. + +### `claimedBalanceOf(address _owner, uint256 _id) → uint256` (external) + +See {IERC1888-claimedBalanceOf}. + +### `claimedBalanceOfBatch(address[] _owners, uint256[] _ids) → uint256[]` (external) + +See {IERC1888-claimedBalanceOfBatch}. + +### `_burn(address _from, uint256 _id, uint256 _value)` (internal) + +Burn certificates after they've been claimed, and increase the claimed balance. + +### `_validate(address _verifier, bytes _validityData)` (internal) + +Validate if the certificate is valid against an external `_verifier` contract. diff --git a/packages/traceability/issuer/package.json b/packages/traceability/issuer/package.json index 2062b73dfa..99720d4827 100644 --- a/packages/traceability/issuer/package.json +++ b/packages/traceability/issuer/package.json @@ -22,7 +22,7 @@ "test": "test" }, "scripts": { - "build": "yarn build:static && yarn build:ts", + "build": "yarn build:static && yarn build:ts && yarn generate:docs", "build:static": "yarn compile && yarn typechain:registry && yarn typechain:issuer && yarn typechain:issuer:private", "build:ts": "tsc -b tsconfig.json && yarn copy:declarations", "copy:declarations": "shx cp src/ethers/*.d.ts dist/js/src/ethers", @@ -41,7 +41,8 @@ "lint": "eslint \"src/**/*{.ts,.tsx}\" --quiet", "lint-fix": "eslint \"src/**/*{.ts,.tsx}\" --fix", "precommit": "lint-staged", - "audit": "mythx -c .mythx.yml analyze --remap-import \"@openzeppelin/=$(pwd)/node_modules/@openzeppelin/\"" + "audit": "mythx -c .mythx.yml analyze --remap-import \"@openzeppelin/=$(pwd)/node_modules/@openzeppelin/\"", + "generate:docs": "solidity-docgen -i contracts -o ../../../docs/traceability/contracts --solc-module solc-0.8" }, "types": "dist/js/src/index.d.ts", "dependencies": { @@ -67,6 +68,7 @@ "mocha": "9.0.0", "truffle": "5.3.10", "solc": "0.8.4", + "solc-0.8": "npm:solc@0.8.4", "winston-transport": "4.4.0", "@types/dotenv": "6.1.1", "@types/chai": "4.2.15", @@ -76,7 +78,8 @@ "@openzeppelin/truffle-upgrades": "1.7.0", "shx": "0.3.3", "@types/supertest": "2.0.11", - "ts-node": "9.1.1" + "ts-node": "9.1.1", + "solidity-docgen": "0.5.13" }, "publishConfig": { "access": "public", From eb89034341e3fe888d26a216fba7a1e9df6f4041 Mon Sep 17 00:00:00 2001 From: Joseph Bagaric Date: Fri, 18 Jun 2021 08:36:06 +0200 Subject: [PATCH 11/11] docs(issuer): switch to NatSpec for doc comments --- docs/traceability/contracts/Issuer.md | 18 +-- docs/traceability/contracts/PrivateIssuer.md | 20 ++- docs/traceability/contracts/Registry.md | 38 ++---- .../traceability/issuer/contracts/Issuer.sol | 48 +++----- .../issuer/contracts/PrivateIssuer.sol | 115 ++++++------------ .../issuer/contracts/Registry.sol | 88 ++++---------- 6 files changed, 105 insertions(+), 222 deletions(-) diff --git a/docs/traceability/contracts/Issuer.md b/docs/traceability/contracts/Issuer.md index 5c120fa5fc..ed575576f6 100644 --- a/docs/traceability/contracts/Issuer.md +++ b/docs/traceability/contracts/Issuer.md @@ -1,24 +1,19 @@ ## `Issuer` -Issuer contract. Used to manage the request/approve workflow for issuing ERC-1888 certificates. ### `initialize(uint256 _certificateTopic, address _registry)` (public) Contructor. -Uses the OpenZeppelin `initializer` for upgradeability. - -Requirements: -- `_registry` cannot be the zero address. +Uses the OpenZeppelin `initializer` for upgradeability. +`_registry` cannot be the zero address. ### `setPrivateIssuer(address _privateIssuer)` (public) Attaches a private issuance contract to this issuance contract. -Requirements: - -- `_privateIssuer` cannot be the zero address. +`_privateIssuer` cannot be the zero address. ### `getCertificationRequest(uint256 _requestId) → struct Issuer.CertificationRequest` (public) @@ -47,11 +42,9 @@ Directly issue a batch of certificates without going through the request/approve ### `isRequestValid(uint256 _requestId) → bool` (external) Validation for certification requests. -Used by other contracts to validate the token. - -Requirements: -- `_requestId` has to be an existing ID. +Used by other contracts to validate the token. +`_requestId` has to be an existing ID. ### `getRegistryAddress() → address` (external) @@ -64,6 +57,7 @@ Requirements: ### `_authorizeUpgrade(address)` (internal) Needed for OpenZeppelin contract upgradeability. + Allow only to the owner of the contract. ### `CertificationRequested(address _owner, uint256 _id)` diff --git a/docs/traceability/contracts/PrivateIssuer.md b/docs/traceability/contracts/PrivateIssuer.md index a30313d041..e4b2f8aeda 100644 --- a/docs/traceability/contracts/PrivateIssuer.md +++ b/docs/traceability/contracts/PrivateIssuer.md @@ -1,19 +1,15 @@ ## `PrivateIssuer` -Contract for private issuances. -Private certificate issuance differ from the public ones in a way -that the fungible volumes that are being transferred/claimed are stored off-chain. - A privately issued certificate can later be migrated to be public. -### `initialize(address _issuer)` (public) +Private certificate issuance differ from the public ones in a way that the fungible volumes that are being transferred/claimed are stored off-chain. -Contructor. -Uses the OpenZeppelin `initializer` for upgradeability. +### `initialize(address _issuer)` (public) -Requirements: +Constructor. -- `_issuer` cannot be the zero address. +Uses the OpenZeppelin `initializer` for upgradeability. +`_issuer` cannot be the zero address. ### `getCertificateCommitment(uint256 certificateId) → bytes32` (public) @@ -27,7 +23,7 @@ Directly issue a private certificate. ### `requestPrivateTransfer(uint256 _certificateId, bytes32 _ownerAddressLeafHash)` (external) -Request transferring a certain amount of tokens +Request transferring a certain amount of tokens. ### `approvePrivateTransfer(uint256 _certificateId, struct PrivateIssuer.Proof[] _proof, bytes32 _previousCommitment, bytes32 _commitment) → bool` (external) @@ -43,7 +39,7 @@ Request the certificate volumes to be migrated from private to public for someon ### `getPrivateTransferRequest(uint256 _certificateId) → struct PrivateIssuer.PrivateTransferRequest` (external) -Get the private transfer request that is currently active for a specific certificate +Get the private transfer request that is currently active for a specific certificate. ### `getMigrationRequest(uint256 _requestId) → struct PrivateIssuer.RequestStateChange` (external) @@ -55,7 +51,7 @@ Get the migration request ID for a specific certificate. ### `migrateToPublic(uint256 _requestId, uint256 _volume, string _salt, struct PrivateIssuer.Proof[] _proof)` (external) -Migrate a private certificate to be public +Migrate a private certificate to be public. ### `_authorizeUpgrade(address)` (internal) diff --git a/docs/traceability/contracts/Registry.md b/docs/traceability/contracts/Registry.md index 3a4cccfd1b..2195d755bf 100644 --- a/docs/traceability/contracts/Registry.md +++ b/docs/traceability/contracts/Registry.md @@ -1,8 +1,5 @@ ## `Registry` -Implementation of the Transferable Certificate standard ERC-1888. -See https://github.com/ethereum/EIPs/issues/1888 - Also complies to ERC-1155: https://eips.ethereum.org/EIPS/eip-1155. ### `constructor(string _uri)` (public) @@ -11,54 +8,43 @@ Also complies to ERC-1155: https://eips.ethereum.org/EIPS/eip-1155. See {IERC1888-issue}. -Requirements: - -- `_to` cannot be the zero address. +`_to` cannot be the zero address. ### `batchIssue(address _to, bytes _issuanceData, uint256 _topic, uint256[] _values, bytes[] _validityCalls) → uint256[]` (external) See {IERC1888-batchIssue}. -Requirements: - -- `_to` cannot be the zero address. -- `_issuanceData`, `_values` and `_validityCalls` must have the same length. +`_to` cannot be the zero address. +`_issuanceData`, `_values` and `_validityCalls` must have the same length. ### `batchIssueMultiple(address[] _to, bytes[] _issuanceData, uint256 _topic, uint256[] _values, bytes[] _validityCalls) → uint256[]` (external) Similar to {IERC1888-batchIssue}, but not a part of the ERC-1888 standard. -Allows batch issuing to an array of \_to addresses. - -Requirements: -- `_to` cannot be the zero addresses. -- `_to`, `_issuanceData`, `_values` and `_validityCalls` must have the same length. +Allows batch issuing to an array of \_to addresses. +`_to` cannot be the zero addresses. +`_to`, `_issuanceData`, `_values` and `_validityCalls` must have the same length. ### `mint(uint256 _id, address _to, uint256 _quantity)` (external) Allows the issuer to mint more fungible tokens for existing ERC-188 certificates. -Requirements: - -- `_to` cannot be the zero addresses. +Allows batch issuing to an array of \_to addresses. +`_to` cannot be the zero address. ### `safeTransferAndClaimFrom(address _from, address _to, uint256 _id, uint256 _value, bytes _data, bytes _claimData)` (external) See {IERC1888-safeTransferAndClaimFrom}. -Requirements: - -- `_to` cannot be the zero address. -- `_from` has to have a balance above or equal `_value`. +`_to` cannot be the zero address. +`_from` has to have a balance above or equal `_value`. ### `safeBatchTransferAndClaimFrom(address _from, address _to, uint256[] _ids, uint256[] _values, bytes _data, bytes[] _claimData)` (external) See {IERC1888-safeBatchTransferAndClaimFrom}. -Requirements: - -- `_to` and `_from` cannot be the zero addresses. -- `_from` has to have a balance above 0. +`_to` and `_from` cannot be the zero addresses. +`_from` has to have a balance above 0. ### `getCertificate(uint256 _id) → address issuer, uint256 topic, bytes validityCall, bytes data` (public) diff --git a/packages/traceability/issuer/contracts/Issuer.sol b/packages/traceability/issuer/contracts/Issuer.sol index 9307b1ac6f..742bf85a23 100644 --- a/packages/traceability/issuer/contracts/Issuer.sol +++ b/packages/traceability/issuer/contracts/Issuer.sol @@ -7,10 +7,8 @@ import "@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol"; import "./Registry.sol"; -/** - * @dev Issuer contract. - * Used to manage the request/approve workflow for issuing ERC-1888 certificates. - */ +/// @title Issuer contract +/// @notice Used to manage the request/approve workflow for issuing ERC-1888 certificates. contract Issuer is Initializable, OwnableUpgradeable, UUPSUpgradeable { event CertificationRequested(address indexed _owner, uint256 indexed _id); event CertificationRequestedBatch(address[] indexed _owners, uint256[] indexed _id); @@ -49,13 +47,9 @@ contract Issuer is Initializable, OwnableUpgradeable, UUPSUpgradeable { address sender; // User that triggered the request creation } - /** - * @dev Contructor. - * Uses the OpenZeppelin `initializer` for upgradeability. - * - * Requirements: - * - `_registry` cannot be the zero address. - */ + /// @notice Contructor. + /// @dev Uses the OpenZeppelin `initializer` for upgradeability. + /// @dev `_registry` cannot be the zero address. function initialize(uint256 _certificateTopic, address _registry) public initializer { require(_registry != address(0), "Issuer::initialize: Cannot use address 0x0 as registry address."); @@ -66,12 +60,8 @@ contract Issuer is Initializable, OwnableUpgradeable, UUPSUpgradeable { UUPSUpgradeable.__UUPSUpgradeable_init(); } - /** - * @dev Attaches a private issuance contract to this issuance contract. - * - * Requirements: - * - `_privateIssuer` cannot be the zero address. - */ + /// @notice Attaches a private issuance contract to this issuance contract. + /// @dev `_privateIssuer` cannot be the zero address. function setPrivateIssuer(address _privateIssuer) public onlyOwner { require(_privateIssuer != address(0), "Issuer::setPrivateIssuer: Cannot use address 0x0 as the private issuer address."); require(privateIssuer == address(0), "Issuer::setPrivateIssuer: private issuance contract already set."); @@ -215,9 +205,7 @@ contract Issuer is Initializable, OwnableUpgradeable, UUPSUpgradeable { return certificateIds; } - /** - * @dev Directly issue a certificate without going through the request/approve procedure manually. - */ + /// @notice Directly issue a certificate without going through the request/approve procedure manually. function issue(address _to, uint256 _value, bytes memory _data) public onlyOwner returns (uint256) { uint256 requestId = requestCertificationFor(_data, _to); @@ -227,9 +215,7 @@ contract Issuer is Initializable, OwnableUpgradeable, UUPSUpgradeable { ); } - /** - * @dev Directly issue a batch of certificates without going through the request/approve procedure manually. - */ + /// @notice Directly issue a batch of certificates without going through the request/approve procedure manually. function issueBatch(address[] memory _to, uint256[] memory _values, bytes[] memory _data) public onlyOwner returns (uint256[] memory) { uint256[] memory requestIds = requestCertificationForBatch(_data, _to); @@ -239,13 +225,9 @@ contract Issuer is Initializable, OwnableUpgradeable, UUPSUpgradeable { ); } - /** - * @dev Validation for certification requests. - * Used by other contracts to validate the token. - * - * Requirements: - * - `_requestId` has to be an existing ID. - */ + /// @notice Validation for certification requests. + /// @dev Used by other contracts to validate the token. + /// @dev `_requestId` has to be an existing ID. function isRequestValid(uint256 _requestId) external view returns (bool) { require(_requestId <= _latestCertificationRequestId, "Issuer::isRequestValid: certification request ID out of bounds"); @@ -283,9 +265,7 @@ contract Issuer is Initializable, OwnableUpgradeable, UUPSUpgradeable { return !request.approved && !request.revoked; } - /** - * @dev Needed for OpenZeppelin contract upgradeability. - * Allow only to the owner of the contract. - */ + /// @notice Needed for OpenZeppelin contract upgradeability. + /// @dev Allow only to the owner of the contract. function _authorizeUpgrade(address) internal override onlyOwner {} } \ No newline at end of file diff --git a/packages/traceability/issuer/contracts/PrivateIssuer.sol b/packages/traceability/issuer/contracts/PrivateIssuer.sol index c24fd4b18f..25633e0887 100644 --- a/packages/traceability/issuer/contracts/PrivateIssuer.sol +++ b/packages/traceability/issuer/contracts/PrivateIssuer.sol @@ -7,13 +7,9 @@ import "@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol"; import "./Issuer.sol"; -/** - * @dev Contract for private issuances. - * Private certificate issuance differ from the public ones in a way - * that the fungible volumes that are being transferred/claimed are stored off-chain. - * - * A privately issued certificate can later be migrated to be public. - */ +/// @title Contract for private issuances. +/// @dev Private certificate issuance differ from the public ones in a way that the fungible volumes that are being transferred/claimed are stored off-chain. +/// @notice A privately issued certificate can later be migrated to be public. contract PrivateIssuer is Initializable, OwnableUpgradeable, UUPSUpgradeable { // Public issuance contract @@ -63,13 +59,9 @@ contract PrivateIssuer is Initializable, OwnableUpgradeable, UUPSUpgradeable { bytes32 hash; } - /** - * @dev Contructor. - * Uses the OpenZeppelin `initializer` for upgradeability. - * - * Requirements: - * - `_issuer` cannot be the zero address. - */ + /// @notice Constructor. + /// @dev Uses the OpenZeppelin `initializer` for upgradeability. + /// @dev `_issuer` cannot be the zero address. function initialize(address _issuer) public initializer { require(_issuer != address(0), "PrivateIssuer::initialize: Cannot use address 0x0 as Issuer address."); @@ -84,9 +76,7 @@ contract PrivateIssuer is Initializable, OwnableUpgradeable, UUPSUpgradeable { Certification requests */ - /** - * @dev Get the commitment (proof) for a specific certificate. - */ + /// @notice Get the commitment (proof) for a specific certificate. function getCertificateCommitment(uint256 certificateId) public view returns (bytes32) { return _commitments[certificateId]; } @@ -105,9 +95,7 @@ contract PrivateIssuer is Initializable, OwnableUpgradeable, UUPSUpgradeable { return certificateId; } - /** - * @dev Directly issue a private certificate. - */ + /// @notice Directly issue a private certificate. function issuePrivate(address _to, bytes32 _commitment, bytes memory _data) public onlyOwner returns (uint256) { require(_to != address(0x0), "PrivateIssuer::issuePrivate: Cannot use address 0x0 as _to address."); @@ -119,17 +107,14 @@ contract PrivateIssuer is Initializable, OwnableUpgradeable, UUPSUpgradeable { ); } - /** - * @dev Request transferring a certain amount of tokens - * - * @param _certificateId Certificate that you want to change the balances of - * @param _ownerAddressLeafHash New updated proof (balances per address) - */ + /// @notice Request transferring a certain amount of tokens. + /// @param _certificateId Certificate that you want to change the balances of. + /// @param _ownerAddressLeafHash New updated proof (balances per address). function requestPrivateTransfer(uint256 _certificateId, bytes32 _ownerAddressLeafHash) external { PrivateTransferRequest storage currentRequest = _requestPrivateTransferStorage[_certificateId]; /* - * RESTRICTION: There can only be one private transfer request at a time per certificate. + //RESTRICTION: There can only be one private transfer request at a time per certificate. */ require(currentRequest.owner == address(0x0), "PrivateIssuer::requestPrivateTransfer:Only one private transfer can be requested at a time."); @@ -141,9 +126,7 @@ contract PrivateIssuer is Initializable, OwnableUpgradeable, UUPSUpgradeable { emit PrivateTransferRequested(_msgSender(), _certificateId); } - /** - * @dev Approve a private transfer of certificates. - */ + /// @notice Approve a private transfer of certificates. function approvePrivateTransfer( uint256 _certificateId, Proof[] calldata _proof, @@ -165,44 +148,32 @@ contract PrivateIssuer is Initializable, OwnableUpgradeable, UUPSUpgradeable { return true; } - /** - * @dev Request the certificate volumes to be migrated from private to public. - * - * @param _certificateId Certificate that you want to migrate to public - * @param _ownerAddressLeafHash Final balance proof - */ + /// @notice Request the certificate volumes to be migrated from private to public. + /// @param _certificateId Certificate that you want to migrate to public. + /// @param _ownerAddressLeafHash Final balance proof. function requestMigrateToPublic(uint256 _certificateId, bytes32 _ownerAddressLeafHash) external returns (uint256 _migrationRequestId) { return _requestMigrateToPublicFor(_certificateId, _ownerAddressLeafHash, _msgSender()); } - /** - * @dev Request the certificate volumes to be migrated from private to public for someone else. - * - * @param _certificateId Certificate that you want to migrate to public - * @param _ownerAddressLeafHash Final balance proof - * @param _forAddress Owner - */ + /// @notice Request the certificate volumes to be migrated from private to public for someone else. + /// @param _certificateId Certificate that you want to migrate to public. + /// @param _ownerAddressLeafHash Final balance proof. + /// @param _forAddress Owner. function requestMigrateToPublicFor(uint256 _certificateId, bytes32 _ownerAddressLeafHash, address _forAddress) external onlyOwner returns (uint256 _migrationRequestId) { return _requestMigrateToPublicFor(_certificateId, _ownerAddressLeafHash, _forAddress); } - /** - * @dev Get the private transfer request that is currently active for a specific certificate - */ + /// @notice Get the private transfer request that is currently active for a specific certificate. function getPrivateTransferRequest(uint256 _certificateId) external view onlyOwner returns (PrivateTransferRequest memory) { return _requestPrivateTransferStorage[_certificateId]; } - /** - * @dev Get the migration request. - */ + /// @notice Get the migration request. function getMigrationRequest(uint256 _requestId) external view onlyOwner returns (RequestStateChange memory) { return _requestMigrateToPublicStorage[_requestId]; } - /** - * @dev Get the migration request ID for a specific certificate. - */ + /// @notice Get the migration request ID for a specific certificate. function getMigrationRequestId(uint256 _certificateId) external view onlyOwner returns (uint256 _migrationRequestId) { bool found = false; @@ -216,14 +187,12 @@ contract PrivateIssuer is Initializable, OwnableUpgradeable, UUPSUpgradeable { require(found, "unable to find the migration request"); } - /** - * @dev Migrate a private certificate to be public - * - * @param _requestId Migration Request ID - * @param _volume Volume that should be minted - * @param _salt Precise Proof salt - * @param _proof Precise Proof - */function migrateToPublic( + /// @notice Migrate a private certificate to be public. + /// @param _requestId Migration Request ID. + /// @param _volume Volume that should be minted. + /// @param _salt Precise Proof salt. + /// @param _proof Precise Proof. + function migrateToPublic( uint256 _requestId, uint256 _volume, string calldata _salt, @@ -250,15 +219,12 @@ contract PrivateIssuer is Initializable, OwnableUpgradeable, UUPSUpgradeable { Utils */ - /** - * @dev Validates that a `_ownerAddress` actually owns `_volume` in a precise proof. - * - * @param _ownerAddress Owner blockchain address - * @param _volume Volume that the owner should have - * @param _salt Precise Proof salt - * @param _rootHash Hash of the merkle tree root - * @param _proof Full Precise Proof - */ + /// @notice Validates that a `_ownerAddress` actually owns `_volume` in a precise proof. + /// @param _ownerAddress Owner blockchain address. + /// @param _volume Volume that the owner should have. + /// @param _salt Precise Proof salt. + /// @param _rootHash Hash of the merkle tree root. + /// @param _proof Full Precise Proof. function validateOwnershipProof( address _ownerAddress, uint256 _volume, @@ -271,13 +237,10 @@ contract PrivateIssuer is Initializable, OwnableUpgradeable, UUPSUpgradeable { return validateMerkle(leafHash, _rootHash, _proof); } - /** - * @dev Validates that a `_leafHash` is a leaf in the `_proof` with a merkle root hash `_rootHash`. - * - * @param _leafHash Hash of the leaf in the merkle tree - * @param _rootHash Hash of the merkle tree root - * @param _proof Full Precise Proof - */ + /// @notice Validates that a `_leafHash` is a leaf in the `_proof` with a merkle root hash `_rootHash`. + /// @param _leafHash Hash of the leaf in the merkle tree. + /// @param _rootHash Hash of the merkle tree root. + /// @param _proof Full Precise Proof. function validateMerkle(bytes32 _leafHash, bytes32 _rootHash, Proof[] memory _proof) private pure returns (bool) { bytes32 hash = _leafHash; diff --git a/packages/traceability/issuer/contracts/Registry.sol b/packages/traceability/issuer/contracts/Registry.sol index 566016cdfc..c5cdf75b21 100644 --- a/packages/traceability/issuer/contracts/Registry.sol +++ b/packages/traceability/issuer/contracts/Registry.sol @@ -4,12 +4,9 @@ pragma solidity 0.8.4; import "@openzeppelin/contracts/token/ERC1155/ERC1155.sol"; import "./ERC1888/IERC1888.sol"; -/** - * @dev Implementation of the Transferable Certificate standard ERC-1888. - * See https://github.com/ethereum/EIPs/issues/1888 - * - * Also complies to ERC-1155: https://eips.ethereum.org/EIPS/eip-1155. - */ + +/// @title Implementation of the Transferable Certificate standard ERC-1888. +/// @dev Also complies to ERC-1155: https://eips.ethereum.org/EIPS/eip-1155. contract Registry is ERC1155, ERC1888 { // Storage for the Certificate structs @@ -23,12 +20,8 @@ contract Registry is ERC1155, ERC1888 { constructor(string memory _uri) public ERC1155(_uri) {} - /** - * @dev See {IERC1888-issue}. - * - * Requirements: - * - `_to` cannot be the zero address. - */ + /// @notice See {IERC1888-issue}. + /// @dev `_to` cannot be the zero address. function issue(address _to, bytes calldata _validityData, uint256 _topic, uint256 _value, bytes calldata _issuanceData) external override returns (uint256) { require(_to != address(0x0), "Registry::issue: to must be non-zero."); @@ -49,13 +42,9 @@ contract Registry is ERC1155, ERC1888 { return id; } - /** - * @dev See {IERC1888-batchIssue}. - * - * Requirements: - * - `_to` cannot be the zero address. - * - `_issuanceData`, `_values` and `_validityCalls` must have the same length. - */ + /// @notice See {IERC1888-batchIssue}. + /// @dev `_to` cannot be the zero address. + /// @dev `_issuanceData`, `_values` and `_validityCalls` must have the same length. function batchIssue(address _to, bytes memory _issuanceData, uint256 _topic, uint256[] memory _values, bytes[] memory _validityCalls) external override returns (uint256[] memory) { require(_to != address(0x0), "Registry::issue: to must be non-zero."); require(_issuanceData.length == _values.length, "Registry::batchIssueMultiple: _issuanceData and _values arrays have to be the same length"); @@ -86,14 +75,10 @@ contract Registry is ERC1155, ERC1888 { return ids; } - /** - * @dev Similar to {IERC1888-batchIssue}, but not a part of the ERC-1888 standard. - * Allows batch issuing to an array of _to addresses. - * - * Requirements: - * - `_to` cannot be the zero addresses. - * - `_to`, `_issuanceData`, `_values` and `_validityCalls` must have the same length. - */ + /// @notice Similar to {IERC1888-batchIssue}, but not a part of the ERC-1888 standard. + /// @dev Allows batch issuing to an array of _to addresses. + /// @dev `_to` cannot be the zero addresses. + /// @dev `_to`, `_issuanceData`, `_values` and `_validityCalls` must have the same length. function batchIssueMultiple(address[] memory _to, bytes[] memory _issuanceData, uint256 _topic, uint256[] memory _values, bytes[] memory _validityCalls) external returns (uint256[] memory) { require(_to.length == _issuanceData.length, "Registry::batchIssueMultiple: _to and _issuanceData arrays have to be the same length"); require(_issuanceData.length == _values.length, "Registry::batchIssueMultiple: _issuanceData and _values arrays have to be the same length"); @@ -127,12 +112,9 @@ contract Registry is ERC1155, ERC1888 { return ids; } - /** - * @dev Allows the issuer to mint more fungible tokens for existing ERC-188 certificates. - * - * Requirements: - * - `_to` cannot be the zero addresses. - */ + /// @notice Allows the issuer to mint more fungible tokens for existing ERC-188 certificates. + /// @dev Allows batch issuing to an array of _to addresses. + /// @dev `_to` cannot be the zero address. function mint(uint256 _id, address _to, uint256 _quantity) external { require(_to != address(0x0), "Registry::issue: to must be non-zero."); require(_quantity > 0, "Registry::mint: _quantity must be higher than 0."); @@ -143,13 +125,9 @@ contract Registry is ERC1155, ERC1888 { ERC1155._mint(_to, _id, _quantity, new bytes(0)); } - /** - * @dev See {IERC1888-safeTransferAndClaimFrom}. - * - * Requirements: - * - `_to` cannot be the zero address. - * - `_from` has to have a balance above or equal `_value`. - */ + /// @notice See {IERC1888-safeTransferAndClaimFrom}. + /// @dev `_to` cannot be the zero address. + /// @dev `_from` has to have a balance above or equal `_value`. function safeTransferAndClaimFrom( address _from, address _to, @@ -177,13 +155,9 @@ contract Registry is ERC1155, ERC1888 { emit ClaimSingle(_from, _to, cert.topic, _id, _value, _claimData); //_claimSubject address ?? } - /** - * @dev See {IERC1888-safeBatchTransferAndClaimFrom}. - * - * Requirements: - * - `_to` and `_from` cannot be the zero addresses. - * - `_from` has to have a balance above 0. - */ + /// @notice See {IERC1888-safeBatchTransferAndClaimFrom}. + /// @dev `_to` and `_from` cannot be the zero addresses. + /// @dev `_from` has to have a balance above 0. function safeBatchTransferAndClaimFrom( address _from, address _to, @@ -225,9 +199,7 @@ contract Registry is ERC1155, ERC1888 { emit ClaimBatch(_from, _to, topics, _ids, _values, _claimData); } - /** - * @dev See {IERC1888-getCertificate}. - */ + /// @notice See {IERC1888-getCertificate}. function getCertificate(uint256 _id) public view override returns (address issuer, uint256 topic, bytes memory validityCall, bytes memory data) { require(_id <= _latestCertificateId, "Registry::getCertificate: _id out of bounds"); @@ -235,16 +207,12 @@ contract Registry is ERC1155, ERC1888 { return (certificate.issuer, certificate.topic, certificate.validityData, certificate.data); } - /** - * @dev See {IERC1888-claimedBalanceOf}. - */ + /// @notice See {IERC1888-claimedBalanceOf}. function claimedBalanceOf(address _owner, uint256 _id) external override view returns (uint256) { return claimedBalances[_id][_owner]; } - /** - * @dev See {IERC1888-claimedBalanceOfBatch}. - */ + /// @notice See {IERC1888-claimedBalanceOfBatch}. function claimedBalanceOfBatch(address[] calldata _owners, uint256[] calldata _ids) external override view returns (uint256[] memory) { require(_owners.length == _ids.length, "Registry::ERC1155: _owners and ids length mismatch"); @@ -257,18 +225,14 @@ contract Registry is ERC1155, ERC1888 { return batchClaimBalances; } - /** - * @dev Burn certificates after they've been claimed, and increase the claimed balance. - */ + /// @notice Burn certificates after they've been claimed, and increase the claimed balance. function _burn(address _from, uint256 _id, uint256 _value) internal override { ERC1155._burn(_from, _id, _value); claimedBalances[_id][_from] = claimedBalances[_id][_from] + _value; } - /** - * @dev Validate if the certificate is valid against an external `_verifier` contract. - */ + /// @notice Validate if the certificate is valid against an external `_verifier` contract. function _validate(address _verifier, bytes memory _validityData) internal view { (bool success, bytes memory result) = _verifier.staticcall(_validityData);