From 13f28be58479665db5fd5c40aa9cc2608b70e6a9 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 1 Jan 2024 11:34:52 +0000 Subject: [PATCH 01/87] Bump i18next from 23.2.11 to 23.7.13 in /login-workflow/example Bumps [i18next](https://github.com/i18next/i18next) from 23.2.11 to 23.7.13. - [Release notes](https://github.com/i18next/i18next/releases) - [Changelog](https://github.com/i18next/i18next/blob/master/CHANGELOG.md) - [Commits](https://github.com/i18next/i18next/compare/v23.2.11...v23.7.13) --- updated-dependencies: - dependency-name: i18next dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- login-workflow/example/package.json | 2 +- login-workflow/example/yarn.lock | 27 ++++++++++++++++----------- 2 files changed, 17 insertions(+), 12 deletions(-) diff --git a/login-workflow/example/package.json b/login-workflow/example/package.json index d83a0ed8..5f95f997 100644 --- a/login-workflow/example/package.json +++ b/login-workflow/example/package.json @@ -44,7 +44,7 @@ "@types/react": "^18.0.31", "@types/react-dom": "^18.0.0", "date-fns": "^2.29.2", - "i18next": "^23.2.11", + "i18next": "^23.7.13", "react": "^18.2.0", "react-app-polyfill": "^3.0.0", "react-dom": "^18.0.0", diff --git a/login-workflow/example/yarn.lock b/login-workflow/example/yarn.lock index a2b8d6ce..1668fe3c 100644 --- a/login-workflow/example/yarn.lock +++ b/login-workflow/example/yarn.lock @@ -1107,12 +1107,12 @@ resolved "https://registry.yarnpkg.com/@babel/regjsgen/-/regjsgen-0.8.0.tgz#f0ba69b075e1f05fb2825b7fad991e7adbb18310" integrity sha512-x/rqGMdzj+fWZvCOYForTghzbtqPDZ5gPwaoNGHdgDfF2QA/XZbCBp4Moo5scrkAMPhB7z26XM/AaHuIJdgauA== -"@babel/runtime@^7.11.2", "@babel/runtime@^7.12.5", "@babel/runtime@^7.16.3", "@babel/runtime@^7.18.3", "@babel/runtime@^7.20.7", "@babel/runtime@^7.21.0", "@babel/runtime@^7.22.5", "@babel/runtime@^7.5.5", "@babel/runtime@^7.8.4", "@babel/runtime@^7.8.7", "@babel/runtime@^7.9.2": - version "7.22.6" - resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.22.6.tgz#57d64b9ae3cff1d67eb067ae117dac087f5bd438" - integrity sha512-wDb5pWm4WDdF6LFUde3Jl8WzPA+3ZbxYqkC6xAXuD3irdEHN1k0NfTRrJD8ZD378SJ61miMLCqIOXYhd8x+AJQ== +"@babel/runtime@^7.11.2", "@babel/runtime@^7.12.5", "@babel/runtime@^7.16.3", "@babel/runtime@^7.18.3", "@babel/runtime@^7.20.7", "@babel/runtime@^7.21.0", "@babel/runtime@^7.22.5", "@babel/runtime@^7.23.2", "@babel/runtime@^7.5.5", "@babel/runtime@^7.8.4", "@babel/runtime@^7.8.7", "@babel/runtime@^7.9.2": + version "7.23.7" + resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.23.7.tgz#dd7c88deeb218a0f8bd34d5db1aa242e0f203193" + integrity sha512-w06OXVOFso7LcbzMiDGt+3X7Rh7Ho8MmgPoWU3rarH+8upf+wSU/grlGbWzQyr3DkdN6ZeuMFjpdwW0Q+HxobA== dependencies: - regenerator-runtime "^0.13.11" + regenerator-runtime "^0.14.0" "@babel/template@^7.18.10", "@babel/template@^7.20.7", "@babel/template@^7.3.3": version "7.21.9" @@ -5818,12 +5818,12 @@ human-signals@^2.1.0: resolved "https://registry.yarnpkg.com/human-signals/-/human-signals-2.1.0.tgz#dc91fcba42e4d06e4abaed33b3e7a3c02f514ea0" integrity sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw== -i18next@^23.2.11: - version "23.2.11" - resolved "https://registry.yarnpkg.com/i18next/-/i18next-23.2.11.tgz#0c6f3a637fa87d3243e64b78ad285b7f77d41353" - integrity sha512-MA4FsxOjyCaOZtRDB4yuwjCvqYEioD4G4LlXOn7SO3rnQUlxTufyLsOqfL9MKakeLRBkefe8bqcs0D6Z/xFk1w== +i18next@^23.7.13: + version "23.7.13" + resolved "https://registry.yarnpkg.com/i18next/-/i18next-23.7.13.tgz#2dda870cbf63e168e1d4eb8f6f700b5c26794a3d" + integrity sha512-DbCPlw6VmURSZa43iOnycxq9o15e+WuBWDBZ3aj+gQZcDz4sgnuKwrcwmP1n8gSSCwCN7CRFGTpnwTd93A16Mg== dependencies: - "@babel/runtime" "^7.22.5" + "@babel/runtime" "^7.23.2" iconv-lite@0.4.24: version "0.4.24" @@ -8957,11 +8957,16 @@ regenerate@^1.4.2: resolved "https://registry.yarnpkg.com/regenerate/-/regenerate-1.4.2.tgz#b9346d8827e8f5a32f7ba29637d398b69014848a" integrity sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A== -regenerator-runtime@^0.13.11, regenerator-runtime@^0.13.9: +regenerator-runtime@^0.13.9: version "0.13.11" resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.11.tgz#f6dca3e7ceec20590d07ada785636a90cdca17f9" integrity sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg== +regenerator-runtime@^0.14.0: + version "0.14.1" + resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.14.1.tgz#356ade10263f685dda125100cd862c1db895327f" + integrity sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw== + regenerator-transform@^0.15.1: version "0.15.1" resolved "https://registry.yarnpkg.com/regenerator-transform/-/regenerator-transform-0.15.1.tgz#f6c4e99fc1b4591f780db2586328e4d9a9d8dc56" From 1812c401989f16a0f8e08905da47d81dc59e8189 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 1 Jan 2024 11:41:42 +0000 Subject: [PATCH 02/87] Bump date-fns from 2.30.0 to 3.0.6 in /login-workflow Bumps [date-fns](https://github.com/date-fns/date-fns) from 2.30.0 to 3.0.6. - [Release notes](https://github.com/date-fns/date-fns/releases) - [Changelog](https://github.com/date-fns/date-fns/blob/main/CHANGELOG.md) - [Commits](https://github.com/date-fns/date-fns/compare/v2.30.0...v3.0.6) --- updated-dependencies: - dependency-name: date-fns dependency-type: direct:development update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] --- login-workflow/package.json | 2 +- login-workflow/yarn.lock | 12 +++++------- 2 files changed, 6 insertions(+), 8 deletions(-) diff --git a/login-workflow/package.json b/login-workflow/package.json index 400083c5..f997df7b 100644 --- a/login-workflow/package.json +++ b/login-workflow/package.json @@ -89,7 +89,7 @@ "@typescript-eslint/parser": "^6.7.3", "babel-jest": "^28.1.3", "clsx": "^1.1.1", - "date-fns": "^2.22.1", + "date-fns": "^3.0.6", "eslint": "^8.50.0", "eslint-config-prettier": "^8.3.0", "eslint-plugin-react": "^7.29.4", diff --git a/login-workflow/yarn.lock b/login-workflow/yarn.lock index 4f1317e9..3064aa99 100644 --- a/login-workflow/yarn.lock +++ b/login-workflow/yarn.lock @@ -1046,7 +1046,7 @@ resolved "https://registry.yarnpkg.com/@babel/regjsgen/-/regjsgen-0.8.0.tgz#f0ba69b075e1f05fb2825b7fad991e7adbb18310" integrity sha512-x/rqGMdzj+fWZvCOYForTghzbtqPDZ5gPwaoNGHdgDfF2QA/XZbCBp4Moo5scrkAMPhB7z26XM/AaHuIJdgauA== -"@babel/runtime@^7.12.5", "@babel/runtime@^7.18.3", "@babel/runtime@^7.19.0", "@babel/runtime@^7.21.0", "@babel/runtime@^7.22.15", "@babel/runtime@^7.22.5", "@babel/runtime@^7.5.5", "@babel/runtime@^7.8.4", "@babel/runtime@^7.8.7", "@babel/runtime@^7.9.2": +"@babel/runtime@^7.12.5", "@babel/runtime@^7.18.3", "@babel/runtime@^7.19.0", "@babel/runtime@^7.22.15", "@babel/runtime@^7.22.5", "@babel/runtime@^7.5.5", "@babel/runtime@^7.8.4", "@babel/runtime@^7.8.7", "@babel/runtime@^7.9.2": version "7.22.15" resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.22.15.tgz#38f46494ccf6cf020bd4eed7124b425e83e523b8" integrity sha512-T0O+aa+4w0u06iNmapipJXMV4HoUir03hpx3/YqXXhu9xim3w+dVphjFWl1OH8NbZHw5Lbm9k45drDkgq2VNNA== @@ -3777,12 +3777,10 @@ data-urls@^3.0.2: whatwg-mimetype "^3.0.0" whatwg-url "^11.0.0" -date-fns@^2.22.1: - version "2.30.0" - resolved "https://registry.yarnpkg.com/date-fns/-/date-fns-2.30.0.tgz#f367e644839ff57894ec6ac480de40cae4b0f4d0" - integrity sha512-fnULvOpxnC5/Vg3NCiWelDsLiUc9bRwAPs/+LfTLNvetFCtCTN+yQz15C/fs4AwX1R9K5GLtLfn8QW+dWisaAw== - dependencies: - "@babel/runtime" "^7.21.0" +date-fns@^3.0.6: + version "3.0.6" + resolved "https://registry.yarnpkg.com/date-fns/-/date-fns-3.0.6.tgz#fe3aeb7592d359f075ffc41cb16139828810ca83" + integrity sha512-W+G99rycpKMMF2/YD064b2lE7jJGUe+EjOES7Q8BIGY8sbNdbgcs9XFTZwvzc9Jx1f3k7LB7gZaZa7f8Agzljg== debug@2.6.9: version "2.6.9" From d7970f9404e284defd462db5649aeedfa2df6fee Mon Sep 17 00:00:00 2001 From: jeffgreiner-eaton Date: Tue, 2 Jan 2024 14:03:44 -0500 Subject: [PATCH 03/87] update import for Locale & bump date-fns version to match --- login-workflow/example/package.json | 2 +- login-workflow/example/yarn.lock | 10 ++++------ login-workflow/package.json | 2 +- login-workflow/src/utils/i18nUtils.ts | 2 +- 4 files changed, 7 insertions(+), 9 deletions(-) diff --git a/login-workflow/example/package.json b/login-workflow/example/package.json index d83a0ed8..1419a2d9 100644 --- a/login-workflow/example/package.json +++ b/login-workflow/example/package.json @@ -43,7 +43,7 @@ "@types/node": "^17.0.23", "@types/react": "^18.0.31", "@types/react-dom": "^18.0.0", - "date-fns": "^2.29.2", + "date-fns": "^3.0.6", "i18next": "^23.2.11", "react": "^18.2.0", "react-app-polyfill": "^3.0.0", diff --git a/login-workflow/example/yarn.lock b/login-workflow/example/yarn.lock index a2b8d6ce..f031b10d 100644 --- a/login-workflow/example/yarn.lock +++ b/login-workflow/example/yarn.lock @@ -4305,12 +4305,10 @@ data-urls@^2.0.0: whatwg-mimetype "^2.3.0" whatwg-url "^8.0.0" -date-fns@^2.29.2: - version "2.30.0" - resolved "https://registry.yarnpkg.com/date-fns/-/date-fns-2.30.0.tgz#f367e644839ff57894ec6ac480de40cae4b0f4d0" - integrity sha512-fnULvOpxnC5/Vg3NCiWelDsLiUc9bRwAPs/+LfTLNvetFCtCTN+yQz15C/fs4AwX1R9K5GLtLfn8QW+dWisaAw== - dependencies: - "@babel/runtime" "^7.21.0" +date-fns@^3.0.6: + version "3.0.6" + resolved "https://registry.yarnpkg.com/date-fns/-/date-fns-3.0.6.tgz#fe3aeb7592d359f075ffc41cb16139828810ca83" + integrity sha512-W+G99rycpKMMF2/YD064b2lE7jJGUe+EjOES7Q8BIGY8sbNdbgcs9XFTZwvzc9Jx1f3k7LB7gZaZa7f8Agzljg== debug@2.6.9, debug@^2.6.0: version "2.6.9" diff --git a/login-workflow/package.json b/login-workflow/package.json index f997df7b..c9e75081 100644 --- a/login-workflow/package.json +++ b/login-workflow/package.json @@ -33,7 +33,7 @@ "@emotion/styled": "^11.6.0", "@mui/icons-material": "^5.10.15", "@mui/material": "^5.10.15", - "date-fns": "^2.14.0", + "date-fns": "^3.0.6", "i18next": "^23.0.1", "react": "^16.13.1 || ^17.0.0 || ^18.0.0", "react-dom": "^16.8.6 || ^17.0.0 || ^18.0.0", diff --git a/login-workflow/src/utils/i18nUtils.ts b/login-workflow/src/utils/i18nUtils.ts index 1fb7d8bb..8a275eb7 100644 --- a/login-workflow/src/utils/i18nUtils.ts +++ b/login-workflow/src/utils/i18nUtils.ts @@ -1,5 +1,5 @@ import i18n from 'i18next'; -import { fr, enUS, es, zhCN, ptBR } from 'date-fns/locale'; +import { fr, enUS, es, zhCN, ptBR, Locale } from 'date-fns/locale'; // for getting the device's language locale // 'en' is default deviceLocale From 8785ed9e4fc6c28df212310d0f40608069e6bd69 Mon Sep 17 00:00:00 2001 From: jeffgreiner-eaton Date: Tue, 2 Jan 2024 14:13:18 -0500 Subject: [PATCH 04/87] fix conflict on i18next version --- login-workflow/example/package.json | 2 +- login-workflow/example/yarn.lock | 22 +++++++++++++++++----- 2 files changed, 18 insertions(+), 6 deletions(-) diff --git a/login-workflow/example/package.json b/login-workflow/example/package.json index 1419a2d9..8d2ad082 100644 --- a/login-workflow/example/package.json +++ b/login-workflow/example/package.json @@ -44,7 +44,7 @@ "@types/react": "^18.0.31", "@types/react-dom": "^18.0.0", "date-fns": "^3.0.6", - "i18next": "^23.2.11", + "i18next": "^23.7.13", "react": "^18.2.0", "react-app-polyfill": "^3.0.0", "react-dom": "^18.0.0", diff --git a/login-workflow/example/yarn.lock b/login-workflow/example/yarn.lock index f031b10d..326ff876 100644 --- a/login-workflow/example/yarn.lock +++ b/login-workflow/example/yarn.lock @@ -1114,6 +1114,13 @@ dependencies: regenerator-runtime "^0.13.11" +"@babel/runtime@^7.23.2": + version "7.23.7" + resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.23.7.tgz#dd7c88deeb218a0f8bd34d5db1aa242e0f203193" + integrity sha512-w06OXVOFso7LcbzMiDGt+3X7Rh7Ho8MmgPoWU3rarH+8upf+wSU/grlGbWzQyr3DkdN6ZeuMFjpdwW0Q+HxobA== + dependencies: + regenerator-runtime "^0.14.0" + "@babel/template@^7.18.10", "@babel/template@^7.20.7", "@babel/template@^7.3.3": version "7.21.9" resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.21.9.tgz#bf8dad2859130ae46088a99c1f265394877446fb" @@ -5816,12 +5823,12 @@ human-signals@^2.1.0: resolved "https://registry.yarnpkg.com/human-signals/-/human-signals-2.1.0.tgz#dc91fcba42e4d06e4abaed33b3e7a3c02f514ea0" integrity sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw== -i18next@^23.2.11: - version "23.2.11" - resolved "https://registry.yarnpkg.com/i18next/-/i18next-23.2.11.tgz#0c6f3a637fa87d3243e64b78ad285b7f77d41353" - integrity sha512-MA4FsxOjyCaOZtRDB4yuwjCvqYEioD4G4LlXOn7SO3rnQUlxTufyLsOqfL9MKakeLRBkefe8bqcs0D6Z/xFk1w== +i18next@^23.7.13: + version "23.7.13" + resolved "https://registry.yarnpkg.com/i18next/-/i18next-23.7.13.tgz#2dda870cbf63e168e1d4eb8f6f700b5c26794a3d" + integrity sha512-DbCPlw6VmURSZa43iOnycxq9o15e+WuBWDBZ3aj+gQZcDz4sgnuKwrcwmP1n8gSSCwCN7CRFGTpnwTd93A16Mg== dependencies: - "@babel/runtime" "^7.22.5" + "@babel/runtime" "^7.23.2" iconv-lite@0.4.24: version "0.4.24" @@ -8960,6 +8967,11 @@ regenerator-runtime@^0.13.11, regenerator-runtime@^0.13.9: resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.11.tgz#f6dca3e7ceec20590d07ada785636a90cdca17f9" integrity sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg== +regenerator-runtime@^0.14.0: + version "0.14.1" + resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.14.1.tgz#356ade10263f685dda125100cd862c1db895327f" + integrity sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw== + regenerator-transform@^0.15.1: version "0.15.1" resolved "https://registry.yarnpkg.com/regenerator-transform/-/regenerator-transform-0.15.1.tgz#f6c4e99fc1b4591f780db2586328e4d9a9d8dc56" From ec2656a87c5729435e20e158a8fad49c17c1bae2 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 10 Jan 2024 09:07:53 +0000 Subject: [PATCH 05/87] Bump follow-redirects from 1.15.2 to 1.15.4 in /login-workflow/example Bumps [follow-redirects](https://github.com/follow-redirects/follow-redirects) from 1.15.2 to 1.15.4. - [Release notes](https://github.com/follow-redirects/follow-redirects/releases) - [Commits](https://github.com/follow-redirects/follow-redirects/compare/v1.15.2...v1.15.4) --- updated-dependencies: - dependency-name: follow-redirects dependency-type: indirect ... Signed-off-by: dependabot[bot] --- login-workflow/example/yarn.lock | 13 +++---------- 1 file changed, 3 insertions(+), 10 deletions(-) diff --git a/login-workflow/example/yarn.lock b/login-workflow/example/yarn.lock index 6aac102c..b74fefd2 100644 --- a/login-workflow/example/yarn.lock +++ b/login-workflow/example/yarn.lock @@ -1114,13 +1114,6 @@ dependencies: regenerator-runtime "^0.14.0" -"@babel/runtime@^7.23.2": - version "7.23.7" - resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.23.7.tgz#dd7c88deeb218a0f8bd34d5db1aa242e0f203193" - integrity sha512-w06OXVOFso7LcbzMiDGt+3X7Rh7Ho8MmgPoWU3rarH+8upf+wSU/grlGbWzQyr3DkdN6ZeuMFjpdwW0Q+HxobA== - dependencies: - regenerator-runtime "^0.14.0" - "@babel/template@^7.18.10", "@babel/template@^7.20.7", "@babel/template@^7.3.3": version "7.21.9" resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.21.9.tgz#bf8dad2859130ae46088a99c1f265394877446fb" @@ -5333,9 +5326,9 @@ flatted@^3.1.0: integrity sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ== follow-redirects@^1.0.0: - version "1.15.2" - resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.15.2.tgz#b460864144ba63f2681096f274c4e57026da2c13" - integrity sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA== + version "1.15.4" + resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.15.4.tgz#cdc7d308bf6493126b17ea2191ea0ccf3e535adf" + integrity sha512-Cr4D/5wlrb0z9dgERpUL3LrmPKVDsETIJhaCMeDfuFYcqa5bldGV6wBsAN6X/vxlXQtFBMrXdXxdL8CbDTGniw== for-each@^0.3.3: version "0.3.3" From edf661acb906d672e48a67a96cf0836ec42de40c Mon Sep 17 00:00:00 2001 From: jeffgreiner-eaton Date: Wed, 24 Jan 2024 15:23:28 -0500 Subject: [PATCH 06/87] Fix persist coverage & require test result --- .circleci/config.yml | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/.circleci/config.yml b/.circleci/config.yml index 3f522d3c..5e4485dc 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -91,6 +91,10 @@ jobs: command: | cd login-workflow yarn test:ci --maxWorkers=2 --coverage --watchAll=false + - persist_to_workspace: + root: . + paths: + - login-workflow/coverage build_login_workflow: docker: @@ -168,9 +172,9 @@ workflows: - dev - coverage_report: requires: - - build_login_workflow - filters: - branches: - only: - - master - - dev + - store_test_results + # filters: + # branches: + # only: + # - master + # - dev From 86a9b8d78d59b14316e26e93e0400588ccae1385 Mon Sep 17 00:00:00 2001 From: jeffgreiner-eaton Date: Wed, 24 Jan 2024 15:26:22 -0500 Subject: [PATCH 07/87] remove dup key --- .circleci/config.yml | 1 - 1 file changed, 1 deletion(-) diff --git a/.circleci/config.yml b/.circleci/config.yml index 5e4485dc..43a063fd 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -122,7 +122,6 @@ jobs: root: . paths: - login-workflow/dist - - login-workflow/coverage coverage_report: working_directory: ~/login-workflow From c0f3f84b1bf7e007cc8e1157669ff5dc7ba8a339 Mon Sep 17 00:00:00 2001 From: jeffgreiner-eaton Date: Wed, 24 Jan 2024 15:27:41 -0500 Subject: [PATCH 08/87] format step --- .circleci/config.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.circleci/config.yml b/.circleci/config.yml index 43a063fd..24a418a1 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -92,9 +92,9 @@ jobs: cd login-workflow yarn test:ci --maxWorkers=2 --coverage --watchAll=false - persist_to_workspace: - root: . - paths: - - login-workflow/coverage + root: . + paths: + - login-workflow/coverage build_login_workflow: docker: From 7c1b5bae805fa1723ed590e90d448942e3182012 Mon Sep 17 00:00:00 2001 From: jeffgreiner-eaton Date: Wed, 24 Jan 2024 15:39:56 -0500 Subject: [PATCH 09/87] turn filters on --- .circleci/config.yml | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/.circleci/config.yml b/.circleci/config.yml index 24a418a1..504185fb 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -172,8 +172,8 @@ workflows: - coverage_report: requires: - store_test_results - # filters: - # branches: - # only: - # - master - # - dev + filters: + branches: + only: + - master + - dev From 432612b41c0eceb021b39a4e5509439dd45c8181 Mon Sep 17 00:00:00 2001 From: daileytj Date: Tue, 30 Jan 2024 14:57:24 -0500 Subject: [PATCH 10/87] Add vite example project --- login-workflow/example-vite/.eslintrc.cjs | 18 + login-workflow/example-vite/.gitignore | 24 + login-workflow/example-vite/README.md | 30 + login-workflow/example-vite/index.html | 13 + login-workflow/example-vite/package.json | 81 + login-workflow/example-vite/public/vite.svg | 1 + login-workflow/example-vite/src/App.css | 42 + login-workflow/example-vite/src/App.tsx | 90 + .../src/actions/AuthUIActions.tsx | 177 + .../src/actions/RegistrationUIActions.tsx | 118 + .../src/assets/images/eaton_stacked_logo.png | Bin 0 -> 15466 bytes .../src/assets/images/topology.png | Bin 0 -> 282898 bytes .../example-vite/src/assets/react.svg | 1 + .../src/components/ChangePassword.tsx | 25 + .../src/components/DebugComponent.tsx | 68 + .../src/components/LanguageSelector.tsx | 37 + .../example-vite/src/components/index.ts | 2 + .../example-vite/src/constants/index.ts | 3 + .../example-vite/src/constants/sampleEula.ts | 1 + .../src/contexts/AppContextProvider.tsx | 29 + login-workflow/example-vite/src/index.css | 7 + login-workflow/example-vite/src/main.tsx | 18 + .../example-vite/src/navigation/AppRouter.tsx | 124 + .../example-vite/src/navigation/Routing.tsx | 10 + .../example-vite/src/react-app-env.d.ts | 1 + .../example-vite/src/screens/ExampleHome.tsx | 176 + .../example-vite/src/screens/Login.tsx | 19 + .../example-vite/src/screens/index.ts | 2 + .../example-vite/src/serviceWorker.ts | 140 + login-workflow/example-vite/src/setupTests.ts | 5 + .../example-vite/src/store/local-storage.ts | 53 + .../src/translations/dictionary/chinese.ts | 23 + .../src/translations/dictionary/english.ts | 23 + .../src/translations/dictionary/french.ts | 23 + .../src/translations/dictionary/index.ts | 19 + .../src/translations/dictionary/portuguese.ts | 23 + .../src/translations/dictionary/spanish.ts | 23 + .../src/translations/dictionary/types.ts | 21 + .../example-vite/src/translations/i18n.ts | 59 + login-workflow/example-vite/src/vite-env.d.ts | 1 + login-workflow/example-vite/tsconfig.json | 25 + .../example-vite/tsconfig.node.json | 10 + login-workflow/example-vite/vite.config.ts | 7 + login-workflow/example-vite/yarn.lock | 11445 ++++++++++++++++ 44 files changed, 13017 insertions(+) create mode 100644 login-workflow/example-vite/.eslintrc.cjs create mode 100644 login-workflow/example-vite/.gitignore create mode 100644 login-workflow/example-vite/README.md create mode 100644 login-workflow/example-vite/index.html create mode 100644 login-workflow/example-vite/package.json create mode 100644 login-workflow/example-vite/public/vite.svg create mode 100644 login-workflow/example-vite/src/App.css create mode 100644 login-workflow/example-vite/src/App.tsx create mode 100644 login-workflow/example-vite/src/actions/AuthUIActions.tsx create mode 100644 login-workflow/example-vite/src/actions/RegistrationUIActions.tsx create mode 100644 login-workflow/example-vite/src/assets/images/eaton_stacked_logo.png create mode 100644 login-workflow/example-vite/src/assets/images/topology.png create mode 100644 login-workflow/example-vite/src/assets/react.svg create mode 100644 login-workflow/example-vite/src/components/ChangePassword.tsx create mode 100644 login-workflow/example-vite/src/components/DebugComponent.tsx create mode 100644 login-workflow/example-vite/src/components/LanguageSelector.tsx create mode 100644 login-workflow/example-vite/src/components/index.ts create mode 100644 login-workflow/example-vite/src/constants/index.ts create mode 100644 login-workflow/example-vite/src/constants/sampleEula.ts create mode 100644 login-workflow/example-vite/src/contexts/AppContextProvider.tsx create mode 100644 login-workflow/example-vite/src/index.css create mode 100644 login-workflow/example-vite/src/main.tsx create mode 100644 login-workflow/example-vite/src/navigation/AppRouter.tsx create mode 100644 login-workflow/example-vite/src/navigation/Routing.tsx create mode 100644 login-workflow/example-vite/src/react-app-env.d.ts create mode 100644 login-workflow/example-vite/src/screens/ExampleHome.tsx create mode 100644 login-workflow/example-vite/src/screens/Login.tsx create mode 100644 login-workflow/example-vite/src/screens/index.ts create mode 100644 login-workflow/example-vite/src/serviceWorker.ts create mode 100644 login-workflow/example-vite/src/setupTests.ts create mode 100644 login-workflow/example-vite/src/store/local-storage.ts create mode 100644 login-workflow/example-vite/src/translations/dictionary/chinese.ts create mode 100644 login-workflow/example-vite/src/translations/dictionary/english.ts create mode 100644 login-workflow/example-vite/src/translations/dictionary/french.ts create mode 100644 login-workflow/example-vite/src/translations/dictionary/index.ts create mode 100644 login-workflow/example-vite/src/translations/dictionary/portuguese.ts create mode 100644 login-workflow/example-vite/src/translations/dictionary/spanish.ts create mode 100644 login-workflow/example-vite/src/translations/dictionary/types.ts create mode 100644 login-workflow/example-vite/src/translations/i18n.ts create mode 100644 login-workflow/example-vite/src/vite-env.d.ts create mode 100644 login-workflow/example-vite/tsconfig.json create mode 100644 login-workflow/example-vite/tsconfig.node.json create mode 100644 login-workflow/example-vite/vite.config.ts create mode 100644 login-workflow/example-vite/yarn.lock diff --git a/login-workflow/example-vite/.eslintrc.cjs b/login-workflow/example-vite/.eslintrc.cjs new file mode 100644 index 00000000..d6c95379 --- /dev/null +++ b/login-workflow/example-vite/.eslintrc.cjs @@ -0,0 +1,18 @@ +module.exports = { + root: true, + env: { browser: true, es2020: true }, + extends: [ + 'eslint:recommended', + 'plugin:@typescript-eslint/recommended', + 'plugin:react-hooks/recommended', + ], + ignorePatterns: ['dist', '.eslintrc.cjs'], + parser: '@typescript-eslint/parser', + plugins: ['react-refresh'], + rules: { + 'react-refresh/only-export-components': [ + 'warn', + { allowConstantExport: true }, + ], + }, +} diff --git a/login-workflow/example-vite/.gitignore b/login-workflow/example-vite/.gitignore new file mode 100644 index 00000000..a547bf36 --- /dev/null +++ b/login-workflow/example-vite/.gitignore @@ -0,0 +1,24 @@ +# Logs +logs +*.log +npm-debug.log* +yarn-debug.log* +yarn-error.log* +pnpm-debug.log* +lerna-debug.log* + +node_modules +dist +dist-ssr +*.local + +# Editor directories and files +.vscode/* +!.vscode/extensions.json +.idea +.DS_Store +*.suo +*.ntvs* +*.njsproj +*.sln +*.sw? diff --git a/login-workflow/example-vite/README.md b/login-workflow/example-vite/README.md new file mode 100644 index 00000000..0d6babed --- /dev/null +++ b/login-workflow/example-vite/README.md @@ -0,0 +1,30 @@ +# React + TypeScript + Vite + +This template provides a minimal setup to get React working in Vite with HMR and some ESLint rules. + +Currently, two official plugins are available: + +- [@vitejs/plugin-react](https://github.com/vitejs/vite-plugin-react/blob/main/packages/plugin-react/README.md) uses [Babel](https://babeljs.io/) for Fast Refresh +- [@vitejs/plugin-react-swc](https://github.com/vitejs/vite-plugin-react-swc) uses [SWC](https://swc.rs/) for Fast Refresh + +## Expanding the ESLint configuration + +If you are developing a production application, we recommend updating the configuration to enable type aware lint rules: + +- Configure the top-level `parserOptions` property like this: + +```js +export default { + // other rules... + parserOptions: { + ecmaVersion: 'latest', + sourceType: 'module', + project: ['./tsconfig.json', './tsconfig.node.json'], + tsconfigRootDir: __dirname, + }, +} +``` + +- Replace `plugin:@typescript-eslint/recommended` to `plugin:@typescript-eslint/recommended-type-checked` or `plugin:@typescript-eslint/strict-type-checked` +- Optionally add `plugin:@typescript-eslint/stylistic-type-checked` +- Install [eslint-plugin-react](https://github.com/jsx-eslint/eslint-plugin-react) and add `plugin:react/recommended` & `plugin:react/jsx-runtime` to the `extends` list diff --git a/login-workflow/example-vite/index.html b/login-workflow/example-vite/index.html new file mode 100644 index 00000000..e4b78eae --- /dev/null +++ b/login-workflow/example-vite/index.html @@ -0,0 +1,13 @@ + + + + + + + Vite + React + TS + + +
+ + + diff --git a/login-workflow/example-vite/package.json b/login-workflow/example-vite/package.json new file mode 100644 index 00000000..e042339a --- /dev/null +++ b/login-workflow/example-vite/package.json @@ -0,0 +1,81 @@ +{ + "name": "vite-example", + "private": true, + "version": "0.0.0", + "type": "module", + "scripts": { + "start": "vite", + "dev": "vite", + "build": "tsc && vite build", + "lint": "eslint \"src/**/**.{ts,tsx}\"", + "lint:fix": "eslint \"src/**/**.{ts,tsx}\" --fix", + "prettier": "prettier \"src/**/**.{ts,tsx,js,jsx,json,css,scss,html}\" --write", + "prettier:check": "prettier \"src/**/**.{ts,tsx,js,jsx,json,css,scss,html}\" --check", + "preview": "vite preview" + }, + "dependencies": { + "@brightlayer-ui/colors": "^3.0.1", + "@brightlayer-ui/icons-mui": "^3.3.0", + "@brightlayer-ui/react-auth-workflow": "^4.0.2", + "@brightlayer-ui/react-components": "^6.1.2", + "@brightlayer-ui/react-themes": "^7.1.0", + "@emotion/react": "^11.7.1", + "@emotion/styled": "^11.10.8", + "@mui/icons-material": "^5.11.11", + "@mui/material": "^5.10.15", + "date-fns": "^3.0.6", + "i18next": "^23.7.13", + "i18next-browser-languagedetector": "^7.2.0", + "react": "^18.2.0", + "react-app-polyfill": "^3.0.0", + "react-dom": "^18.2.0", + "react-i18next": "^13.0.3", + "react-router-dom": "^6.8.0", + "react-scripts": "^5.0.0", + "typescript": "^5.3.3" + }, + "devDependencies": { + "@brightlayer-ui/eslint-config": "^3.0.1", + "@brightlayer-ui/prettier-config": "^1.0.3", + "@emotion/css": "^11.11.2", + "@testing-library/jest-dom": "^6.4.0", + "@testing-library/react": "^14.1.2", + "@testing-library/user-event": "^14.5.2", + "@types/jest": "^29.5.11", + "@types/react": "^18.2.43", + "@types/react-dom": "^18.2.17", + "@typescript-eslint/eslint-plugin": "^6.14.0", + "@typescript-eslint/parser": "^6.14.0", + "@vitejs/plugin-react": "^4.2.1", + "babel-plugin-istanbul": "^6.1.1", + "eslint": "^8.56.0", + "eslint-config-prettier": "^9.1.0", + "eslint-plugin-react": "^7.33.2", + "eslint-plugin-react-hooks": "^4.6.0", + "eslint-plugin-react-refresh": "^0.4.5", + "jest": "^29.7.0", + "prettier": "^3.2.4", + "vite": "^5.0.12", + "yarn-audit-fix": "^10.0.7" + }, + "prettier": "@brightlayer-ui/prettier-config", + "eslintConfig": { + "extends": "react-app" + }, + "browserslist": { + "production": [ + ">0.2%", + "not dead", + "not op_mini all", + "IE 11", + "not IE 9-10" + ], + "development": [ + "last 1 chrome version", + "last 1 firefox version", + "last 1 safari version", + "ie 11", + "not ie 9-10" + ] + } +} diff --git a/login-workflow/example-vite/public/vite.svg b/login-workflow/example-vite/public/vite.svg new file mode 100644 index 00000000..e7b8dfb1 --- /dev/null +++ b/login-workflow/example-vite/public/vite.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/login-workflow/example-vite/src/App.css b/login-workflow/example-vite/src/App.css new file mode 100644 index 00000000..f44fb79a --- /dev/null +++ b/login-workflow/example-vite/src/App.css @@ -0,0 +1,42 @@ +#root { + max-width: 1280px; + margin: 0 auto; + padding: 2rem; + text-align: center; +} + +.logo { + height: 6em; + padding: 1.5em; + will-change: filter; + transition: filter 300ms; +} +.logo:hover { + filter: drop-shadow(0 0 2em #646cffaa); +} +.logo.react:hover { + filter: drop-shadow(0 0 2em #61dafbaa); +} + +@keyframes logo-spin { + from { + transform: rotate(0deg); + } + to { + transform: rotate(360deg); + } +} + +@media (prefers-reduced-motion: no-preference) { + a:nth-of-type(2) .logo { + animation: logo-spin infinite 20s linear; + } +} + +.card { + padding: 2em; +} + +.read-the-docs { + color: #888; +} diff --git a/login-workflow/example-vite/src/App.tsx b/login-workflow/example-vite/src/App.tsx new file mode 100644 index 00000000..49d70c60 --- /dev/null +++ b/login-workflow/example-vite/src/App.tsx @@ -0,0 +1,90 @@ +import React, { useState, useEffect } from 'react'; +import { AppContext, AppContextType } from './contexts/AppContextProvider'; +import { BrowserRouter } from 'react-router-dom'; +import { AppRouter } from './navigation/AppRouter'; +import { I18nextProvider } from 'react-i18next'; +import i18nAppInstance from './translations/i18n'; +import { LocalStorage } from './store/local-storage'; +import { Box, CircularProgress, SxProps, Theme } from '@mui/material'; + +const containerStyles: SxProps = { + width: '100%', + height: (t) => ({ xs: `calc(100vh - ${t.spacing(7)})`, md: `calc(100vh - ${t.spacing(8)})` }), + display: 'flex', + padding: 0, + overflow: 'auto', + position: 'relative', + flexDirection: 'column', + alignItems: 'center', + justifyContent: 'center', +}; + +const emptyStateContainerStyles = { + margin: 'auto', + display: 'flex', + zIndex: 4, + position: 'absolute', + alignItems: 'center', + justifyContent: 'center', +}; + +export const App = (): JSX.Element => { + const [isAuthenticated, setIsAuthenticated] = useState(false); + const [language, setLanguage] = useState(window.localStorage.getItem('app-i18nextLng')?.toString() ?? 'en'); + const [loginData, setLoginData] = useState({ + email: '', + rememberMe: false, + }); + const [showChangePasswordDialog, setShowChangePasswordDialog] = useState(false); + + const [isLoading, setIsLoading] = useState(true); + + // handle initialization of auth data on first load + useEffect(() => { + const initialize = async (): Promise => { + try { + const userData = await LocalStorage.readAuthData(); + setLoginData({ email: userData.rememberMeData.user, rememberMe: userData.rememberMeData.rememberMe }); + setIsAuthenticated(Boolean(userData.userId)); + } catch (e) { + // handle any error state, rejected promises, etc.. + } finally { + setIsLoading(false); + } + }; + // eslint-disable-next-line + initialize(); + }, []); + + return isLoading ? ( + + + + ) : ( + + { + setIsAuthenticated(true); + setLoginData(userData); + }, + // eslint-disable-next-line + onUserNotAuthenticated: (userData): void => { + setIsAuthenticated(false); + }, + loginData, + setLoginData, + language, + setLanguage, + showChangePasswordDialog, + setShowChangePasswordDialog, + }} + > + + + + + + ); +}; diff --git a/login-workflow/example-vite/src/actions/AuthUIActions.tsx b/login-workflow/example-vite/src/actions/AuthUIActions.tsx new file mode 100644 index 00000000..f55036d9 --- /dev/null +++ b/login-workflow/example-vite/src/actions/AuthUIActions.tsx @@ -0,0 +1,177 @@ +/* eslint-disable @typescript-eslint/no-unused-vars */ +import { AuthUIActions } from '@brightlayer-ui/react-auth-workflow'; +import { AppContextType } from '../contexts/AppContextProvider'; +import { LocalStorage } from '../store/local-storage'; + +const sleep = (ms: number): Promise => new Promise((resolve) => setTimeout(resolve, ms)); + +function getRandomInt(max: number): number { + return Math.floor(Math.random() * Math.floor(max)); +} + +function isRandomFailure(): boolean { + const randomResponseNumber = getRandomInt(100); + return false; // randomResponseNumber < 10; +} + +type AuthUIActionsWithApp = (appHelper: AppContextType) => AuthUIActions; + +/** + * Example implementation of [[AuthUIActions]] to start with during development. + * + * Authentication Actions to be performed based on the user's UI actions. The application will create + * appropriate actions (often api calls, local network storage, credential updates, etc) and update + * the global security state based on the actionable needs of the user. + */ +export const ProjectAuthUIActions: AuthUIActionsWithApp = (appHelper) => ({ + /** + * Initialize the application security state. This will involve reading any local storage, + * validating existing credentials (token expiration, for example). At the end of validation, + * the [[SecurityContextActions]] should be called with either: + * [[onUserAuthenticated]] (which will present the application), or + * [[onUserNotAuthenticated]] (which will present the Auth UI). + * + * Note: Until this method returns, the applications Splash screen will be presented. + * + * @returns Should always resolve. Never throw. + */ + initiateSecurity: async (): Promise => { + let authData; + + try { + await sleep(2000); + authData = await LocalStorage.readAuthData(); + } catch (e) { + // Restoring token failed + } + + // After restoring token, we may need to validate it in production apps + // This will switch to the App screen or Auth screen and this loading + // screen will be unmounted and thrown away. + if (authData?.email !== undefined) { + appHelper.onUserAuthenticated({ + email: authData?.email, + userId: authData.userId ?? '', + rememberMe: authData?.rememberMeData.rememberMe, + }); + } else { + const rememberMeEmail = authData?.rememberMeData.rememberMe ? authData?.rememberMeData.user : undefined; + appHelper.onUserNotAuthenticated(false, rememberMeEmail); + } + }, + /** + * The user wants to log into the application. Perform a login with the user's credentials. + * The application should provide the user's email and password to the authentication server. + * + * In the case of valid credentials, the applications code should store the returned data + * (such as token, user information, etc.). Then the [[onUserAuthenticated]] function should + * be called on the [[SecurityContextActions]] object. + * + * For example: + * ``` + * LocalStorage.saveAuthCredentials(email, email); + * LocalStorage.saveRememberMeData(email, rememberMe); + * + * securityHelper.onUserAuthenticated({ email: email, userId: email, rememberMe: rememberMe }); + * ``` + * + * In the case of invalid credentials, an error should be thrown. + * + * @param email Email address the user entered into the UI. + * @param password Password the user entered into the UI. + * @param rememberMe Indicates whether the user's email should be remembered on success. + * + * @returns Resolve if code is credentials are valid, otherwise reject. + */ + logIn: async (email: string, password: string, rememberMe: boolean): Promise => { + await sleep(1000); + + // throw new Error('My Custom Error'); + + if (isRandomFailure()) { + // reject(new Error('LOGIN.GENERIC_ERROR')); + throw new Error('bluiAuth:LOGIN.INVALID_CREDENTIALS'); + } + + LocalStorage.saveAuthCredentials(email, email); + LocalStorage.saveRememberMeData(email, rememberMe); + + appHelper.onUserAuthenticated({ email: email, userId: email, rememberMe: rememberMe }); + }, + /** + * The user has forgotten their password and wants help. + * The application generally should call an API which will then send a password reset + * link to the user's email. + * + * @param email Email address the user entered into the UI. + * + * @returns Resolve if email sending was successful, otherwise reject. + */ + forgotPassword: async (email: string): Promise => { + await sleep(500); + if (isRandomFailure()) { + throw new Error('Sorry, there was a problem sending your request.'); + } + + return; + }, + /** + * The user has tapped on an email with a password reset link, which they received after + * requesting help for forgetting their password. + * The application should take the password reset code and then verify that it is still + * valid. + * + * @param code Password reset code from a reset password link. + * @param email Email if it was passed from the reset link + * + * @returns Resolve if code is valid, otherwise reject. + */ + verifyResetCode: async (code: string, email?: string): Promise => { + await sleep(500); + if (isRandomFailure()) { + throw new Error('Sorry, there was a problem sending your request.'); + } + return; + }, + /** + * A user who has previously used "forgotPassword" now has a valid password reset code + * and has entered a new password. + * The application should take the user's password reset code and the newly entered + * password and then reset the user's password. + * + * Note: Upon success, the user will be taken to the Login screen. + * + * @param code Password reset code from a link + * @param password New Password the user entered into the UI + * @param email Email if it was passed from the reset link + * + * @returns Resolve if successful, otherwise reject with an error message. + */ + setPassword: async (code: string, password: string, email?: string): Promise => { + await sleep(500); + if (isRandomFailure()) { + throw new Error('Sorry, there was a problem sending your request.'); + } + + return; + }, + /** + * An authenticated user wants to change their password. + * The application should try to change the user's password. Upon completion, + * the user will be logged out of the application. Upon cancellation, the user + * will be taken back to the application's home screen. + * + * @param oldPassword The user's current password as entered into the UI. + * @param newPassword The user's new password as entered into the UI. + * + * @returns Resolve if successful, otherwise reject with an error message. + */ + changePassword: async (oldPassword: string, newPassword: string): Promise => { + await sleep(1000); + + if (isRandomFailure()) { + throw new Error('Sorry, there was a problem sending your request.'); + } + return; + }, +}); diff --git a/login-workflow/example-vite/src/actions/RegistrationUIActions.tsx b/login-workflow/example-vite/src/actions/RegistrationUIActions.tsx new file mode 100644 index 00000000..200b593b --- /dev/null +++ b/login-workflow/example-vite/src/actions/RegistrationUIActions.tsx @@ -0,0 +1,118 @@ +/* eslint-disable @typescript-eslint/no-unused-vars */ +import { RegistrationUIActions, AccountDetails } from '@brightlayer-ui/react-auth-workflow'; + +// Constants +import { SAMPLE_EULA } from '../constants/sampleEula'; + +const sleep = (ms: number): Promise => new Promise((resolve) => setTimeout(resolve, ms)); + +function getRandomInt(max: number): number { + return Math.floor(Math.random() * Math.floor(max)); +} + +function isRandomFailure(): boolean { + const randomResponseNumber = getRandomInt(100); + return false; // randomResponseNumber < 90; +} + +/** + * Example implementation of [[RegistrationUIActions]] to start with during development. + * + * Registration Actions to be performed based on the user's actions. The application will create appropriate actions + * (often API calls, local network storage, credential updates, etc.) based on the actionable needs of the user. + */ +export const ProjectRegistrationUIActions: () => RegistrationUIActions = () => ({ + /** + * The user wants to complete an action but must first accept the EULA. + * The application should retrieve an application-specific EULA for the user. + * + * @param language The i18n language the user is requesting for the EULA text. + * + * @returns Resolve with EULA, otherwise reject with an error message. + */ + loadEula: async (language: string): Promise => { + await sleep(1000); + + if (isRandomFailure()) { + throw new Error('Sorry, there was a problem sending your request.'); + } + + if (!language.includes('en')) { + return 'Other language EULA'; + } + + return SAMPLE_EULA; + }, + + /** + * The user accepted the EULA. + * The API should now update accepted EULA. + * + * + * @returns Resolve when the server accepted the request. + */ + acceptEula: async (): Promise => { + await sleep(800); + if (isRandomFailure()) { + throw new Error('Sorry, there was a problem sending your request.'); + } + }, + + requestRegistrationCode: async (email: string): Promise => { + await sleep(800); + if (isRandomFailure()) { + throw new Error('Sorry, there was a problem sending your request.'); + } + return 'a1b2c3'; + }, + + createPassword: async (password: string): Promise => { + await sleep(800); + if (isRandomFailure()) { + throw new Error('Sorry, there was a problem sending your request.'); + } + return true; + }, + + setAccountDetails: async (details: AccountDetails): Promise => { + await sleep(800); + if (isRandomFailure()) { + throw new Error('Sorry, there was a problem sending your request.'); + } + return true; + }, + + /** + * The user has tapped on an email link inviting them to register with the application. + * The application should validate the code provided by the link. + * + * @param validationCode Registration code provided from the link. + * @param validationEmail Email provided from the invitation email link (optional) `?email=addr%40domain.com`. + * + * @returns Resolves when the code is valid. True if registration is complete, False if account information is needed. + * If the code is not valid a rejection will occur with an error message. + */ + validateUserRegistrationRequest: async ( + validationCode: string, + validationEmail?: string + ): Promise<{ codeValid: boolean | string; accountExists?: boolean }> => { + await sleep(800); + + if (isRandomFailure()) { + throw new Error('Sorry, there was a problem sending your request.'); + } + return { codeValid: true, accountExists: false }; + }, + + completeRegistration: async (userData: object): Promise<{ email: string; organizationName: string }> => { + const email = 'example@email.com'; + const organizationName = 'Acme Co.'; + const userInfo = { email, organizationName }; + + await sleep(1000); + if (isRandomFailure()) { + throw new Error('Sorry, there was a problem sending your request.'); + } + return userInfo; + }, +}); diff --git a/login-workflow/example-vite/src/assets/images/eaton_stacked_logo.png b/login-workflow/example-vite/src/assets/images/eaton_stacked_logo.png new file mode 100644 index 0000000000000000000000000000000000000000..7a828547d68243c44c69a5c5c920228ed0b40291 GIT binary patch literal 15466 zcmeHu1zR1>vM%lxg1fuBJHg%EHMqM5cXxM(u#n*H!6gtRxV!s>B>U{|?7QzjxU-&_ z>8Y-_y1Kf$y4O54Ve+zK@Gw{~KtMq765=9?KtLd9Z{<`dh_`FAVeT6N2+T}SMi2<7 zE(Z3=0Q~K_%S2tmR7M7f>a7d~1PP1`1o~D2e)|CdV*$N$yp@0qfwBLmYza*9mj~pn zk`d_b3WWG}Ish~ME~C7a141l-z~1if*yOkK{SbdU-=BZq3Y#j)g={SLa zm>8HCxEPqZm>CHeS>FqcY(PMuxxoL{CKu#i5<$>%LH|_-N_`it@vQ&&c7wJP*Kh;^ zg8le@0t2OIV!ZX2#6nr!NnJ*o%gEN6&cN8#(1gy-+U^|%#N)>GRv2q*2a){5_c`{*C!KkNSieYXVHZ+>+Vi?=awd>ceQR%R9+`u|$z~BG03Q1HdGwEY^=H!lroPQuKA5*L{Z|CwgYim5MF0X~N0JZ`RCWVC&Vo+G zQE3>QC_5Q91{Q)M2|cO^K#Hv;sRxVw9u$(lp=2)#hUy(o6q^PuYKkm?1h(u(b&=@j z7oIDE1Xg0^uaEQ*P1FShObGdFtOV1F&h4}9^%WDdj+W~+o8!r?v+K3aIPa~RN|WqL zQdxtP0xxHDrev0kYm$sfy)C39$$X-W&yRpKcBJ#;zJmppPEOgeZO$C)^PduBF+o*6 zs@VqGpK!mUo4lfPF+8pYIbPNX33fc8jTz{jlf)w-fd~mep~w(uI*nM87%vG;o!_bv zAEu8cxI^PzsVO-%aStzlj;PWT`);wXM`+@W6t@Bo`#Mch{0FHVCg6>UCW08tS>GvH zX-T5xlK|HdyTktc)vD^_97S1v;INmQ8dHo<5!Rwq_FGd>z=TK$z{EI=sPR2dgD~65 zo{J1xeFHJ(*nB`b5bTju1w_K!-&C43LqEQ22IbF1Ca*_}7H98UZZzLtQQhh{bjLD~ z{M6w_=p3sU$3|0K11cjbN=N|q#Sh7jK%So#O*$rO%JhP@aL>D7wNzX$cW|mpV<}IpFmVl0rgR)ueeVnbm?Wt@c`$fQVFWflZ9}bd!YW=V<~>T< z_t!G)tX`!n(Dg86iN6vpK&}nc8J;Nt8c0oL;zfjz<8o!Hk!9*Q94qGHxwCwQ=sn2f zf0dNT<%5GI?mI^v-Q1nMN;B+$G@_!bu)rOy(k3FULfbZ_xd?jijR}!FWH7jG@iFmw zWuv>w8rWEEbD@hFo*l@HWT!^4qYl5J#;^z4wPT}*(z}(qkU$!2-;_ui&uDiKo$r6q zNa4bhD48x_$cR8yn0J!q7eODIG5KDA_l4TBc+|783Q|Q>>>cTcgdv%W02hJODyTRg za zursv7uqfk4lC^rK9z(wiAZ^~k{--;oGmCMyynJ;^N&abq`wy-fb0adIqAQMwwWzcU zNx|P8E%+k95ga7gSrna|VVN%Bxn^KYx@vJ)%HF1l_ZBiP`n%@{KXEOq5kNzpr7+&glf?6x}+BM^B7+VWU4xM~4if#iXj$*hJp5kU4t z-pZYYcJpK( z>T}tea~k_RZ2sU_O0|cHimim32Qj;M128MB>wk)adgN-F$=HQ7(LKNZcYIxNDjZ=uLU)U#FG6@P3We|Kq=<@E{Eq>I}Ej%LVga z0){+3Bj7b6RB#xsKwqvO3k{cW5K^YM>2T;UTI;CGOJ-?iVg;5Zw&YulW-+5KSPD8B zu8bK|LU)j$fxKBU65(AK#r5FiS+Sz9S>P7zJScWm-{VC)mB-i9l15{LW6a{Trl zWp;%wwOj?bz5S*MN}eYO*JF{S(QHg5 zsW|p)C=NYsL+O)8@UM?6gwb;vYjl$F-P5>=C>#&(!-V ze0qc9m|IB|UH{7tF5;yRr&1Af`kS&$FJth<8jm^9Cd~=GWHJ#WO*ja7*zb6lM2QQ!K2gnF7D~bCm%{#YAgW}Cmn=XkfQq}GW zCQAi{q%5JZwEA%^#2<0w;S&r7q<7`;PS{7U<@Y`;ZC%fWo5}tDK8Bx%5>d2Oa z>lEwA2(XXTZ7a(d!@f84MPMJya;WwfSij+IvTk8ZJkq#dUvx2fUDyw)yu{3?vw0-S z!pX>F(la`T$@1xp_^`jr7Zw@P^e>qg&c=1R<0=jI-3+l1*3`P-I79_&dL}&#xgA}? z$hfZZG!cFrBHlgxofOKJ-u&EQkp6`g8f%?fLzkfvkfM6xiUV3xG;IwD!uK)9NC4|$ zq=7rgkKV}`An8_wv995*GxQBr*A2(uJ_hLc$lA8KAVjYz1ytH9d63CK6M2zrLltKg zhcnQ44JA|jU5!*gSZ7fcRS@PzdHR`!ho7(?t&3966^1nR5_tk^3dfVz(3059^P%@H z3>yQ;67K%O9>Mx*OK&*8&JO35<*Ly{*~2D}`;f*;?;sqQbMnilD-xBkr+PM{e2D+M zKw2gUaOe=C;mTU`_Q%A8etPvkNA1Q7ZWv~6R;`qUaxRjpH{ncc4^bjo1U4D(Bi|@R znb|ZJ>5#e1IB|?rss=JSb>V8&-Vm++6AY9?-WCGzGTZ!#r;L8|Zm!ZhK(At>a~6Eg zO7Q)|>!=t0>T2r~IR#_!YWro_Dw;U7t%^jwJ?d7L%#Lu1B2(DOheHmyrgcs|3Jj z1@R1t)<9IsnPE$1ymoR#E1500hnWT-eLSW?zw!7Oi2pPj%Z&XhQKeHORKRe{S(XP9 zPW3zb)=A_(7}0R_wF|P@aMZCB^mIT)6Td|@)OH+{tWU6b*}79apNW`X9A!!gC4cWR zz6h9umD{Rg;H(BnCv!CzGle(iZ5>=#;hvOchEMH$$)@6J)IJ~ejG>iP)cozPxF1Rz z4eGL2IT`U_=-cPm%MgQ!BJQ8_hMiiD%7;ZjIF+q>>{2pvnbcRV$RN%sFmzy5tByW#{` z;UiGkaA9rFvh$}0)wYb7BB=nH`ro0YR;1OgWroyDl<~#f&P(ZXP-NdXTMPqG$`iHv zC!~%yOY&|R=b(gUYx2e>U({9Is0~exA0AX7r_;AoI`X4~#XTD2^UcJB6$;`0bWA{* zx0h(lCf0bU3iT$bdvNAj%4qJJ_$=oh^1YSwMYUx0w50;-QGD6EY6M;&bIde`13G!A zVr6FoYQ{-D`Xi_r*!8~D-no@}lWlGs_1aWbo|8|;nWFNB$a?SE$=8FG8>^rBQmlaK za$#J?Wz{KPD-^*}k>qKv5Kf9JBq};_H{7zIPg^P9%ls6racZ$pPLhBj{yn7&z{-u( zzkFLVbr_{|gK^Xt&nfTmKof?^C)59S>N(|**CdSJE^B)~ezh>AB|w?>uBHAFlAl3$ z`363MeS=JqzItLAob)MSy&3vi3TOpWZC?jDr89Mdv+vI)yzS7^$zVkmGklmj`=%Im zWYIr+*FORH_pbac#=UPR{}}84KLEeaqW^D@|7L^S1F+@;tk5_AV?k!XUrLA%TT?AG zhoH~B|L&?xLO(3>=3DteQpJj|^PV~ic2}^ojF0vU90e>4T#}=t{m39HWVr(giXmzu z(EZ#hB>3+De-?k>X!q5%%0|qJ=1lmA#%#p907G?3#W;8oOHhq6c$ClXNz#p8MM>f! z#Y_~7&(ygbXgSnn_1l)+e>a*!xw_CC*l1MFO*KMAPL;-VmS0{H9h?Dgvo{~GYzXef-l!}3`X9*P(t*a6N& zN!sG=bG1@lA84I9cEYQ+PeB3=desS+te}w=V%xPoLGz% z{I_D!pO6^ve`cFM(i)$D+id*t!rXZ%H*B;%P(ZGU0zp6h>0{PuB|LefzcUQQETP3P}#r z5KkTDID&FQi*N>d4AE5P_K|eF$ul95_vsa) zUSoV@97DNhY7w$&8qJ@z-$UjUY!Ml8GZib^Q z!TJk^sgO zZ?wUQ>8;`0se5KN_mOgCu(vHnqP8c|6*suXN$_QG5u7=UY;HDAE;_0gLaJt=J6^F*Tkg{0+Cm=4f}!K? zAHU95Uv0p6d=fJoot3|6yGeua*lbvS0L58ZXb?E&gz3rxT%b!NRcD!k-G}XXqYpe0&+AATpid5^kra4OqZ6Kwi7=iRy)4 zzlO$=#U;hqYPpyQ(B?_EWpT@;{z~JmzSU&fc5wYMch_RF{e$9F1|Qy@-55hNiqr1n za4z?-c}GoYNE_|g_UO@1e?^H}CG(_>g4{uttq7PdmlkAgcwcF375b%?$!5>e%RRH{ zZuhmF-d07+U&hNgR$fd86nwkP!Of^-KvR!Yh4jz<1|yY4CWZ8Gla5D;oO)+j5{gYMb=37(XT+ z%7|~t1vA{2an47x%Sq?0uP3l)uiWm};%shPz_uc7K`h=W75i^{e_TwwfSCKC@x&i( z(<;+vj(b>~gcKDF^jOe`wJ)LGMtYj^SqeF{Q~Y0ULt1= z^?6bTmxV+&mVYdw>mrgsLMTehHaN(KfV}0LKuOHQ?uTUE4^Mq4p2H6@rR|T3()68^ zthz|T{W9`e3%Y#+Dd$A_)U!G(`40$2K8XWjaz%}c3Mk6&Qcd zKI!iA%c{X&$O$yYR?JXMu#92EDyj*hqApI66VPTD10| zXtr5*@76D^ru!Z@k8iIN3{?8kV5$l%Dr)&$Q&Ly}-LkQa-TYRZERjz8P0rAf*oX6Pi zs3|sCZW#Bk5SJR6KA6mTFH#8R~Vw=TN@KyIP(1?sf zFQo(~WW)C7`CBzsXjMQ-6BfRS*7ja$vW`sOmew2jq`P=Po>U;=h(*^%rPfBmRK>4m zxkz1nm`03~0b`)D+Ahh3XeMq=68gO0dh|e8+Fc{6VM%wtlE_3O zOUV^{Mb#Q9iW`4 zCHo?CMcEenQ%fYe@IrK(JSSYB-{J*g8{rF7e#bhMY*~VZ?o&Z@l~c<#G3G00HTCU7 z(Eib6dO5KYT7pT_6K9it3)%>we3=f#w+8sUU9LWg81@+&&9gJ7r8eiiQQ6pKz{zJN zy`r0JvB_-*jo3os&HN6AIbM@vtdR+24gCDA0cLyncJ4LqvpU7r?yeS0=atF;XLo&n z*5occgxJ}t7ti40G#koQfHR{`C!p*HI5zc9!#e+)A=K=TPQN~QbVc!-O*NWpK2y=f z#wXi5An`IWP@;#{-xh*VPizdp8iw-N{JB!tz>k}J^Tr`&5z*Q}yA>fWZ2 z4wv@#J%GD@e8wt2#_aIeL)NLgujn6f_AQ`LEmvwWMz$^1Kt}{*wG^!eWgIDTvtpy? zzn&jd78)WVub7vsc=)BbU`TVEs2^l*GybB(<$PS>+y!Rxj42R-kx{_-nHv?M#x^0` zeBwb-BXxCnliHmObJC9yl<;*0+Q;FQ_%6R*O7p?IBzAWGPj~La$mL{WP#Aa&SMW$|4pOC(-aR z=e8RQBI&D_Y_yWYDWIn0$>UQ8*<66oPNJ%j6~g`8SPL#p@RFKIz?@FNx~g|-Gvg|v zE0${Y-M$Y{7m$Bj#PVZIo%P2gp|;c!B{M_O0{R)K=nxYD^2YU^zLM&0Kj&rjtPZZa zK8bQM4#=?c`7H z)m)04bh5Gv9wmrxcs88b?&(sxcC+S0NYZL<-l1hKBB~}#VO@Nb66jN&BzCYYe26now2L=*t=v8)JBIFue(>{03!xt8+P7k0AWl6xx*vo0}-$1#`3zL z=(F6?^AP+#0OP7zU$%{cGfkvLqv`vJ+CX&mo|bGefb~92+HS9tiWL#P|CexV<9dLyP`z64)N$^zU zRrw$Cb&hUy;c}&YCPBNsn-|dB`zYzuYxt*@f=-a6D@->{(=iT5REvX1i(3uHI!=uQ z4yu}SqUmwqJ75lZ%#FCloLzC4vGKYx4B)Z?uPJ?ax1xS#D>RxiCVH-&p@6?0hA^MI zQZ9L|gi>BqogWemR@hv#@xhpCmy_c~D{%RQ0%xGP^ZTIXuRi0AXSu>+%#hBB2_O=ViuLJ@Rtv+4b~Oz8E1*&L%K{=|^Q)Q@XkcyJPYRS*~`P!nLILa(0zM z%WNF-6@^)n1xT+9yLAe-*e94@AFV~Uzf=<(JE=uyQ|<3u{XogDF)I)uMmLTbb1tGrNv6f zBf9HYrf*ix=}H40SqZ83n!p7_DQ^s|cbA))Au}J?IfG`iI*U4Xs+mt%pCcVJ*vcV? zu|M1%X77Uy8Qivg3Qk_DW$-l3Kka}WF|iqeq?~^0jVr%9?+y?$Xr9%iX-U#xfl>NA zR-Dp{BvnOAO(@1+*zmb4GDNNzQTRo+oL=ztYM70|tz=eIf4U-UHEWJ3Ej@{s&Po3| z`^)9G6x_ny2XxKQ68RRzCx&i7;#Pbk6v)h)J!dKZX1Zb%Nk{uWoF@e66uI_heEMk% zLAIx%Z(c8c$BSYdFDQ+XHg}PP=^;Z2#`+_(b3xELmRR>quFBjdMmDs*bo;`mpoE#_ z)Yl`F%xnCv2jnE@2zh?~qcl>nXD8?mY-X*I*Rf0G#y%*Ib^^taW=VqwU`+_M=7A}H zTp78IHf}wB5BqPU9*wt&%rrvo1cwO=ORU&3%IpR>y~J)%dHp>uh>BLzAuyU_y(rlC z=xFMIVa%=}uyH<^igS~!7Fth?5r2CrRcTW?k9lH1;O5u(AI;>R+9SX-{1@@~Nv=E> zlUPU7k|BvD8lJ}08%h=+jop@BbIe-(dc`mP_4YY2j*+8R9LIe7kJ0OM2;%(eYOUqn z^K{kg29O8W8Wa!U6O`FjPVT1Py{gP`6n!rv6T}bb_D8;%_l2y=i%mEgMYmF!x|ZA? z?PHbTfmHe2J}lDpHtRjm!=RZuIciyuH~kVam=ekse%2@1D@ua>Mk14IZi!rUR_BHe z_hnjUFEtru0kLDh)SRhIagVqyxLD-pURzoQbGEO6N{3z>Vc&hohJJ!2Bks&e3J+BlkuqwgF>_H|NGP8zWJ>+bq2Q z_|D^bfF10KNy(I5=v zub*<@)Tsr_SIA3{CB1bgATr)Pj5dtGOAa=NnviH7vlk~WIfYvMYLh&QpX=@?e`Vz5 zqYGD58cj8*e)ruK*q16eNzd6y{0fjFBJZ(e?lVYrB zV0%Y(t)%yTF&bn9DR;YrKd&AhU$_uY&t-&cJd5#JUBcweGDRl*B%Bz0W=INP<$PM_ zB?)WFVj%J0R9&5&N6ypGDeE+Z*{X@iu40f@c+z2?uE5BV!Ez(XLdJI32bMSB?yn7< z^R%wZh_blzW(LsEcq#z^9I6w+WGN_AC6$hBG*IYPro}*))F?NyUo}t%dVtrWhFjE7 zbf%&1aR6#g2>V}l;%bbzoUv8K`^WtKWa%4Gaa|R^IDvzL^*$W)b| z>d{L#IJ*uSg7&eVD1dw!$oH?IKaJ>H{g6OMQwm|U6dp7Z<<8qktShIwCCakWuFPOl zmR)H#6|x@xEg}D!E@WoZ(hOdJIz44#)$QBQi8A*pUMGNfQ|ZM(z27t&T_=0NqVwv8zmUeXMs&5d+~Tz649 zcg2MkT=8TGl9pwrU#pu+Mh)Nz)=>3Y_0P6RA7!T(K%f>9uvKKMDZ$+=W2(=7GHwly zEc3nk$Oz!@7#!;h{!D0VY0ktPVA;?gK;$+z)M0H5pq;2u0H~G~KE07jH(s4?J}fC~;W0M(aw?Q}{B7G~bn@5sDf{W+jhfbyhs7ufLws;$6TT zzD$lra9AR6K0uU3@^;$SajgN7g25TxNT;=|)~9jE1Dj?Z3#z7wpvkB-%2n*fhTHA@7R? zBR+l^&Vjw`Ubj^%35HCk(~Ox!RFM0q>bh>Gr_BsbJwt!#8y?4V0~ay;vn|?R%R=>t zYor|`JB@`iFlfIj(u|^0Q@2sd&lO746p8S|R*oknlqr~jevpq(unWxxx3Bxh&Bk`nz6=khgpATu3&TBxVE9Zy=89QgNgupd4 z#(cKBvyy?gA_lDbsjNGOnDl}?V12|cJdD>l+|FpCmcw^|3{HL;wU0#IoBJnq-Tuoa zLzZHzX}>6kS1%FuGEAGD1e--2Bs>ER6Y(A^fBW+1x(Zx~DZv(@fJqp38>TuWkhOgZ zE`Jx}ujkBax(}qr#;Y1Boj9NUHR))D5jfHc7QLh$&*RCDrXSFPx_% z`RzHIl}^%%63G~HM!QGKKmm`4ZYXcCk8-?19&;#Jf9)BN&fG6TYAWos`+ zul_bTk7?qXZs&9!!z4yGD=ai)o>-Igud5ln2%7|)BCEvNwwE4frbz6a=aeG&R^v*Z z3GFssNWg@BDmTfa7J`{PL||d7L{}KF_DQ66&x%L7=?{85%~^-g?SUIl$(@E#p=;l$ zO3ckXT3;0xIQqdf%RqS&M2XkOq!%j`;9%u`sD$UX9=55jDF2`@iXWF87>UQNA2hYM z%=wCO4h*xYZ2*R(=&AtU!CX-dhxa2fY1k+OnSPT-~UzE%Sw zL{FzB;Y=S5Bwb$<)nLb?k0uigsrbzs+KMW8_f6M2IQozA!rMdbVVlu@aizD|%k0gw zn3ZVpAs={5D+vob;>~<>=992=`aXWNiqG7Sw%OyLH|@Fo1wxGzSsfSTcttF){|MxE zOhHeyAYys*3y!7x@i%2-pM4#`>wdcC6nj~fEB*q9tpCn*n~Fsi(YHsjl|V6zQr&@8 z+81)3T)r@5w#lFK3uiwy94r#3uXtXsB9V6Z4$O6TD4F-T&@}a(244&M4!~V>C2<2G zAM^a#4$qZGhy&iOkT6r)@OuBEQSu!%9s6ay2opJA;NlA?=J z5W|%*L8~L1{l!>uBHPY)hCNb>(T0%yOoLv|W{Uo@5QU2eS&JeFX&SBmw9=*fdLr3>S14(WT zc7+WZZz+J*JF1da>46gP%)!e)fv<5hf`fulqQ(o1H;DIP;~5t^9(MvzWAt)OC+HFZ z4g=6L&OQkc(Pns8Y1=! z6!wdRpIJ^niZ03?D@KN5Nxx-EcsldJ9rc04yS^B4Fg$Xj%HaT%gO7Wo}=9Ab)ttPo=%`|>J5}}HnTbS zS@vzrx5bh+r=bf6Zn*pzP?TsLQhNwF)x^1PH$c+K12F%d-~PJJ?tB)>(lVkk<3+St=f(cz`HT9 zwFOi3gxE@n_Ib-Z&Fm885cB~0F#cgp?lQwx1~Pfy6WNs@ z=PL4J(Dx+WlTMg>&ozC6vYAByMiaA*3kM6+23czmpkIrQebtA+xDa0NLcWv>WWIt_h>g+PE z1wPzG%g?oyx;N}PXOExB&&E_u-nLHO3O5om)HXEJg+GDpExL=O?0TZ|%nzg~>V*I| zCbHRRLK5%FU|>m|gZO!?u(d)JZm4sGS5dQlb|wy1F75 zEwCuKHk-!A0Jq;s_&J&0m&L(22uC(kk?&onUxY1Et)}g5K&Yll`0=nt$sl<@|F5D%3e?XTrPLm z9ZwVG2_9%VSVL>VqBi#@&!tHVBRZrlkhM-)b!ui44yv5MKL6cAyixnvda3^ zQL|&>_j3@8-B2bNfv#B2iv>s_mh}snEl=IKE`J_W0$JfLECyTXrv>L1lY3S|L{#5J ztC0Wk<1MoSX$sULzZE}3@{)_^7jmQPQWpm-`Z)ZJ>J&6jp&|@&236*|c@Ek+Cf;z@$^OhC$y{!oMhjkbaz-vJ(5F#~@Gkp5%3yu>1uKHj4Ytmg^ueAdr*}8V60I?f`3+JSi(bHbp*O+Y zJ{bsZa0dvKzZxn_d&ZpMZ}>YdP94>l2w-PIct*|nIl&3ooN~K~v-Lks=`h#rdD>g| zfs&dX6#uxp-B_IquELvr7E8H0b%svJ)g2$lH8^8T{n|{wdS>e+w}E7d*A6^N)|AKZ$iKA$^Np8*B_5%Uc{SA~sDUqX zsKnx@#Go;cj_) zh?&T&_R-ncC%jvocy|@?{Gu;BeVwWNOU--ce8E5Nh~hi<2sZ@xZtS@Vx7DXX1(;>u z!rk;r25}bNobNF+lb<6=+QnU=)==BQy7sC^8&1JzjwP?cXR;hv$~6V6paTYN=p-RhP+_ip0FPy^t2Cl*BF9Uw#g)bee-w2;yQeF3`y~h* zGIf-Gtdjlxz$R@kC>igR6NSk&#ES*A+$YhQR&!0S=clBpe02sGH1>C} zE1H@n#_bq!xw4GtLt|1tY6?{MWHgqJEp;c)Wieyz?z0F)otQ^uRJe~5`d~|p9Fvl? z4$_6K%v_pe`4tTxdWZO;9h=ChhWA}`dH|UFtF`=+v?c0Ch|!?oxXe(DU3h?TJpo(* z;+60yzFc63Tb%-Z@1!?oC;fWfO5h3G^H*ITGrq6Prn*^v9-WvAFXNLYV#eW!M#)eu z$7%9%hUr|`F^VGBlm2c7GdkgfoQyO=AQ}LSw`>&*_S!jF{6+%>fMUG-dzO{FDTohT z#5m{2k;R2XYa-u((y6;~LO-T#DMNE0Q6j}W%k&)`10t1?I^sj8bNK+6) z^~jxiYLh=H+HX<~-YCi#cSA>P(Gw4p(s3w%Kf)2pjfM_2P`FM=S>i1TaLBpLiJ%bs zmtf0yKMb@vK3Yo8Y;R3iw(OcluK3PBiBM4ficoJjn0AI~&9cjSLv`NF_e7+>31-gX z0&IlTw-U^Ch=a{y#j&d~By0ORya}JLd~lhqZFe5)Mzqy@P&j{oW$@l<+qaBsid#(V z*S$u7{ix+p`W;IoRQqts>Z}QSWn&q;Zn~9O%|c(yH2Aiv=+>Wnbw4Buc3?)D5g86* zy)sZcH=xLfNV&IU=a7jj@S|!Bug%oF_^q6Gb#r~7_Po8X$U>uK?|=RnWo!pij_^A| zRkXP%4p;oT>sz}%8gjPC-tLcJWQ$}aDSUQ~7cK4tcem0Y#Y%C9;!>6iyQRf~mEd{# zelzd=@$Sr>JCm7AvhUe@?X}iECtgoSm6(8@01XX|SY1t79}NwA4|Ox*;h;XzzfEOC zJ@7r%Ou=YqG-UtX=o8N_<+6G_|tGC_-g% z^1p(l$$8%XE@YMt>tgjMR`)(|(fhR%c_Eokblca#Pr(k0$%T;VnGodtW`1~hxcy|3 zkQ}{T@@{s#okQa79PQE-D# z{vFKkAxY>Ugi)F3e^=G+Cav95me4`$v`cp@RrH#lAaxw?eLu?`?KI0dbRlU~2fBM^ zu^3XdM$;|hJ0)XnbZSj~jm$n(acrAzybaOWrZ3toPNC?JLB$mwKGWQ^_BG#e-9iS@ z`37HcBMtiYI+Q_k@>*?7YVL;oVYx?%o$rHgqa;_?BP1}ucJFg{L-ZrO{1M5f(9dGe zLzsP?W3iORTU+HhhG$-$HXk zC)Or|?fQSkPLohHqND%5EVz4U=y?V0fm;NfNw+@?k|*T@P(esHH1?QHE(s;KevqdK zbxXW$Ocav)cBCT^@ww9y)6vF4W?t6)R0Q?x`NnHr+~1&6XQZ)IAYNWbvI?zeMT z^lT>qE)zDm1-G~R7@hW-E(y`zUv|#0_r$CY{`*7Ou#I!(T*Oz3JHUhb-P1SH3gm;{&ldgDrvIy4z1(I`Pa+{+@t0BMgG^({I~D)8|S0U)7I z@GmmbfBvCu=WIQ$o7wh_N+6T`;?{nk4_;nATn-d#PKN8eC;Ip&m`&*QJ9oJwO%JAS z3X?BT(X65V3O!BxCs^5V`6&u?=iFM12^z3J#waJu#zRqaOcDW-7g5$%pQMu#9b} z%(3qt>z-X%vl2-ep9;NF%d;++eDw0YjOA+E_y!z^Yuxs`1uL>-MrnFGHl>>EDwQ+R zKg1!VUOF3eU!3Ac{A%gRVWf0K0sB?<=1c!R#oFdQTOVx?jvF*Oo(c&wP z&D>O7x=7Vu?yYE33Eh6icG&btLtTwJZhjQ%dsJ0EXr5b}N|y~X#^H6fb{s|kreCNw}q%F@A8HE`}Zo0NFy zwANz{g=uR?p`w4Rh6V-(vDF!1*;~#pIW1iE5+uD@)>FaFD?|{m0O6hca6%N zF#JgP8SVO3R@>w^e^MTVSWEy)T?I)ggX7CB!3G8D1o)O0F{=?39HHZj7-d?(jSrbp z7n0#7BY*(NHy3l9F@L+!C%edVn_MzwI-lGP3^sBo+CMK%o1@}knIM8xA0Y(=d|5U* zFt7>d1amQUhi-ZD{0U{T= zyoKgN6;N!w(!VHc5kM9Y(sXw+V?NdNEzizCQB?I*v-jQCQ@_$Yo+qRdo_&1O%D(Ho?DGNtohZpkrF+~T^uS?NNo{TC1sI|>0K20^4e%UIT!v0l_K2t#T=H7*a>U|lnTh| z?;=NWo=7_HY#XzD=okJvC5Cq1eZ=w|cFxg#%1T^lvUMEKDq`M=&U+vaid!q&~&WczgoZRlfJBvb!b<-R3ITyY#CdS;{39; zB5P+hybSHTe3B_Ny)ZR+1Mz_UTfn7qU|+|~{rxM^WC)_~-R;O1wXr~{HPU}HwlPjB z`m_1VG@k3z>31E+E$OYXDn00Hyp@^{eyp9XJ{aX1p|w>Sex1x9DL=d2EpW{MY$* zaJ)hNKW3K<9==PQGvjxG(#(JUP*Cw$$IKsydBXT4&^%;)(#jPBG##)(v~c@KzfYU} zfj-K&1FFN0XN9o`wh4T-Q7u{K{4;gHnx*Kvu~xQ8>?dJ`o2AvPs|ND~1i1617#DTWlPK|SbG zU!u~~7ZL&_3q3`AaQ?W5-IVZ2e>So0guu{8uEaO zU`QF>9!T;|1^VcfGEuJ^AO<)-H<>$-UdW`a8GH?+V@62Fkztb~ykj3au>zO~o@KG_ zHQ$%{Xpn-Xlbp4pCe7YlwfyS1;^i5XMdEW>Nu!3S8q=!;VdvzyOvIrN{l8nZsGnRD74>)(0~EWt?) zjzP6OkiX0W4YzX~5)NYyp_`vVZw&ctVn$_Hp8q~<7>djdza02tiL`~VvIvAnCqeUC zT16FVcpi;^4m}FJ$vQQBp#SHbz_ZTO(BY|dGDNlO({~VJO?Vb;M{ED^a_q(=R*6tJ z#66T7yWLu@ec&ei7nF73M-yTpA>-MCW;of!x3Q?zgqMA^opgJ?&jcUIqzk zux=vj>uhKLemW_61M)eY9;VE5*H&*#4>akr5IXz2Cf+_g7^ z)phQ!t3A}r@sSCjeU+Y^({K(o=h(C0Jz#g9mAvTyQOdpWRmgxswIU+BjDglEI%z!! zb{Ay5gt^LW^mp^6Uiql>ngB!f+@|uiEU5d1Gjqd3&6(rdl8?e|a7OzF)?IBjI=PQk z|Jc@A|4S?llhw|7pB-Y`N8PaDyOfPJg~xSy3_-;rvoYI`cw!oAyG&}!i^?y^La|=) z^-`SA-JMV#Gt;XLQV`>=B!TL zt?=Azt?~C?+T48avnyr&#ao`#J0#<+=T#k~_fGPVd5P^>V%Cw4Lk5y3AT;RUzm`+# zmvYbh`AHl=vNEm!9;&%D^-Gg?CFrf4^PrMh^NX*!s{b5&&#(8x0HdUM^$}H%x;bHS zx+?r>O!px;bV!Oo?p>1TW%Bto^1-g5>F?p_EDayU->OL&5!v=CMd1aw46Z*Ba z(rU!}yQx^FAU+h$x-&%bYE=FaVZnSoD?o0zE@a^^K^9qp{3Q}aHP3qwP|xs~vGXU( zHDDxbPjUKOS%<*u8D<2?Hi+I{ zx~;*IU|xc)|KCdFKT=t?&<0dNl{PGi@@I~`YDX8s97Z}O-qMV1N;F;}m}=(wPxP{$ zdW;_xP5*m@G6e`&M+__)U&1hseKa=O$wDN@{4-{^!`K#nzEVBC*ObaBp6d(RdZ}j{ zzD|MD9HMxJAHXy0(>Nd45?58J=%g?_!}rct6rDW;zlYy|Em+qvTlt3@ZiOd-?4^)& z;HG-=i3X9ZLTKI9*8<_wIPH$tV@E%0ekn!YW_iDz!W5pF$|S+nQpKgJ$T$tpO_6>D zL+p&7E`*aZ$BYJ(1zvYpzaGO$DgaD59;%kl{Hz1(oafozB(ruFjo)n2**!(vFeznO zRcI^{jQM2Cp?Wp-1bQb}ZxLqF8Y4J%qX5k(5SE1!2RokhHnF<;X-8(V{6XiUUP`AO zz8i3ilBU`TG&~#O$Cr0g8P18CXk(4jRC-_ThOuA_%%30q?B!nKvX zpk+h8@wccR0JM-y_^Jt^>MU@QA3d(L{O*HIm|`9C4WT(m|1(XcM!x}jMFEe@vmjGb z5`^DG%?AxH5Pj8L;nd&NIE+Vn{~zE5nba`d^9bGV3$md3@N?E(TsqxwNoBc+p&k>` zYvMnH%(PD71Az~xVQy^fL>ME(0Wf#90lx8ea2_M zW0#gBSoaE_Uf-5{jy*-6Q0;T<&g<+|WpjGY0Tz@#JyNK)-6Z+9CJ*z+(72riKS(b= zr9g9$e4jP?(Om+PFju9v_)~gAzv0we`Jr;MSeQT51;g91sAudG~Y zT(X%IE4XvA-=mQJp5##(VFP$zH&*~Ohx zfA?%RxIQQae*A2HR6}BH-UNe0s>)yQ#SJ`F`=c>pfclNRt)*J;Qmu{hWW%@H0ROec z$V2zl4|BvqZ=d*11GZ`Xi#Z$cIee%wF5Um+aXuUxG`GXaUyDEHprk4&@irxvM+To{ zU@&H-T^thbmyj*zZqXdJ_9Jm9i%JCDBP@95)uj}}e;5j!WRLY_Xt z72Et-;6%M0_ClXzRp6b>r2z5?j(oZee+2EZcwoIMa6iA*6?sL-U>@g2X#@sqIz23+ ze)KV@kv!zU=A+Na!ci+RSK#utOmEvJA~g5RLvCpgVL8|@vl5Evr?-1rUinr=dYP=; z_jU8{CE^NB5prtiiG|%`{=s(v^WSaA!~1=o=@ZTtoci9G(Ccsb#hg;u7uMKMr;P*s zX@ksf$Y)MAAHQumDm_exI5>F)JbgoIJ2OIMHJAJ@Sf0}uAc=~=EU0hx6NWxfe7*g? z5P=*I$>DG2lwL;0CLbig{_XUuEMz0gMc_9Kd%^xi`A?RS=i<_Gu}ETlrI9flVARIq zmw}#hk*K;`IqahI(E1PB)~t(Hq0cRU!RbA+5!aGR!`GK0Pb?@vfY?nU-y@0J{BClt zWkZ}3Z~LhZXG1*}KXczd*zMkFHgRXxff%<$x;UTKt<4DgVMjNil+b@tkp8~7W9z4h zjmA*Gysf4@fy~SdGXBxB)#rL)!5sO`GS)X9bhoxKgdC*3ET)(lVEsCipBM@aRh34t z9D`%usUA}m6?cZ(xlznG!(~chKLv+?qgtf85jTFjO-`&7BIdPEt(I>$IUD||cEmmm z>fBi4yc%6&Yv|-QQY|T%TPuK7bu#(N|1FJAhtyEjVJ zBWz$1tXIA`F!kntX-aZ!W%;`A(qevoicoW~ksM(cIrijy+zfll9QSu|UwYQC>VDiT z;mrdX2zR!5hh0P_qR(_ZOuA+?KwfA^^{IRO>A0NRu~yblC43t_mWP&qn9_Zr}cE%=?BU^3qp= ztkLGPUVkxHmV3V;W4?xVIBjJ;6&7wb>2U1^bbuJ;PfyHlpZ&am89Qr((K~^$yo};u zdE)IAdEuBVss0gzth>MBjt!peRwuSulpgReUEZ1y>4${THUFC|&D!#_$x9uB2(_Kw ze+k~F*%DxOW4p@s`a(&F74C%UD`hX*S$7vw8ue9{=`}j257@ea9b#N#CRSVpHiQ#Ra!GDzh_ieoMgA{8j0Z&y=zn{%$|z zq6805NRlLnYF1w}(uz0km2ZbWhT1^Rd@oq4f&Tr|f8C^?9Zwta0DIbi$DOEadR}#TY67easEBdjp=g71>N&W(K_m6taLi)@p~>b8 zH-A4)q{Z@aEc`2aL>t+BU{Nl_RM~UA;wc$(oNdMy+_crqDNH~yl$FigT z*|?#`FtSAa@7~&v-u2u}%1J_;R=xNcX;J1$-}j+0{Ce(Rz4E=BJigT#l3OmZFHn8= z^j;PFYS+OHU@5ByZEz@Wn*}7VgiWzV{cxD&YhX#8W~+oQTvdn2cj3OE{2#ZFsoE7H zq$Q5F1EBa4lQCBOLZngBf^@Yh;X~DxMBXNouQsD78%?sYMDj_1)#{O_Pe21opZt}W zcvJo#=QZFD4RM!Q6J3Bf-A4N8-!2)GpNSg3WE0Qtb=$k8w|~%e3MQs}=gu>J^XcC@ zG{nytny)l@@oRk%)tmNMRfzJ^afJkl`CJdGn>Qs2X0|u!&~0U?M%eX%ibXsxTh;Ai z6^1X_T4lxzd4j30!7u0{!KE_~W@EnPsz&Y4)>^yaLEF`TB=7?P&@2tshyAL zVL*EJZg<*ma{8XSi~uK!oc1vjD<1Pw#uJM~Q$jbaQS!?)5A89#=*tk30m{<1Dfe^= z(nPg+=zySKpLV9w-j&*T*ui9K;{tiW`lU{&!xR!wwuid5JezJBUWbflNY#Z5z`as`(k5#l~Rlbq3 z_G_3<;BFkD4^&aF>6%F^@niT&s(>^qPnw-Huv=&|uGon``{1{mwj$rJiWlIwRjLxz zy(96`(UOP1}ZN$-Wp^Z$6HjmE;R-T<*6I`iF?^28>) z=yxJ4+QF5*jlRa->N$^aGg+0a1}`*!EyHqwOib_X?TMW0zTc#07CTgS2xfEnVVKSP z#(46@V7alI@r?7#Fz=xUz=+!I#=%wi6X`cMVdA>q(^Qqpb(M;VGrQ0BXod%OsXh4j z0%O`WEMKtgbk6Tcn7n>P{B)yXzGgde9nBQ`gLzB8KsHdNrL5-u*79av{`WdzP(%pe z^fEoXr2mb^=_cs{kywP)p{_3l;|0VgTf(eEb)`~(DncuGjXh*)1()jCoD8ealBT6K z$>9yD%NQZP4YlAXlv+?WTX||$f25zY&gGOlwO#ma4e|gV8FTrqqwz0o?j={l-|w=z zOAZZU7><}Ofh;C&JBEK7*_lsy^MCx)G0kGW^zcIHb#r+yO;mX5geCSvg@A0?2RYYa36TH&?KFidx8DQM_$IP>Dw9Vkyrf@Yh8p4TMAIJYFfDDrpFV@w9@RKQa-CZ@|5~ zINS}Uq!#VGk6CBg+yU9Ja(xK;^{&1lUZD=Q`)5i7l7D+ycH;D1eawJR)s0n+ph9t2 zz}0J2icAhu#h*wN;SCt9)!3egr59q()wpl^j*wl7KB4|rT#2=Ro1##Mule7pQcx0v z;ig+t!F%o2v>))We(4ixSg^=U%1}#K4oBMoyg3%2e|`;53kU&<1144b$`zRnMnS8C zBmXIju;120H4Y^>$&?j%UvsY4Pxd9cu|+?VaMR)?wfY$aY8Cua%sPdtVDEL^S2I1A z!GuInQJ{O!);Vd6ij3V93;GC$D9pc~v+o&#l1G)w5ILNSdWPh3*~c4y2`RcE<=sRF5h#yg&h2j4WOsCl`8EecVmD-g35b(4ow_S(csqx#h+B$iRt+ zZn*hx;%$nn7$B=ljVEHoO?vBDEc>6v6HY$u*OKq`oiKylkUF;DyD$@1aTZtpk*zc* zgfYj=EF`DGs;eWli-~;&yxHqz>_R|5W?;r61d6Hxq;AZW6SQVT1Mf zRxA3p96?klq7aJ3+0l%+GiT>iQ+oe%qU(VAoF}weYt}6l@eBJUD4i4W%24!!o>zGt zdk9fo3QdI7?-cY50GKMI1ah(tx7)?_Ipj9=1P^fH-$ z(+wY!^%H&yjtoqbbn=1M#@L3I2n+*4l5A%KfNRXpTUca#3iwf8eevTHqQCJrpmG*( z+a@wW+{2rgtZ{w9yGHq;S@CvfWl#U{k5W{>!Op(fnycj5VwV0i?aao(IT3d|m!cL! z4Erl8-r+9jlH%Kh+`E`2;Lo$4ekFa8o6mV^tKd5i>Zi#8q$bkomyv3+s*xF(g+v_0b`deUJ znk$@Kt%=h6bHytGm4rt48o>O#zC~ zh31cmLZRHmt}H`7Cz!wF42UOvE5W; z{nL8hQZ1}IFnQCAKwV8t5eNK}GQji%+Nyk)t*GC_tRreT1si~)9SV65lK!VmMqkn;Ip2O?W1FIWLafuwgvXP2}r>R6mo#mG424J@G+XmZ5 zms-$4kr`o9WviKTUv2i=liXRzX&rM4@@O~MpQg-5>4`2KXTB&4VRwXb`kwDs&Am-v z!jP!>P(L8E_^BxYYtPCAUEz4ZWxIN-6E7RH>XU}c)h8IPwNwLt)5!QI&8*P&qyM`X zK&LQK_q?(QgAN(f0S&ej-caW2qh3(80FwxnkRW6Xa1%z8zhN^9WMz<5M@Nb^Dp}c( z9tp?!%oUVIm$-Ub;=N~!$klmW552- ze*WOC_j6E{+3GECcOJGd3&NpU6or1Il4zp7IxcjAnryF&h_o;nq}pwnzsi}HV zRABvgm^`+1w`v$9bqzB-dfjhiSh-RjIy%-5Og#tLPK$p~{Ll?aO1sEWroA4x@=}@4 z0Cejd{|U+zx6O=TUsw+jx$?uj7~4NH!3(G-eaiz}SN(`)XrT5VT<~-4Xri1Zod)2h z^%QL2z7t2qmWakTXfX-!TG4Z)i$jLZj4gQE!tdGsa`fZMUex2EY|Y|OLuTCQ|6mei8w~gP)x&yP z{z+bNX#nPr#isOQBLC3n;$=euSK~2^Ao!q`My4%W3eSYe@Q)X%1tGT_yAaOuv2r!o(#W? zw|-q@5cg@FwfA_yaRV3S2h*B43iLoe@L&b=scCcUwMP3SqIvWgQklI;8NV}Hd~=Vbm!gYwb1#Hd_SQSv zPcw_x5~r=09;{3sqa>D3{zA6j7Z{lUkdE};S(rgv08i^B*k2NGkb4y`%4^kf>eN!v z(DeEk+l?a0DAhQpXaLp)!>4dH*VH#M=4_ITWiLBZFWO!v=6^JHV!DvzFl3hcPW{s( zZRa(+eLluQ$XKUN83y6-uP*MHnSo85CktWaAHaU|r3Rbr^cA)t$||#i_Cl(ueq{n= zb^@Dg(O>?i#dp+yJ2HE6mdrTM3!)>=ITskFKpG=!HG?3&moG^n)ZoSFT%L6W&8*W@ zm$%h2Ddkvu6}GV7<6K)Cdo1B-9AZii=!R$IvFMSB@W{lJDG`~;Xi9y+EM)Tw$(9Ml zXWH1_b&)GpQoe1ZR;=Po_y^C%DL|_A{TDaiWW^!^FVRFSn%`FM!+PVMDVSWaw-IFV zv+aPC-oN#=)t2C2TaGrgiwOS8kjnDxP=sZO+5Q=AN(r(?|3m~cy7LoiXNV-BB7;Cu z>Z0+2XuBF&t()a#SdWLuzE?+c4_@L3@Va~)jV5>3Bat(B&z$F{kf@~xia48@4Mfd; z8I^f&^vm3)QJqshcE$b9Kf#}rp{dLiSm^h~GWJEO6$$3TQf^fVQ;`j!1yH9+DucAklx3HaR4>G4wS`K;jf z^3kt^uE{Tsi`DC#`C-7i+0*FM%7pqNynSYwQ&?2jl~Uyqnu^wO49kf++iTzaWVL|f zv$Z9^W1wAPL%rN@UQ5laCwnOe+nOs)sTVqgngozlCIk<8D&f)U+Li&X)8pXsxS5>_ z`0ww_a`A{f;R+~=ea{QJl;Cy)v&$+$S36{o+;_k!SVe<|p*_nBsBv6mE@4ZQSqeml zb7ZA1N;;QQ*GP@1w+|ndp?YYW-ITLH9oLQ{eso=Aeu+i`vNQPl#mV4g^R}F5aR7nt zMukp#iI~<&_gV+nD;PanWBbC8Xc=Wc+1G{u)}TrcN`AYwZ>032p!fIb#NMQ0-)6$E zaIi1atc#W$Y?FIHo%NUL1F!s8B&9r0e(o}N`!ziMC8iW=ZV&gxti)EWd-HTCCZDxV zAOycB|2mG6hU^TJ#x);Y1SBxwwZ^0;OnT=t^4W83>0z*%Z;$6~EuX!_{W*gOaOfIU zp`+eU6>SHdX1Lvm-n~eoS+!>4RbF4uchAY%yYAX6gQo|Izwlygs3ycpx8ix-MeBbo zH$F-*2;DD;lTh*gUxUn6+AlmLbmoae(%mq!tRe2_gAag{z1OD6Xh1x**-)1by*JTK zuVKXdjsoR|`4r#V@~k#w0(=ZMhdiQ+(NQ{p+u8?Uvy9$*6MUWNCSR(W0y*CJ1PDfG z+xO&cie*=ySq=E&)qX*S--4S!E}uZ8iglt^!lN8i^USpsvg+p=aw~AnA5T0+le?05 zEnPK5qyOG-Z#dyZm~`UbtIG9tZ>B?uG z=$7@>DTndic`2OkIxJQPD1nba`)FgTgNlEWY-Ssr_c%5&WLAGq#%X^KcD(fS zU`7~xt1(p_^Z%>oftR?qOZ3if_V6q>L7;|XyeYu>G zJIHYrx7IaY%V1_Jd%A6g6AcJ*Z!86T{gJ@Vz~R5 zwfgMCJLF>)KRswjWO~H0Xz(XUDViY#dkCw&2`OP4NYW?e?8?E`=n*BhFSkUj@#nFZ zjJ*QV+|a3n;YEFI`HOFOgCqa9X0%d5YRZGwtg015uH{r;hV~pUO4~TmrqW}m*tcAC zjG84uT53#R<7JkXNeOgN`yYonxWVeP?WZwKNP;cU%wyKhCB6z&XoMDlL#nGZLMQP) z`%u5)A19$5oX{RvT$1hrEQ$_wXw*3|W`{-Tu7A;>SpF90_8XXX{w)R%E60ae**bORz_`j^cLP+ljs* zlCd5zo4=rK9PIF`NVG3du-uNsS9A&5Rf*=J)H2P?0Q?EeFDBNdLfPyouX@k}>Nu}B%rJu#s)B+k49Xi7wrZhk9j#0eK!q0GQl-}Dw?Dj3 z)Wu!tVe*ADLa&H<=?NkeVO+b_2!~ou-?^y!rzW_`m)!u?MAN}L+o%ihb3TQ3BOdXQ zdQ7=`mL^$?u-o%aYAe=I?(i3Q{w$?>iv~nqDE13-)AN3#Gz@lq3By+rdRXfoB)%2? zJRj~^h);tZ&ag(|QoXqpJ`N8d2)lkIk&ip2S7b7Fq-kq; zuyqKLSNQllIz6r9?-|?7bSeKq4JRu|8)!Iwm|0_rlF&ZuUq|ttaEJi)P}X|w2-HZ5 zWg5MCQhk60?Y2nMf2g_B%M0u4pw3&=8zFLMQO0M+p)1DKh@ZTb5V8tf2rFb zB;LJ~60Hgt^igq+w=qrw%#eypv>HU|)(t^4A1y)id*7-Cxc6wX1@Xecn6LT$3-UA5 zbDFWqTD z-#Dr@`~#aNS(LupGWb7@?WjN01trDBz6biG<-2%(gehx^GI#z=8`brtfHf+ZJf1+||P5-39Jc zcaP;*+RGt7BWG)d%$C+VtL)n00x)b54k(DPEBeW~Tm8?}U~lJ;dI}RQcIol79x7!t zyun}x!vHe4uvBXVhXz$1ILW`O84l!exil?9yKR~|3{@K&)nVww!%Vn>aqj6$*Rh(B zop**9Tln$;K;0!3lvd>kC!9h zSOloOW3!h}#_3os@#dq=7XSyR+L!cZwVJNxnd9(|2K0(D_j>u!qT3D1jhWVgP1exL zN2}a8jkn-r9rWLB%MqM-+m!eL$Ax07BIT7z3@k#zss^m27_G+MsQm-gb6|zvj({cb zE6g%sG4z?AhkdrswuqZb)!F*lY}(}k;ZzvXC1cIHg&1@!Qdqw@ckPPHxz5hurXQ2l zl7@bS3+juYiC)U-lYC&Rm>wyRY%WT$!oP`b-%tuN&QU_ydEK;7{G^pVFX~)Fwxdu7 z!jvj3Ku=%wXR9l}H;7L)aZ<@R((OlM z>T5+DZY6Qx@}6y?Mu4Ogx-L_lxgB3sROz{{UPflpC=i_22Mac`37(*r_bdWS9Wi8o zQ|*W}{2;rSuZRJAm#-vrKGT}W`@UTee^VgD7;Yv*^TLGdcTo(7yvut0%tMV0BWzE^ zgFL~Bf5g|7G5v5J+}cnIEwL20BXAjqkz868)uc$beflkJLRczBNK4ckux3zyCc|Vu zJT_6}YM>aKN)DG^aAy1Wq6ibXdDoPwp8#f|EvuP>Q}+L2)YJxex?a)9m(Emc)HQ!L zeU`deJ=Xj=JPf@R=<wLZuJU(@}`teHTAxBDe zwYe3^d-PxV$N*htMCM&XmYG~sZm7El^TCo7k_4le>Tn>9(?$Qm41%~gk)afK_%Xa3 zpSg0;--=KM3ADDrrQ6v(NyZQs<(*1X6$OLnRhQt=g-EI-bpHEVEm72f6UjI)T_UPl z&N!I&IwBFsG^a~7U-Vl6+^hTd)Mez+t29cNu=2@D2Soe28kHvoiivVqcQTiy)n` z|K3zyW)1|>;VUa5i>|!@u&wc&5slN15 zwllIz;8?2GXiRQdyHO6H-q_1@0jrI7r_K(SlX}@leLUd2NJkeM-E*%hCFX>AbS&vh znt0e0m-@W?-w%1ZWM8JrvClca{3rW#7u(lTOYi3Cmk8Si>Vr>}?imoWp6lkS>`=qM zypY_g_v&X(pp3O9Sr%OR7bv(BWqs!cdg-SZuj6|ptGE6-kHD%iWdhL&@1TncEd<7 zRtCE&VrO5wDwUlWB$27F$X>_*Qw_p_S>`;p)rjiK7f~D1r`7ihAC0CAG1qiV*+>-9 zE-Em~1BhhgtcA$+ZKqMY8FGB*v)M;^JF@p)F{5u9sPVN^O>M|-cG`Uk;0&4)M{VeX z#i6VNnA{sDAxHh)V}4vmfd);n9;WaYPE z`J-j{9Z8Rjp?3SOjV*Ecs(Z`k1UyJZOJ@VEfzgAfl!@K20he%XM;EE06E1aF^v3x=yI5QQhsX3Z4qH&*s{lzTfICe1X=ORQ%WKk z4c}%Q_s7;s zD%_>CDCz7*M4HSfiC}Et8jeX#()CX+ur-(!z2mAh)yJQam`JNP>f29#hjZ+#?>QrX z12(_aT6UC;0g_+IMEBUb9laK(#mg7yBn-lvM4GQiZI)&9j>hkK}Yo*|lBj0C_-B<{xkgXX|}D*Ik_bPD*g zOyMqemVyj^%%pF1$e~vY8*H5_zx$cf)=+^nD@jV~q~5fMXb;BrU2H6NX?@7&G9}oo0U{HQYM9sh%Du7L_0!H8)#sF^DYH zdy_*U&v2(TO)*4H$o>~jA86{WE8I(V)f?5LuhL^r7E5NIKH>^GqCaL;{HQfDMm+wa zmek83DuS7d^lPoeir^acK+!fewIFREp-wpf4T3jNz7SCz_05^(>$Nf}SmD}MY%QWC zX*Wq$uo<(l#K#0$=WfhpjJ(v9+@ZiuLsCvM^8CXgW(*X>O_Qs2x;(6ftz>p`P%E!+ z(CMDYyd=S>?o1(_M=W(+>FJBll|Zqd)0fpeE(;vCMM4@u&L(n@~9M5 zGbmO3n5e#xpJZZkSp7D4@N1Sz4yF;WGajve9hOC0&))YctZ}zoEZ$Vt14i=(5-CO! z&TWZ0rvh!=2CAu=CeXGaY75%btYPlrG;i;1`)HpgzuXgZnnqB+!CHRV^M8I!xWf#B zGY16Ho&0IK`2Q)@t!I0piWb0~m~T}ATsvI4-@Fa?aJ$u?1H-`h$hmk9?yy(5GPjf9 z49squv>101lf5v>s+B z6d)%~>j4y(;jfr7*oC6s|L{WCjHfF8p>?RmRO11suQC2RB})7##n}dp4aUYhqn|hV z$rq;Ia@BVw56wxKeLl>H(*ocJ3ct+Kg8%FfPQ3_CreuDN!cm|1e*%gPUBY|NO<6GI zw*OnDf~cPC%}+RgS$O+`)hNzIN{mxVp_1?2X|^fL2Y*s?a4q(<6ldrso}83*kF^jA zV-ym!%3fN8Ab_d*g#RcTR(^<=jqRX)67YTIAyo+7bA`Mxt zDV@xI>Z#!qEwJu(l62bkL@qp#6DCeC<6iyQv|>1g@ThV1iK_4eUpcL4JTi)(JDf^a zZr2D>6`*i3@?)x8Iq701ab#pnzd>?B5Qq@ImLnN^CdNwJ7Img;lxG)(TuBzKq?N;v z%4ZHbFz2)flV9bzWf*!b8I09NeZFF>2R+}>Pp1`23fgPNOf5n|3d|cda{Z&8q!azT z{q%Xe+`!HqLsJF=1vIIlfc(s6ctdp82zH8_uStN zA$fD2&rZ=+${&lo-RwKeBeIRjGR;4D-><`LPqm{u^O>}%1j-MNx%P|_#w1mb=qKB) z?>>RHIZ|425U%4w$1WGM`SeVX{+A?XN`KyH=X_*tK!xxfn6uLlx*9hv3kh9eg@*#q2^#H2Y6R)gmT2@=12 z5+aMk-zuDYdytqJL40ltdIiF2H)ZI?>b+uw>pQthu|YY}u!UYv#1=#|pqVKiZYBWw zh$fc2X3QlH;4cn{Lmh{^Ut9Ct(!B3=;Y&rxC+*q2hj+*94;3=0{wWLqejtE&Gzwh> zui=q7>BLiZZ7yQFR9mdE4|kYPmK|(zOCfF$fxxSPn2zip$@l@2b5&WEm~Cl~Rnp0% z)L3+(n>Is!Ds{IO8`I@Ck~?CnQgj}Y5_(H)p-)Dt;0dxd!ny^Y(2Z3@Uo%4Z!}Gt_ z$}8c~faz(>Re|6y$}c6%!*dVM2bo!qCG|f^O@>MP=M@X>l?bC=>2-+00j`P2bHT&$SuL8Tb?=sdQ{p{IG?}y z6nUWFuhEd$rZ0!h1;B@FrF!a!t70(w#=TkW+2h=^<1Vt;uA%)KYEP7B@>)@AgV)so zg=6L6!qu`VI4$#;sfA|fExOl^p-tG!MmwAV&Pd3}o(R&uIKUB^ap(t!{=A!~jCo0y zQZkzGggPyrF^2)xOl4Y3D6-k4;7M;+JnS$pOYLo%X&f#cHBBc~6{RK^T{E?29=1ac68f>1%lI;?M`qgsA1!Zs_W$k$xJh5xCMT!? z@qwnfhK;`XI6K3++Y{DeFXQ1!XRzy8Gwv!bMZ2`KPXg!N9{VCGrT^}?NeSQn))&#+ zP5nA6A$CMRp=tKDm#X`K8l_WAwZv@*@{NmTOb+Bpd})Sio)OOnyU4T|>iuhSScqra zh%a($dVY`gYm2#}#P4HyQIUGa850c6tad(qE%Q&=2iMu+zGs}-Kjius5*$=MxEz$s zCqVr-ZX`C1Q2CRUQ`Xt|c|$Wk;Ik^ycS5*ow3QoI6A~;#wpp$5NDfF~(6Rr-lO4V5 z;jB4HyaYT|b^)BisUyQ?27jJjBE$5fgN_YzK9arARPiCIy6W( zN_R-Tm%smWzaQW$oO7MC_u6Z(y-txj(5ptAW*7cK+hG2P5T{nGM%?2NkaVg2*35W| zN1DiA^L&b4eQAk^K@B{Eqp?iMZnZoVVY2;C?1Q2sY-ZprXzhxw3o1E^r@xKsI#=yO zEP*@*J~a!fLu&QAe$BLWyYPblHdfzaI&4U~c}c5;RrBU~4vR#2m96>KKPA&c$>QrQ zWL>ui6-FDJ4yUW9{*XCR2MT{z`GFFS-qAhOj|y3%Z})Jb@MuI~^1wwx{3#4(e=Pvc zkm*V}#g;v=I>;&3W~?O+m~P))G(=C#s3Sw230?lOS@k?^zE39g#w!2`++)vi$=gOL zDO8zmGGB%1{lnvqZVu$hu8|*d&D(tboo?p~QN+DSMB55B=@gJ&HTwdKV*{LDbdfN$ z*$|C^?%@Z)^gG!ARcQ+Rv`e15Qga6E1Zt_on#-Dl_3g7Z^w{U)7sQp&Rc*swmrafk$MP^@%WED5n=&D3-uUi?aJ{-U2PFy~ zvU|r1_c}Y)3zeba73I2HhFP~)U0&KtaW=!v18lHSu~LFnh2kj+2KlPvsDRJX2_cg* zqlYrsA{+V|c~pST8@LNwY*a`C^O5Swk9kxJWT@5}ZB_p#$8t z?FwklmNwy|r>J)vN-aSp8KjQkBie-g52Irko>S$l@t;2~M=#IOHh=_o z$jJ2ZngUH!J9zD8+Ryb)m<^xFd%A#{h*rM9B@gmm3%F8?tl?BHqku>+yWtF*xNe3n zB={qK*~EU$GqKB=Y(Pb0yC^{4t&3;zIlcpIkgPFD0L|m@>zxeZ&U0Xnkm)6!%TooU zjhJ(&8tTz`5yJ9(%9Zn`ady=bKb$PJzkDi8-BS!U@xjU`mcHxLFfN1jG(T&%z4E4$ zJim>u!e~*7o)>P3ZXiQ#Z{=H+6MriG7D-^l`71e;23d*rLak4c_Pd8YSm7YsQ5mKa z^`3LOG7YP1Ca~lvS%i?U`w|S>QHzop{a!Tej2UH)pI9(_PMSKJ$1jaXG*&hkI{mUI z0^c9QU%EFFK#bU5A|Uf&&ar6^TCdb}Qr?$g*ws11=U0?me_2VkU=oZsF> zTNg`O4bx| z!pA&?LvY`#D;=mmTGDI;3ViNb869277eP&LD9yJb;N6O}8qz~8BVpkMo*q%xu#N6tb4;UqE5 zrB;6u{Gf+dEMRDDqxr=uX689-jq1y-rDw+W{lWNp8`R{I=e|XvY65Yp(9|k$f~6Uw z$!|D)O;qCjF1Z)j4N#T~v-W)jBvBG(5XV{@0Rcq^+Nq zCf-RnG0S8`Cy~FRx?XTl&XE!{mz?sR56K)>G3_4BTV~DrD;h<$v?v|8nU!_(PfdK8 zVm!?+nO+5B9CB~_3Xb97=8V7_y-vgm>Hj=h??zpx(ys*uB%iqCor%I2H@`8L>8$Xk z5Vtve|$kRr!V}a($2>+JK_}XroA4( zjQ&L3_7d9gfC~6l?7mj{Ha7)s`HEuAqKGcq0?jaj$OuPO}} z=SgB{chK7*P}TBwBRYXU-d5PjH=}H_YH#kswpEC_>-YfV!sSVNnj+Ia|H1cTpQqo;3M$MU@3F zlB6s^mCl&1%Ueea@#%`Xi3q^hutC{izpAA96o?ZhM^1_}67YK%Sw>r3x^An3d{e7M zZ+80cVyc<`7<>6w>Q!q&CHB+0_IhrHFtn*&_6DYwi(aNP#|WakO-f!T>^xL}R8km8 zBrxbkgtQrGCDR?snX24WXjp+^!5Yt;@cd4*GszWQB+vhE8BsjDYmAAck99yn8+;PNP?|>%v>>241g4N zh<0w;F+i;9@Ac?bU%G#yqJheNlCXHUKfN>%#b$c`@6)h;r(~ypKX8MlL+nzO9+&7l z*b_f63?)3J;wNQyx5hlv!>`1@V&*vgcnl8lN_Kmw*V@c+T#EB6{3Eq9)VB>F+T?xy zV?1J}ScGBCdc0241{Q&%q;HM%J z4C+EEZ#$cdOGXY?!n*PUX@)9VvV@KgByj4)_!|-F^(e2en*BiC>RXNdGP+gAH{H_% z{rQ0}D#)jy2mH6}9)W8=CAWr*2u>tCtMhxG ztve61sn_f{N3bhnW$M7Mh|VZ;I|PP!YaMRt)Qn*TRuL~V^-VB(aF(WKElr9wLM;u> zfh<|wxAKj)4%!kZr%JHzmzIZJDvfrRtzhZUuB1Ksc~s>@MgmfI$RIFX*`yJw*BdfH ziEPf!RAxQ6#KAw8Ihg_7 zvi74gf>p2vF0+zIqpNHG1{={S^HL(AtJ7M)5z)z&|NW+qEKFR#$jzCr>RX1#Ijj2L zVet)>7hUZ%{t2<2r6a$=A%d-yX+Gf;MQUrJ5?tDkEms|x(A$p-f5C@LmHqM`G0Fss z2ELS216_mpOZZ9h)3AcdhNVGx_^0YWRdrv=IB~p$zh&bxMbMh;wi7Ulm9Onfl{rM; z5`1oPij~-fdj;z`$%aDS;ms^Bp$0f9)yjn&HkRB{mm$Hy(Ovt-=$F%yl`}|zTz=;+ ziJ0Qdvw3OvX|ypebAO61A4;hW$&v7sh|kqBBh4F(QbM9UAxB7!0s$S}h%18bcR$Ww z+=EZ$J=6vC_HO#BJ%nB5lTO86@;y@7@O8hIFNihmf5R9eSm8PH*+uyh%j1gE)Jdg& z-bAiID4K#CeJ-X<>`?vm--7)cuR#~TIPN6uSsC)bYXAOaj)DzhqmIc?^$r<$xZSld zJ15t=dv&jCvxC51*EzZMm0KzNuJCobu?7>^ieF%QC|eEX&yZ7UE%ces`KevaFxU2~ zl+))QX#68-lo$EgfL)mnF`kKPPPYU9?5fLdyt`>lx%r}U@7mcx&y0YJ~Iw`EbnU{|kNkljLVU5uXvVx&n4<;Xs8toOcN{x2=#>o-StyCi{T z@;kgv8)CDTwrS~qtI)}Gu{bZ2zk5)){>a6P_TfbC{+g!=YF*)GlYQJ*q7)v+J~pSt zF|GTAEt}pa|94nJ#e-!#%>pNClDL6FtEQsp`q=`Df8p_gXW7D$sqrO8CZhAM`}puW zYu_7j$bWo))KsDto96x2=XY1z^H@^*0L}OHovoWmj*ITOVdLk)X5+GXVJ3j8AUTQ% zYlANOYLCk1Qq)U|Sz^{ZG@>Ovu~QI97;<#oZ8;H6TDkzc$1aI$l&2DYH#O5w_MDMU zy@IoufR`_5s!|L_MRnI{rSdt#4AOHvpE3L+#&G#S$ydD}dElQ1}u1A{p!HwbZBv;t(KO*x6u0Xr*w z;`ybC(L1WUN0XahQQeGFBco9|ui$6Gg`f0s1-sBTUuGu3c0_! zbIHx?WA>0L?c@%@YJg~4L9x^24cG}r_MCqS*DkwH_s8;0e|c7UN3X91$H*y-W&Eig z;`N(thml)Z<$8lLQ9`j!X~q2hpvn771h+$Can*FO#W76!`*>>xd1)uD)mHu%k_Q&+ z1_w(GN^XM(erB1Hb3&s~CF)jVpj#y~s4Z|_wbssNMHqUluF8=^-qMDP)#UqbG@Iq+ zM30$CR&g>v@#xRVF*TKM&;Dpvt+MY{law)NaNTWFZV6iry6&NNCQAJze8c2d;1+TQ z=W6oqb0ubb@4%us%5tA&*-m_37th3W0s}Ls8$wFc%^kMHPY1j{&?zW8n z*RQz5fJ*(V@ucy+uTr$KIIIqJKBK9VD!kHY0y_9z*t3-oy>>q9XBJOYTlMBOJ*@@WCbK<-8I3zC++*Oz& zf%8$M>aUG%JXk z_7^_lneICOUQ2h^*dof+8MX6t_D*VH`Y-L7q=2j`Tq!t#U=Hl2ll8G%nR(MeZ|jIz z`SK$-=Gr(`Q5~=?iFYT;NoUtZX0wW#poYZ$uk7+ks~7}ZdX)!dT9vg(v{#Z`2Z1|n z!{kPFhm44J;V4ONRCPLEwZl26^-^5nLtdlR#L9`e;Z~4t=w+WCwJ&o5FxT%PH;@=7*_S)`Y zx-9nc2&^T7O?#QJsG`6(WXa>xWN)9B{XEDXFNb!p8Nyu|%4G$J>9;G~as5lUc&-p8 z68`mznW8*J&~j7H`&ZUdp`qbhg60?wK()X0T7X&dfatYASw0dcAu%PCFx>bErHfur zsE!KbS*4bvE^nqaOuQ9;L;98XPgdf8l-O&s`1TPu71y<&!nHE>q!;vS#H;=lNm2`5 zGgL)yx7hWpAB`tVrH1>JI6Gf9qh)-WuJZlkE}jP^S*=61%U8S{S}9!E9g^4-N&P-X zrFh7;P56Ov*!HnMVZGWSxd*;VGkbQ8%g+{!S{h(S>*KIX`$t*y^4eJ-lEyZez$VLVQ^%Rbm|x%i6e*`4L?;j|JjSMx!;Tzc?BJ2xaE^VxSj00xqXl@ zW*DlCT>NzNwsdVP2k9#{iiGjH<-KmV+8_weTJho|OlB=s* z{P;tq&KG5SH$+x1A{#ThD^fsBiz>*pe|J4@&NKcticx{^IC2=t6_uqA<6r|RkgdN3 zJ-Ku-r`m|g=KSeQ!eY>i&xDWzp4uz76Xe^^ddpfR3B&Fp0j`x}FM6#a zazl18Vzw_34X2iGkeLHGIC8Ru5~lCm2q~INw~JmY$OAhfR`z#U{g4B?A((%8r8MTtyytUJG{uv=gzaMelZMEo zSV=Si@8 zyqA1ajyFLg`93e6r+MGl`6X6nZz?v&onxu7#b?^PQa}vbq&26LCmZeX$_KnFki~&B z+eetihQHL8(7eU`Esz3$8y*^~0m8xF^<)%Wg|`cCfZ{Qe;5S>TxRA02po{LSY7{Vz z>?{cPjBmEWGOBlNX_W+BC+%NH6&*4jFO)xc>ka@7OUI#wHs%QwP+~H(*!Epm@`!}- z%mJmBzE+m}{Z}CtlCWVU#Ul%FZF7@d*@i}_7 zo2IpW&j&*N{;`z-<1{7N&};3aKO)wJ3weddaKiOHww>X`#fSWjJ7qWGYn3SE^AINl z<$)QTetXp%YYZ5VIEP$5hPu_dM1v<}n$Inrdm0MT{)&u{Hj26$@p^zVt+xn1W=O|| z2&pam7$wnfX)+I{FEnnm-dkHX9`l*^QDk9VmRlR>>JAw;2BN;*MZ%WfmnfIAn(v? zIe@RwC1`yW)TAC`a~kVpEYR`Xucf*#O<%%frqiJwoZqO^C}dFqV-Jmaa_u(2@Bd+WjdS^)j-*7&tRmldK{q?Ex1tyU&d ztY%{T+RJHws^EUH$DTat2X4ZGRQe4UoR+JPeG+ab9XPvqo#o)``0Vrfc=EOe*Kj3` zfWHoECqAa^BMHzDMRO^X$tr{Ol?R>vWHFx{u(u)QY9iJ}F&|3#DwTQi1kyc3epr^` zd&NpEc}^X4t>G(Mwb1jE>3t!?y6{rzJ%+CY{(erK>rHiYEp8v1z8XgD2Dpcwo+ z$J>=Y^cqI1N2FpMRzaJ99ziUwFnG_$2@CW-v599x?^VnI2|7^q=vS@A3AGPQCWzTe zI>@}OppUYC1@Ha&RT&s5X~XnY@fAoXFn|ttjj&FOpbY5Tx2Tmx>Bc5z4V1eMm=Q~N zu$^qXOP)6z9N&%{@INtlPy-vnOFHvT#=+xNQ$cPT9jHM{0)-9`=@^exsF`GQ({z84 zIai}%d568HbJU58B zPW*l>Szf{p8rN0w)o{54?7yZqsG(F|Z(m$nhP3j%5e>LRx?N!s#ra@10-;LQJxzW? zFK?vUku&}<+ftKFxZhyI;o?$UWmvA<@EY8eL{SkktW?K?78l~QMQNNWMuT7!F3-;f6XF}BGY_X7hc z=9AvjW!^L6-^UsfF9`Te)H+GdvNfH|HcqlLwcxs=o{Zy>fRcivH6|Iy*K=zIffD?= z5rO`hCbrx&{{78fYX0>@`?hQ}Qw7O>j^tVWc20*xa4WZt-s*q;1R2skyYFGt%aVfN2p7C0lF;3vs*qen%G`L4}1j&(|!+Sl#Z%0%Y zXJG~LWxXDNIOCBzD^^$aFzgq!MW;j;9n~1UQp7b@7)L}z5~a}E#p8A3rN0e+uEzld zd>zVKd)_*ToJ5T8Wm+t1EPMFhaVn1xrA=8XgVnzWl$l8(LM!Xf&~KOHNY(A7533jz zhE_R#)M3k3UVd05>Te@^JRHVg>w$_lRD|&V&hk?P$G8|s4efBLmq|wYzO2~Ng8r!u zrLKsjOyG^A4oae2od!~N<`V3FPOgtH0#M|2yu_(Z`iE+_v6pWuf*=qzv8}o=~u`tpW$gla3i;&bv?PfjkS=Yuo>@ z9^{;a3}IgaZ!z{*d?7nHmu-8?Wysr+lM#XEC0$gu(KkX~2k8e`$VyN6=O0dLuS(=? z^7yOV%;=Jki3OGN_A z2@s*{lGe7;2)=JmWu@A{czQ!1P6ou68>_U7ChoQ$-B9jUq(}qs$Xo*&3?>8e{!a_g zR?o>0Q2g!v$0XSVe^hGkc-$rd_u49tJa&~NMvTbcGbllrc;7tcc9{d7pqRHpFj3e4 z9iMBpzM8ua5z+iOv!G#)J&R-e7#$D`wH3=WR0zPglryT*V~*Da-N&>pCst*@pE z-{uvLp#Bds2hHyiTUoz0gqUGyM8BAWE~>b@Y$h-C0(VqnQ8D$!NPR{Rag_)M7eEcF zCGz*U14BZve{@pur^)pix|mgj1j522lmwW23)u2!+%ieD)nL5<&(<5{8_i@z>#MtL z3Cc4#in-_)G9-9)6~Wjvif8t_5|f2eW<7bS8C(6h>)b!RckU;-0Z{IqEwCLTRG!W$ zi*yiN`^FPJFL)&Y^+W!88&0&Kq|HIhu44WQgP1FsQb%)PcF-b=;qgZhP+5r$uGV2`*6)9x6m=Eb3BM{ z17=vcP*^(qBRD-`7sK17=}VV)Zb(-hq>-{(Ub=XIH`I_lpHXDybQ-Z$y@^XGs4?>r z8?hIGO$}>?G=Sv;=WNJ)r#Zj(UyNS^ zu3gw=aJurO%s~c*O7K;|XN(~4WvK?f-OhY7Z@-^3#o_wrMlX&~f zAs$^UL_lQ}*HK~~{OLX`MIU!&Cs@llQ_7$;sRy7Z)OnF}i{X(Yng>c25W} z0KC(h3X4hp%uz5DlhaR_sq_vc8LGfivGF)46Hr1e&W5^S)lM6hrpEQq1k}4YeriG7iI79UtrD5#B%w-fz}ovUCe1D{uN09mIM zg_M~nu8;?3*y5Eho%P|Flw)kPSD;S1u+jJUJw}`dJ)hGf!@I9K8YrN#jhWa-!qkVr zF<4=)uL+xKbEn&}{B0}o*#1MkSv;XE(R2zf333;NBgj79aYCERwTQ5s?As50QA?sD2%rLTn|sW{j%OxMcQkgu`6O*>MnAiS^BuS|PoH;0Mm$Pez-XP0M z8hD2^A@D8(wf#R?Z;48Rvr<``EHui^aINq#+V8&?5C~ErJzbHMV$2H2y&>88(1Y!N z-ClUyZsu)82L2oizh_7}B@Yv@{}HpVR_IeT5K+)?9r#aUKLYwUN?iwf@W(MPTc{Bk ze#_of;=Z7%G5~UaC^rq=4fxuA|8HA#ElYH&uXa~&_s5Re$>s;(edU6A8hsO@TbDYl zTkv$x_)%P^q-L|JokyMq0gs6U)#jlF zs4LaN0QLFf>OZ%TBXukp-PpJhnQ%P`GRE_3La`(*&d)E8^b_7WaaKBZ;YWB1Fgx;% zJsws?AI3Y#y(zw>_jVe<@O7lqI_r=mz30NwARuh6ocLtQ=jBo`%0fZFx}ftR4Qo{< zEUff6&^h646}>QeDrhaRl<42Y^=#6k#Pf!sg_`yuy-m{esURK5%`WQrU)S7IA+?Ge zplGDS9tM>`3yEpa+fn^gVkKX&(P8_}K)oFa|BV|dEbKlg3kRfQdFS&JOM<|UB!OF1 z;}>LhfzlzQCzLQ@FY-nQIaX_`S_n*OYA~Qp~FtN($O>m^#R z@`PGAucoJo?ARRxM(f)rUPoHmvhR6~0Hz5Gv-t1-50TTe?b} z%#;M=?U5819vgN)ssOIH{-h(5e!Iu^<-dZc-piSN>r#Q$6bvH+Do6qV1en5Pe$=kD&do{0Dm>hbH9Yof zs*dqJa$jJ@n+EN$Eae7s5AyO|k+otItP+BW{%sH7nDY^}M&ID+212q!7F zz(2c$9kdvVH`c8nkTexV0_Nvw+Z8yd6;CT&3+_<%dsx<7)zMpJxR~Z_@5t>p{|i|! z5m2GG2A$WRlbJ*eP>)TwL0ZIz^2E-nMw0&M$k&5J<)zb5&{qr^T+e|0foH+5NQ~yb zKaV70+XTRrsgcS|0hLZp zN{I`3bTTljE|d@J>?WcgxxVtnCZ*)&FwW-!M^UY>eQIPD968ohqi zQ(wJ)7j5g!h<1o7`-E+FXKtE=_K|SFd&Sx%!>r9#LM15qmzWZtiLIr!5kd`%kcHxh{ji13}Xbc-RWlP4iUm+8|s95roCYl z>L@xXXADPQt6$20;2Gz(f&+@2=g%QyUh8#y*?O`HnE;S^RR}N+m;a7Wo`wY$b?!Zd zF!|bYS_8Jc3w&Ww2vR-Lqw0=RY25ioH3yA}XRhhj9MK zza*?Rv%xyuiMLMpA+unj(E$5GZ~MuoWUU5|l=45o}h34z^1 z553X&@dMAIDT*@|y{s5zXFjxB!9u-+k?$xSAHOu6!{rt|a9I~4BCLiBwDpE{&pqlz z3;t%CdWwSuRcI0))UaA{asy)MztCh=c+}Z(Az{7=XVmI-F#3^Bf7PX2=gG?#T&#CK zC>-M-vA~kyl(E?KBWCgow%FD;{m)TH-xAR_`wGCdi-K1jmA8E}Z;YcH*;F3#1Amrl z5$_l)K+rLrx3D}#s99x4D27Qee1f~4UfD^?{i_K)p?x)Z)}s>iO4?Rwt%Y`kkM$A) z!>gkhH)9>h?`7TxUJw-la^DKacQ_w6>N1lI)WeooP3DyDIsp(8-1q*NmZaZ|jn22~ z2To>UfTkC?j&wtnVd=HCM`*IvLKI_~zB)b`kKRKnqXPMFlq0c^qO|o+PII|vgr2Mo zGffp`02ft`?kPU|i$r&Lm$k=xMWF{3+d^hQzIV=eqBi>HcWPLz-Sd8**jjDlw=dJB zK5L7j#veMVineN^72j69ee?a@*LMu)$~l9di4z9#@Q=mB$A%kQkKaPcovPlw$Ke-C zpf2=@Ihjv!ySOl`pl#!}hTW$@Os%_1fXwWkz;@YDe3S~o)z0T{ca6{z|K&fvU>n3; z3f;xiQU`4p^0A0`A2TW60@7)C*K&M`XM78QS_GX<*J}*h_G6Qih6A?P-b@?2-i%!T z??8|SQmTN*7!CJ%dP8*-uPpQjjGk~V&_;FVNoIv8i}pHG{<6KO>)I5e`3Lo@w1G1D+5@m0P{Oji-6@=cH(WP$894}>wSTs z1=n{p1`p{^0|9|c^co;(pHc*0+Wgd!s%vZ$|-ghI`q|59{AI;ry|8J`c}{@ zU`Ncuy-Z2U%$K_C02!;!vUjsIpyv3o2OYUIWfyy)+m-mF4AcZjq@UNKNtjIFj2FFf z!H<7sRX}vr>c5>+DIlGWk|)TY*Ed9-SfcM=h9TkM1J4+7d!O_=gxl$%us>D#)C)0k zS+ncf%8DlL+F)cNB}M>)1-u$ekNX`1S4k&nFkqqX6ixi_2Qrjp#Yul1A@}}hi-AHG zX=2hgh#jdq@oLrMzaj=V9Igh`a}`jtaA4hk|E=3O>8m>@FwprkaEn)ed^najy#y|s z_h~elYtIDzm#9T<-bc=E69${&%5_h%qVQe#8L_rdZQ8)24gq7T^Ruea7$EY2=K!ST z5v-s}lX%Ek3He}}Vu?rMMjh*c{=2V0wU-JB5L#;By+hw4{QlhW5AeL-Vs|U;URT4V zAx*(Ktq08x#o$!8p3lePR(#M*x128Uy-m@4V&1*SazCSSfPLY;;KRexp>g3KsQ@0- z5Y+ZSd-ql8i3r(A9aSt(_GE8yBuj^des5)WiG@xiHSR42S_I%^r;GUyMs$QHjdw*N zeFm2X-~&r{G;1cjvdqMLv&_&F{MDy&yk9ZMP6(U#E z2{)4oVdNmgi99^3{%+b=t1a#$^uibyBwP2A2lR)!eY@`LTP7CHbBHYYA0%Ix{Ix@N zx5RR=ijVY$2>&yASIglhB2hZddRamK=glO$=g+>H#pl*xBl)IBSTF85?u_UtjG0aT zJJ?`=4b}J4UTHKfy}y=w5%zjyzsh*dLh`^=@>l^BaLMRy_{oOh-1uh1`q&~iQG91^ zr6kL#j$jxW=`)tx`+a&7q34d>t88>QFlpb2o$0rL&-}hdpKRm{!TE=~1SLpyP!6x{ zB0%KLBQA;(hVigercdV)X|z_IpZ3{Vn$RBps1~edD*{HRXp30#kJ3-kn0G7QayHQS z1{Foa*F|p+F#>nXm|T>cxMN7QQG^dDL{!*n4;E7Qh!M%}qKh+6=Ba!9>hqMb)B)=A zjhx0zduJG6SQoRfofmH4@dcBNkWcdZt$0OO=}TDuHT(-Id+tJGk8$B`SxB|S9HXYn zj3kSoKC=q9z0L~FPQ-})NAj~+-*4vgBB8nBv25pb@>sDo{wYwjLxvN)Ks|WBRix^(Gnlyc=F)_S=?kG)`lLPB(w3)+S;<>=(>&OxulRR zaLYCQ55&05f@OO&_r!csd9GC!+Fj|ROhozKzR(%@<}LpAtU_lq>7vHls<9lv%G?KG z_lv!l?7MOg;8U%P7L|OD6X>@ro~;k|&o$symD#2{R}r{oJ;%q7y^Zu~H~)(A44FqI%0+*^|5bL|gSo_C}E8hx0lXEh|65%?>>7Ll8 z_XrYyUjJuuMQBfA?`wTITs9!4Q-~-C0cyed1it#)gsbULLpl2Th$nfxKGbgzh9i-} zuUEG@$a~Bl^n|V8d7secV*HQf)A&;;;w5IsS|P7QohJpiz|zm58+dMCm42oW82nh%ujetWUz>St*~nH0!7EEu zJ&OCUO{w-1mu63x-A`<}4 z2ZUhZzeLCJ0;C!7Tbb}oY%3>Y5PbReKj`!0I87b-g)#cCD@T3e@2mC{;zC9Efbfr9 z(;)GpMWzCpum6s7vc_9HV_UZ*L5hgRBnK!Yh^X0rs$%-YB+ct^@Uy4Yo2n{yL{J)D6^7Qmg!?}Tc@nsvt6drES-ftli zZeRlI)5#FR1E;F~h;z4p@<1Fa$`{^d3fgUxpa3qhx71-2&zDq^&pr<-7;uFzM(o9~ke&nQrK&VOzXaM5({ePX#ke*0tktkUvu6Xg!Dg$}^r#JJ7Ca{J&a z%Dx;oE7Lk{%;6c57WS@mR(M5zw`Hn(&Qn*WCW*eFK67&P)*=l|86qeK;Q z{{SK2F^@uU0=UgUwnbhb0nXI{M}58h)uJLO4kE6E6qD67by8PZC60TKo0gn_ z;WW34HG{&?l`AknyNR0wL!8@~NE4_D+0J-ju;3?#=|38@$FkD15 z!VxN!C;b6iRqZ6$S~IU>;jg20UyDqB4FbaLDEsej(0W%R12PWtY$QrWxZ$CNDARTi z%b+MTSp+%7vN4S&jcdj~z{I9KY@Kgd7DZlG+J}>LocGTRi#ZPP5kJ)!Da6SPDaLY3K-`7)n1N3hHM4!WFHw~+3Bdl2ZiYBVc@ z`OUxayron#U@r@LMpMC;U^M848cqr5hFG@R=?OQgDLO|w67I`do ziA^*9m2e)gSeHZuU+Zsb;73Vl$7QLlqsc1(59fIJ4|`Mrv<{oZ;E2(1W)a>N@Pt5P z@h>vt2~#ZNF`Q}08ND=ntu_&xze2s}%6niEDN2A`miA17X7ClmZOY53I$0D46UZ*n zsT9U+V|&0txK>@^6eqn1p7n4tbZ+VcU^gK@;t|z$McFwj@)AcPvTwGfU0A9r?ZsEk ziEhNjpN)%bO>OwDF>MQmR^Vc2^#g_;e(`Y=lfa8G;JL2Gb6w{s4X&0t2LY0`;`WH| zy8wN2sob}qXuN&QIIQ@Hb|%(>c{_{c=6E>5ECiL5LgnnIV9Z_N2<%QI`QB5Irj6pX z?w(fp_pU6kzz^e9DU>i(d($2e>j6y!-U|DwP57%IY6}dGiZIH^!JYa!Y-#!#S}cp8 zqw}AR&d>WP5N089ce3vG_AF~@ zB?SK31qX5W;hcO8L~q0a-4Kb6x$Mk}sPsQP!kk^qU5m=5dAs*!;aXltzQV~YoUM0G z4VD2E6x#F;Wp#n2`j3+C0b9I8rnyNj02+~e3h%eIjzTh)Y0Z*yRegu?P9`N4Q^3`{ zXz%5KmXxcN^-OHBF+Fph7XOF<3;>*;O9}uo0&OS*03tT8^B~BQbJzuou{JI}-*Zs* zwZ_W^c|Nf%z*zIFu9Ih5buirNujiTJJTfH8C?2wa5kT3zm4ef%HJ>E3#-s-OV zK!=bCbrv%pyM^R3Yawii!I&irJ#;SH=U80?i1y8-92WP3hB7fSou-pxG$9az=D&+V z@$aI5|7*~?5mV?MF=gvEmPeWiGyj0tVE>a1#XXxb%_U{i7u!a3e?n;d6f2M&o!c@7 zXmjS!&h~M@(1K(wZhY_!hCQ0F{NE@?LwAtVA!FUyb@Co?OR&nxyuh45q4}1p$dOK1 zhR~d{SCWpgvXroSZokj#ZP6QHDVJK>H;aFp(bJd117{)Us|+dN64JM$RsZTuxM;y0 z!DdeAhyOPekIej-@u#cG$i!i96itR{Xe40IHoh@RTu7xYQ&0HG1(!n$LcQXOMTz&J z=eu6zB*^`k!)tyVLeKuregn0RQ~$dMPXlmqbg#Cl=;C^40y2AB(D0_SIru+vzoJOzTy1vftWWA!KQ)2Y%KQQ>XWPZT|FR1`gre%A!# z>ML@#H>!D`@qB0g+YJLXwDw5kfEtS~;=d0-PM%~Brel*l>zbcwc^z%-fKv8pOBP`E z9G!|W*p;tI1~H=M-#4Pd_SHC; z*WyD+f3%JhRoD*h`BgdOE9yOw#E{+@y~4(TXbcB&(eoO9QshLss{MQsxGNW}v@1@} zy1eghtYe8dUXiS+>;8_`D5rr&5~U(}4IB&Rpi7K4o)KA!a4#VwdjN;?c%u| zf_=b(n-stPYOx#48F6K3jQR(E=oD&16x{y=Or- zD0Lt!Yc_eM`*L1HBp!##0TjoLXOgP@4Ik~1!vJ1PTfugnbiFZqhL;l;CUkp`p=2EU zbm_ZrM(eDq5z4g}HDyT!3G&J?(JYfGOx!lw0nt}uYCVZz{)2{CkYYQ5ts-8Y;k0Ye zHVC!yEcNV84H^8kaFry*8(1zJ@Z4|zEtSZRh9>+11c;;dL>ca{RR~ymWoDVVj)A9*1h70xVjLi6IgFooOy_wY5Q!j%FeBS2k(D0;P95;z; z0DAH+^V1l+M)viu-WCze1LJQ}$a?3>x4XRe)VFtYtw|%kPXNZ!A*%5lsmbvCf#M#Y zhjo&KRroz>nHAO`Nsq{Cf#YY6(rsXBZ*|;7k#YmIi0n86jCT?+r;DR?62k-gJ}Z7$M2s)ljCAk#p0G;kbL512MSE`N_KP=> zTsRwSdb0>`)q;yf%HGy(w00MtkqGx5E+$%LfTm$dI0~1^s^Y8Iht}@*d(4<86k59# zYvFatOjm*qcg}9_t0)Mdk5MAE8UI#G(^nHFhVcB!V<;@hHOYlu1z& zn9_F3wPt{@mg!t+64@z9*eaek3kJ^dSXBPht{Go|{=kBw&i3&pp*>xB+C&c31?_=V zqn1hh4{8M;dm4q7#{l$dg*KYfiDxKQo*LLX-JVJIRe+9`4>we2SQq^hpa}g5!EyGy zN8ds~*0kntZ}J1{3wxrT<{p=mwaQhDa&Yo!t!4)am>C+#d34&QKPfCUEQ36yWZt2> z7VSt3e=+gs`y*c%zN7|;O8L;Yz}xz=z+)Ihk@iKQErg)$paH_#1TJYr2hY-pSwJy- ze-g|Y7X9W*{ZOcL!oHj3j?XF3Z=t^Zr$qO2@LPIS-~la@w_}Xb>4nllXg$Qb&2#@P z-1*t<(PlZl$1{}jXTg2bX!M8Y&M@U*Tn9S)bSXK2Y`!v&*kL@(xTGc70Bt3)l=Xg6 zYr#W#jjCKxMb!Ng3d`df2n{8_^5Xmo?aV%W{k_SvHuOIMC_ujNNw><;Abg{n*oBi= zMFx534gHk^oH-wX*AN@XgX!eG9?6X$SA*v?cfUd(Pt;!)??KJ#MP3h_cWtkeD2!xM z3&V~`ui@#_N0a6k#fXnfe6qsG4Ced3zaxB(Vx9%(lN)lq3wFXPEF_>udW!B6D}#x9 z|5FWL-VLtue+6IwZ&`}d_mQl&ehY^M!+YW?)sFR>5m(AJo)YU2 zjS#DHB51U@H0>tf2hW@@)40JTyW^TT;r~a|RR%QuMr-NrZbpMNf((!t-6<$t3Nm_h zcL_KI0coTg6p(HS1%~7Z*~lRsO2?i5d+$E*i4VW?#);>7-g9bBbY2PT{zKNPl1b5| zRfYep37MGp*tj*hF?KmzAR~g~OxN)sEQv3_SL4DE4Eh8t5dXYT->;oxTB9=@7 zWG|+D(jbrtw*5l8F{7j_ldGUYBSL%G#)i(vM4AgNY1AV4x98|0K%x9=vco!lbZj<- z^$i`8dvS@b$tNxCbI#Sh4wlJNTX7O4jwctnpyyX5B&-Cnc3SaW9nfD>vTade_8$r( z(OC|aVT1yK#gW0hJToHFu<_ih58VT)#UTA(nuEU55jcx3EV$!|gZR3tGHB)nJ%~Dj z-CnZ5kbTR7>IYnI0iFJ*98e2|m1_)tRY|5_|4e%9l`zX4%;9)OU!|>}`$XqLVBqJ9 zT9h^Tb1yq6CZx(Lg~A|hfpQlv@xXs}VQ_9zhU_pa24^%{UdcG5O2b>8f8jYq@A9_> z`2{15>HDBpz|oaPge#h-Bmlq|))|ScyC;rC3(fzX^)^x=^bV87I)>~fW^mFjeDIS- zAM~#Y9lTPuW&a}eL+kO&;6{YUTj)aFok%l&{YTnW5<3TR8k{z@OP3vkZ5PnIJZZLD z3Yi;PS4Mck;H{skMd-DEQq{>)=z>+2nIGpX ztb?C@HZ&uFQ5ktYBGPVF%=}1iubO@Yr^(?nXi`aJ=*)!R*s45Qos^a$j0qFBoDQw= z_5N?a(HanDva>3*JTo}%0lEZhvw&kBL-69zdG7%7}c zf&c{zt*^5gF~WG8{Xba(LlTx4x5!VM$QPJtyaYG@{KB_RNllapX!(|%Y~{$moXczp zNBk`>>PBg5%-!d6Un@&*J({EEFWj3Ewi9urBz53I4>cwKAorE5vlR1|v-lB;eG|L-x32jScWKb*W(k~yZU88h$H4rLSpj%m;`ztO0R+Iv|I0UNn@M+u-5ad)^S$hM6z7)c8%H&>-=DD?rkFWh^&@ z97fLu3AX3Z}r1#xnq;Pxk0FD zli;o(r<-2w7(y`T;ugg>Iq_&Mzm=nhZoQosQ;wJK`ROC>kq-_Yi2)}l-Ve|UkR=57 zJ4@Gh2HdxH*bU|H_&+!o_sHTus0i@lZ_Hwu^m5cD2N4+D6}+4)*u5&O@hm}8?cUf% zk!dZK^7|Q>A>UMzwQjn!)9Y)etHz2KwX@$DsVwUJ#Y=0_pu27Kzk>?Nud%_csHO+tG_;4#M2K}Tq zm&ziKCijBWsqebc0;U%e(h4so^>C@)v{)_z)dzMl&+NkcRaor_k0q(Z%8MV3Xgts* zqw9{f`u76i@$`TO&6rk`1czTH849Aj=D3TD>qVxI$7#M)1I3r0kPv5Ze8_+uv`LH) ziTgu;11mS)D+u}{sWRjUC(I;?p}Z*V0{2h!b6-+Y=a^Es}~92-N6FT zFe)H>WWZMa*hMbj14O5a>&NpLQJE;Z$fz6t3jz!pZj5RRKn;W7@$e&XhB1+W?(-HD z-xT+Ltj^|A!$H?T_X|04`F-Y1?(#=Ax*8a%Zbfai{-WT*xtQ8eozlj+=9)MEMXM>9 zQNL85--cW?yrwEy$b-geh8=t+SrL0*70nTrS95dbEbk_Mpr5?0up6W4-Gf3cGBMHS z)=Pr^#qayn3!@lea;iPDRexW#_+#UTJgi3rqXZjfj-GEjxhf zF{=a%lk~q5g9_t5>BT~*1|^a|pPE$mW?y3hs~+t9=HW*2RvSHkBG$jWda8oH>$_xm z6<&k)yF{6vE7VIqZIemd>sanGga*0&7iy0Cl+RYW+Og8}l0GIz313M+ zyB%1)OLP1;`B1%dmO`IlkLy1m3QYq11M4_i<%a?QrKt*VFL}S$onoTTn#T!>$T_^V zXQ$wuK3Yd4X42w*qBDct0|BM)2Qj}7@bS)krbU;J#@v0}2SJ&c5S=E5K}(=CvbI&( z^i!di+ymxSLRGv^p>S2oMaFeZb3 zqN#WU4k*b;piHpLNXs^oqtO|YsFB9V<@a6c6^lM&RVB0!(>0d6ETc>m{VyOwe&yeN z!cs=R;WVt?&hvjdwqCm*y5IW_k{M*bc~7(ErEt3eZ-RJRhEIN#R#%GaxcF6FUh=x_ zoML)~BQ?2RiN)haHlA?y1Z96BaW^@lH|*~tofhTT8jHI?yCV|;ox+<1D!e{o+Dmyi zC0GluUzi*OC}S~^GiYfXXGxx^zj)dV1DLUHz`2=62#1pMN^sY=tZsrot&d@@=-+c7 zr}YfT0}7ELG6V8kvacWhep`j9jcP}km0=YIA6IW@qaSa$q-tVn0#x7DLdkakrE(Sf z#N1O>rClOv{D3KCjX;<5^^OK9bh&I`RPfj|b_Js8r7p3OXauYKkU^!s&eCbX6$5;D zP9jGETQ8&h-ODK-UiasUn!kqTKCZEDqW!?db+nAUg769dDO-6_!Cy->kRH;XW|xD^ zX!^g!;Q5N3=)gh8P={8RYdqxbUgijeReJ8f@C}(vZAnd~ocjE+c+z|+I0p`!F>22} z{`K??#Z5g-@TErS{90&v=xh9wyiW!Z8v)A%#}84O5!wMMLdl$}7so$V*BYX15h4X! z{DAO7v{22VS}fo>`mIrt!zn@Z2N39cC#k8ir@Vz&wO=*)+V`i8O4TkGcj#wuHA_!1 zxZJBj#Omv4lNT;@#a^?Iw~QiZ1s)<_O1Ee{%*)c?+NV=Z^DswE6MCg8jwxvvUx;N{ z5vz7=v4>0B3z=oRs;d)QehbyxfB$&Yr%poEyBgBrhh0Dwo<}wW@QIivwM{jv|}d?hw`5 zsbIZGj=JX2*LoQB#rs7dPDvVM9o2T#^Lwn7_}@2$Z^?z~$VD_0j7!bxq4K#3YskjZ zDQu??Gjk^_brDo7UaH?LcLQ8fNdTEG(K;=&Co2g4x>Qu{LWfLGi85OTjys}krtFF(sP^=~3e!1_ev4ZE$_@)sYDzAPG_MzNtJlCu{W#dV@L?ttw zzK^+l566GzWP~#AeMWZ$N+j{FI@69H^Yd|zu+Xk_0@5|<+~qUQo>+>_e`Oc@$}#+> zcW-A0I_P(=sZ@}~wdvMt_;~+GCia|wwR2)>C8ln5#57~Z!j72;cVD=UN<;%ASD$_( zS#aTwU;xR5+JG70;)*jFH5rlxg@$k8AKlJ5cruHjsJgDz_zirh1F~=A1Wov=^^bQS zJ&n93k?*gm7rP=ytYklFFs_gI3L!Cg#zSmSMow9jGvHDl3nGr4b#&X4Kf?M_YDWww*kvfn{`?zUnMp2k75O|nX*KtX|7*pY?Qdm){(k;Z!klCYeqcei7M~o*)?rHV!iiY>6tPaHD=>z z(e>)*HSn=z(x{du{;l#-V%7k@LB~5hpA&17bXEo(`vhO;1LsiRv}PajX4- zH0R=dC9A4=F_oocsmfX!FSh#E)LB6L?korKfWoooamq(Pf1wuYSBx{LW{`V9Se(j z(YBcT9m+eGFD8WSZ-Eyi&&^fX{v$^`-|42l4*J!97Vxn)q9yOkH%0=cr)I_Tt!C>< z^x^jBX2w3C9*4uC$-bT#?pONaPh&&0V)zcgYW0{Cyd%B(x^fFrsW8k`s)HaS3S{(D z9K?eh$&Ub=v5pfAAAi|oPz4p7>HOi|aHDchFnXKQrYxuF7QY1*yJM&Z%n%xmW?M&U z4d+>chMU=khxpyl^zM3KC9s@6nbfyk9~Z;^H~vKsel~Shswo%ZFh)siq<@ISnB^HT zWR2gGW(SIy`k2Up&J$*cgC2dipM&++-P!b)8zL=QXZG}>3{$2DjE`_6Rks_KWH8NRU0}U%3tY9nC7&)=x6+vqyLyk4 zsF(-faYK3_a4%nCHBr(Hl|K*A9J6 zlKLXNA{MOJFg_eEaUX7Bp_0&{duHo;BPjGK(11DJG>v`p3rMPpx_LD8KU*y?>pg@A z*x4_Y6J9Q0(|+pm)13rh_rB&6Urz#T=zE5PMgv?ZNm~%>hwXl>m}Py_Ccp~!i!XHy zIfNm*jBhBGr~yTRWZnVn@~?O{@$4r>>Yxg!D8>4t`ITrNpA3~zxx%-WWc;)-MdSB(|z{Of8 zfSQ43rX0MJv%?MJtj<^=S!aT-l&7!R5v#}DCpaxY5<~4b{H>C6;Mr|Gu#Wj=*eEK7 zFO&~1^|#%cR4cW4=SAd-a^3jYl*|;=&Ox|pTz{JC^$Zrnq(hE zZ-YeY#?N9n>^U>C?P)XPWEs2{!gt=w7Pr>R6yB3-T@jvp%gwbGo_MS>Z=(Gs?IvTS zI1?oAqhpR8HE(AL(E%{|kXXtlygV!`_WZ%D2Eq@^S_-49Y(?=Dx<$a?(`)^O1A4p} z$c5IKwF1tGMleA$KB`^dSn>$#`M3GgK3H*|NG!xOG3)*wZA`s{pQew`P*hH#m6f$Q zw!3gHT~>8Z>4Y|k6=qH>F_ZO0V3Wge(Q4uSxPLQ#R^^dY`sKH8c3UQ~ok`S|!k>7g zYj%k6;>!qZ(zd;W8p>mC(<#M@$}$NTLky=FsamF-@8l=;Os3ygU@Nf`i2n`kfz6>p z)(n=zwMttrS{9M}KA@wkr4!~@YG1BKp`9EhWrzWCxxh61ZfSq z^Q&($pSS=v=EeHIZomd{A-rzO`#a9$IoS2B6WSVIt1~BvF8n9Uw2=?o_kqGS(W(D_ z(#$L|d!0Hr2Uyg2d?C4Bg?B`QhMu3)+~l4hn>+^Tg46i{4M0AokjENTiQ7<^mYXEi z>B}6|C`RQ#?j3p5AE!9-+aqR|V4JrE)N3s@*lR5-n=D$#+G(8oGjXQWm$N*|HARY{ z@#W}`EpXvK*8b$v=0xUq$5<9^MWJ2d_9gv{1)_{z*4<}kByW5}^)W z4ksRTZ_j=tgO&fg+RT>4%P;c2W*7#r{0R({ujUpMu0r3YTw5wW}(O7J`}(I=<^*xU}^|d zX8(&Xj=US=`;55;2kFnTK>=QO%E25=7jkzm*2 z#fChGCPNoY)WI#q@vdR~F|PQb!=+oCY?Ki-4Bx@aQ*p_O1Co^oZOQ|Ap_9h&-)#e6 zW9Z4!T8rfkWxNOda$!7_U>*xNAa7xYM6uJkT`08R^}JRpeiGEUw;)Xy8#a1-`8nt(Y@y_q{mUWKKu z>Uvs65NtjHmpUm^HZhJrwVzrhi>v6^Y^Pr`r~Jt=MhE;s#6&R*%AJbbUhc13??QeU>-)N5u|ocFPb^BrrK;B|(jOrsCqTSeaN zcm-_e8C_#51QMdIUN^<%3H&TqO2u1hA-Tzn1dEwNvLd#-+pz}*Og97C@jS9&`#af0 zLGC*0#4ZAs9j{ZoT(1UdE{BYw#DbDYR@@_8WA?L2p+QB7k;aKP=Ck;He3A;vM2X-n!2X-Z7Y|lDoKbyf7 zg264fy915L;cS^4>yei6zFvKmvq1KrT^RLva}446hE1@Sbf`aYI?k`4Fnkm9c&-y| z1>QgC$Qv^aW1uD?Et@-+uT#;6XX_DMd&E}#6cIt(^ohbeK2CsyLxLI+MRQ!j25~%|0N|JiLe|IXG4Gai8uNjiR~wLYWLRLarUFg>{A~Dp10z zX~?7%c6h>4*j6Q_cRB-3y%2wFzMgYH-D792AuT@KszG^FQJ?vC=Z}2#T z-nXDFMi2R)H*ZK=YJEa&F)CO(ocDv{n`EkocuMqRBVx~I-g$|Zq+}jo8M9KZ&G?9v zau|v@Dd_;}7lcmtT8*wlCW|Up$lCoaq6O!P161T91mrU=J^E2As;nMZbLU6d;Wlsc z^^%U4`n?d!^-h9DRIjUOE@!_~{k@u9N$-eONubO%)3jS&%A4tIc8phiLl(}q zZ+mdhm(43|>vmO-*Xw7JOpdv5?r#aof$mp9NzDGg!v zD?p3e8{$I-?cqFH{uOCqiBt!a!M?Vo$P*;T7EqY)u@TiNfJv7LBxNJ-(1A|fXxsn! z&#h$zzPM9X63XkXGPai=YAAApI@-A*dS~mX`1;-+Q7oh6|P}3E=c^?+UiU-0#oA!k-3;Snyh{{M9i<aApd z(dhT`5Ka|hLfc_J&kNAJrLM#Rk7m0P>5cYV)F6v~BWg4ca}&6Cen!j9BW}tu3eV>E zefVN34;C<^6k?KXB)A?Ris~xFnMIeIf?>_joGz`pzKYeyLIZN~cs(Q#;}NoP$;ZD- zmAC)*3S$U1UnFt5Ju_qv}l`2>MfWnSE(_d%E#v^}){ zr2(m5xPU(YGWQW~_4U7reKC0-O>%I@3w;DLe`Sz;en?+DAmd<0KjQXW>3f#JC|S~X zzX_*(Gmg>}zV7jKWa}5EPk`2{^d@QWJ=2aYs$WMl7MCF`6ZOIz6 zbQ$8Fe5Z?F&wOETu<8s4Ss6b*mK@Q?`Q$>eP2CTb$&fO0_S9p>%1A(W&Gs|ob7L|F zH`ZXQOKaR(RZ4}C^fx?@mGJcmh{zFXzv58Yr{?%f@KL+!qSdrF$Sg}yV`Pr=1UBJ5 zs$Nch0$RBhf;_TTS0{x}aVq6^kKT4>TfCzFlB}&d`fgZl!0(Ip@qh8b3#Ag zwO5l51luZ_$9u9$C_{C;SfgSub19K}xmsxbs-=_&WS5dY`|b$rkgPw@%^P=e_b5h* zR}$@_CkbYOt)|Q9!ChMec4sxuNCi|v2v#&mnIk$s9lH(t9?+@nK&+}S>vTs&B6Mz* z3{H-piN3k|XW_Q9^O60!GkVomCJ(W;l3-P6)#DK0YYA9};Sr1&4h!H1NM{oHy%_Vr&E z86SQ+utgL%Ae_!I4$__I{u*Sm>L6aRSiom5Ea>4uRx4EOXrtxNCl7tY?K9zXU;Sy7` z;&oOaA!!ZBvmWY9${^O{W^uKU*6W^SDi`4XI zV;J`rz4y8F=sw%I@pO{6HgaQ^R>)!#?Z4$!>|flHl!sNU$b`JZtI%xZbA}zI!_yts zqM$2dc7}!nh%n$%dG_2RG2ARYKh-ZlXnBPouQ_ryKd!p!$ceeD-GYopD;8}R{^m2TaX4a6%RaH!@&jIVXN$wBpa!%G3A|Xp) zl!wGCwsz@vc`RoB<1$^7^z|K7n{6?eVrwyGk;t|))2t0ESmBu^xHmVewZYLwO_RsSkcis(4p=x@Y5$saeq% zhqTNPkTkFm&pnGJBj}W)J^oei34O*_;>{OVF-nn8{g-8yv80_s`yldR$AEX+g<(9A zb^ls2sIi8%!1g|aT0*REx6}P>%8(xv^Q5(xbMZls!v5?N%XIZGZbhXZ4dLVk4B?#H z6-4&$0%Cv%-4*#0_%~-qYmEq0d+NN{LUI{tcm|>6Ld4q)7>!Gi&n8aKj{vpH4=>GZ zoT#TV_Jwck!_EMk3yR{QWOQ29t@8A_Z*N8kOpSeMDcv2T%PIA>=gNURdWL7Tq;28R zbnVniy-`!9bQnQVB!{p_M?1p8vsh)fhkpTTMvvFT4HoOvX4DQ$P6adC8*+V9GoT(o ziDo@dbQ8>B`h~s=S|??`WDvgZmPZLc>Z?`%*e)~}cCd@7|J|fL&w9U~!tLX;O$*@;%8BZiz{J#m4Dc(Ah| zb#<3NPA9iTO$!1vZS^>l91GlkW?Au28wFry;Z$C;G<$sNN|(O3(5K6xh(O8?3upfO z#V>cM(XW|8G?qV+{f-5P1AM*YQN>E-mI>da z`ZiWxRZx9uwE>O}+$gp@d#*^peMymrGbv>#NqvOYY5qLd=7F_EGHAPOX_7wp3K`_8 z3Xz4xfU!PD0wKaX{q;7SW;K6-e4Dzq$9wNs`x_8UfqeOSNA!g0ssI(Q1P%VunKnmy zS2Si~f_GLnIOk$@#NS>iZ6r&^ zw}XG+s|$-SWw|pvZpqt_mcCsFPU9S9-@ZM`bzl?AC_l^CWNc2kq?4sG4~eW;aEt zwkRF+r51h_fX~qF6Js4iek&~LSy?uR%>D{W;-RdK`Hd_Tj~UfdViA`_q0k$jD-MEq z=^R9QV4?_jpM?@3WaA@R(RHmboaP(RjFT(3$@{NKB~3h5MA0^0-O>y<>7nILr6t1f z`6x@6k_JTz=R%ca={8#Tt{rh*z`OnowY}KA)nVV1$1Xe`55ORsM~9`34xi-JVH( znt;bA>{(pSACSaZADs&4;QH$H$g2$-mjK+mEo4ibi(RVF8(q7@5f^ zstp7mPW51wu16*8>M3ayBCG8K^rR=fM%(RyT;mv$R75ZPk%r3thS}hWmt71N#a4|+ zn7>voGwE!1`t|#`upTrj9IXFj>~xm(vK4lx$UKRc?NQ*Qh@Z(5TjeBIy2FY&DaA9Q z6h$fGSvq5Rj2$jjP&yantqANZ5L*JGIjX}s_id(#R$I!~K8~nGtOOkD>&NxImgE=ghyXxfiaTNQ(SM6* z*%PBTQ?Ar=M&hNjqO`)LmhrwV3>8orCzN|5S?76|uiGPiAFDSVq*BCfGsm~5>Na8b z=;Zb$e&au7ZqJc_&=_sNF(s06eI{^Yj?7@}*(efd=)pIPx=iM8*0ALy%qnn@VGtQ0 z44cvVSQIWrIz_Fdz*rqXM@m>=0N48N=B*q$>G5%o4s_f(d;af2KIQeSGovU9|INFWwsC5FZPUz@_Fe>rz|EooU;Y z4LXz~C<$*#de|PuulhPAXHWBNByi-Od=v;uFACp{QHqazQMgPFm`HzBxSO*9+J1#N zn-(j20j<$ycXU^?5X{}#AeHlFfP{-L9a9mzmH zN-){QUlAQK{UfC~3^`IkAG9;gf+{Cq`z zr@zq+@L@-DFYhHLZ+z%)-ST>!1!;GQq`@#>zVpKEE-3&YoErXqc3qb4^VKI?<4j@< z)-M1pazX%W(rmU-I)+qK7zxaf__rAM4mUjVn(KA?XV1z7-I&WfNH2dzG7A4bXWyrJ z5UlH|^_Sd&g|r?aPR~Lh>6+~p6O!8ZTnI-VX98gxjDWO&{JOY?vP^a}YxP?a(vc7f!6j_~)ocxsRBH1+DWmCLcKaG8;+;&-aaxGCmM^mnQ`H zp`@RN$mNidp1KRkMnH3ea|=m1WAMYh+U~b&I?=UTv(j{4`d&H!yn4u5QTE+oH~nMs zBe;TO)0pq!51sdQXdDnOnM$X(Q=ub&D6+ETuj6G)>Q`@?&3gJSQ}YO$>OuJxUK06S zED3;Van^zG#9&h%+`*vt@>{t0ury=haTE44yt=7*Fqv%LJB*7cB5{)E%Qmw3_q6*y zerawRPlqBsMA3Z`+gx2(1&EkFQ=C@KZRH@+z6Vdm<{dO&-WuNrBBVgy8)B4ll#xNS zQRIIsd74jOffQ-BfO%NJ@EF~PM;CSkut6iQ@F&lI>SH-P{H$}A$so6%_?EWUBPCKi zq)@SX(Xu=~#~l$aGE8(o1Z6Yxyla`qZ9eLXhlO!-eHBiYpm=`+;ZX8k{9X#$yBKiN zpRU#q7-35|a4wSRMv3xj%9KI!9$G!~-Q?i0Kb!Iy)i1jd6bK1A*@XsM%2Qe8EvsPo z4|zpjJFKsXXWVmq+zAb4<_YokyJE3ON9OH#73|Q|Dbpc>)kN~ozTcoH%0*@0n{`SFBGa7xR zjjx2UX5Ng`l%fIMCxf=_eREKIB^}n6wRE?cjTsDfg;m}D&vf@)tplmqn!eCs-J3TO zSN5B#5ek~GK|1g#uOD$`yN%b8r>)$C>j^wS)TXbByxR$sf_BvY!_JR zO;U_fGG8cLZf`cjH)88UKQG8RE=zp|IEs~Fzr@jz>&XQp#6IAg{N&n!#I|zS3u?4A z{sf4QW*9G%MLNnY%ri131?{mnI`EiSmb&(}@=lE9JdPN;&on7A!O796>-$QvozoLp z_3XGzH1yULveq$Rko$8c-D1#moDRjh9~3ij&)HRzpXcwOm0A+pU#2t*4uI=nIpD#; zfBN9!&OqtO*L$8nJ?U#xE>S(ajs+F>q;$C8RIz!Yf-gOqRT>DrStxidBraw=MQJ=M z=&7fk+UIUH3kK}#ZZ_gicU=4LKc}7C^a$V5d2f;XmPYEMly@PvByA2VFPR)BG)eTB zU(>!eb|8Yt%?Vwk6fxED>kwQ4O{|pVwM)wKTrfzUx8AtdhYoWsdY0p=PBkz*&oOo0 zTcW^p3A51=MNL!OUx^{*1z8+JG>Yw&o3%+OT!QQ26x!MEQunTvu8NQx56ZQXMp$%$ zOqC!jeAlC@*G(|LcP&SCB;2Gq!Vg_}x#D#7NKp~sX#7&ho3*@Xs|p9Pv8$B$*vLc( zQH*LQgM*ii$)8Bp+(ni1)DjS~B8rU?^TQ3SH@6@dmjNqHL?0LEuau=tY$~@jeo5F zj$wOh`Wpg5>R0CZM36XBakN$zh#s@HGvTzne~w-g6v1+Ee)N;|4!ck{>$ZP^g)Wye z9G^Jam*RoZ3R78485ZipnLE|H*7#C9<4!b2*}VbwEkwKYlWF z6`ho1BjtX7CE(fi$iBI3`aE%hxu3=*v}ulTiq6C=44Sv#xK;M_j9FS?#2L3dCUBJ` zyOgXIK{4+O^kXEH-RMoKue~{y11vT_84V(VV>%cmT{SE+1RMNj{TX{y}NW{Ee@o z;ZGmrnsr9wD}`P0Pac;R`5rI0LMn#;OkQ3DZ-@fFMz0W>yK-HeDfO%Mm9di$FtMzK zdAZyK!(cjg|M2CM=jjmn3x1GgyL%FpG(H2~2N`h-)B7&PQ1x8cq_cfHlB)$TjIYfg z7f=Gi2z|}{k||n@Zmu~s4^6s|8NEOIV$c-ON1QBK=WdE?*dP|4O8fra_BPN3Is`O> zCkXuRe*ETaoiMs3QWh5T;@@(3S|2|hkT66$R8Bh2->Z7skdV zaPUq>M#bfb=Y|+EkxwfI&OgiL-c)}*Gg>9g7vt*ahNR~0aroR~6PG;J@^M6Y4ZP7? zh^2HyB~4GYl=Px+bF3wZ6%)j#R&M1KktiF3)VHfBVX+3=b04=a3=J#Y-_R-=+4;nv zavbJc7m5qmgx;qwd4eZ3(GJ!j;)tls;8F^}ufQmOLb<<|Uzv6(dttj^;GBN;lxpi1 z$l-5WOCTY7K2_)b8c#Quu72i{4TF|iYQ6AA7C>863@V?tKIUcbaofA~T|1sl{~6d3 zb(S$Z$@3KI{M7ALoZ5%<*_YwM)wYF_sn-)rQamk3Bip#Yf%RLBf9d7SK@Sw!;H*J~ zyZ+I<&ncW)?__z6n0O)OWM)Cxa&Nzl-p=D+l__(}VzYi$mij!4a!whW-)0r(LEwat zVt4C1?{!Cc>r;AOGQaq_DQFIwJ74mX5pKCt-jv)Py*G~15_8&0U%vr0dHd+GKao*z z#dmASib7k@|JXYKIf6+x&?@QiB;zz^!D`wqGC&Wy48=sZJtbw_ymh9Q(U0@K%}cbi zuoc`!p#uvknV@oW=@S2dX^Z?{*sp8C6Vg`UN_%FAX~YL(++wW`1?4{Dy4h%Gran>SQFaJHpo@-?0rp+}09Ky9b4^^!z_d~} zr)VW-OmYQ!n&Tsm$+A`i9_6j&i31bRuv6Z~;zOq=HfmmRSi4ifD7{SV;4h^?O#A#_ zG=AEE6T-_M8)bUKVXmjCVOnSZT9_GqD;S@QUHQHW#FFgGER5d0`Y{yQgf|#}zk=yd z1vWR1%*0Z!H$LD}P}{+IP<(-?mDtYLu*Hq?NZ6x|nnyc@ z0l&jND_xfM;-9hP!Fshq9vn}tC;h^?>jzuB=Q(iD@@z#;^7`0 zLbGU>V7fLEVY@)y3nBz)KFB+)52W+0FbMsu86|Mnnkoqjvk4gFBXOH!=MOzVH-^}- zD5v5wDGS{&Sbo^O3KWh~P;pbhF+0X5_`HQY-Cbx6A&6|ok1EG>SSQ?;ee{)ICGi%*CDSa#>Y%~ zX!w>t)6SikPkq1IJC2TX=Fgn1xW8{7XW-i@wZwN9G)<@)KGDY6phwD$d+7_=0)J^Q zXpCypo%35K%)=s8lt$GuK^oHvl01lGE<)pPbD*@M!d4{|&kmT#P1QEywZ<{;#clli z6Xt%lPpxbb*qiwGFAD#H%LzNQksFgVg3V(Oe5csezeOqu1EoTmk697rL4*|XyLi6j#x7HY9^8}2n&qQ10XOX^4-l+t?SDQk~ z76?MPCM8xb{?{q87a&7F9{?eN{Rpc0r`pATb@^@kk6E{mzcIkSmtso3YwqANf_1@G ze@Lk>W-PG$?QeZJ3(UL;y&o)qzy2l5xK>?t!T8>*3nscy*f;Ek1&eRzeer~=^=AE9 zWh|7nx)pC)A~Rx|V^i5&kzelRC}oOrW=fF_6IW=mh^=r`&+wF~O0rBK=dsAe zvq%4G4``G3ykaqSZz2g5AH#b75vG62d91Q!nW+vVteqM-inlCR3XCs3?^_ri``MGQ zx>D~%gJn_n%PE-s&YVY6Qg#y5_fl#+ErgUCl~rW)3quTH@n;K(>5xSjEE|)u|Bl41 zP$Hzu-Qh@o^aga*35i);JtdBb>DM}cGV>7kg}W?92W*#hs=oegYzrsczShG%X8tL+ zmkS?VnW-m7DXr2(ICr8c6Jo}wTwmDW3^Ez|@gUDHmE+M0)v`(;{8!9_yGDdVC+1R5* zVWjD$p>Cc$lovATC&@o`LFENKb+3xCKm|Rprnpz}PfbdxKWYOrKP6B}FU~%+3pqEI zcf6+$E_kdu+7KaqEV&gPhqnfaqBAn?FQ-A$QWlhAn3$LG?C4Yd?RraJFWKxXy8i~$ z>!I0<0RT}u=PiZ(Z(P(IerFr2{LBI1u-)k6!&Q22S0O3`3Z;k#t)9=y7C&b%o0X^% z@)8y|y;Sz{47gf5lOu`EFc1C)cbiKlk1gkE#za^QV{9MOK&|Wd9vJ6yf%5OTp#q|& zHRQ__@lbT1=0m`tD~RHh`2-f*ywqU}Br^CO-_0#@8N4oc%s9Lt8^2AE)Rz~{XHUq+ z+MlUA_iS^9b58PnQ3O6br8N~q=ox75T$NYi{3FF-qu92ALCo>q-u|uZ1nx`Sg_FD( zG=-8^6G8GonqkDR>Ad?znWq#=YfvcWwWi4rO)6p|;a)+q@1SUxT2bLo`go-}7o4&&|V*?#f1Bh(?y%^2|~5FP~~Qn1!1ElOBZAPlx(_4pya1`KmfG z92oe*jYPtXYk_`$_j6$O;{sytni>a(7^h1YH5MjGJ4Sk0My~EBqODXhzJ0C2o!hO@ zuIlKYy01C7h^2;B0OvkyF|4Bj)43@#r1p>@p2buMDq0~V@I)@@j2>ivD18FC5TzKO#yT9v^L4d&ENdr+(t% z$HgtZ=CA|buq*~cZ!}6Gj@`QN=44)J_=Yly2#?}|-@xsNW5Zz#JW0r_n(){ul-dY8 z@f#(njj%XtVfVCS#=+IJiR&Wi@1<6J;kRWeB|l1WUD0n5l^EgI{_OPI_1<%qS;~Ej z>-iFmZFkmfQdUvwXKsC~wVbz$Wrq`%`!23G+=H37j4_) zoL>~eIW3v0o*|dKtj2pif}e_-{K7fRXR-@FW!b-|>V~Mx7GdH9t7pr*2LE!8Jd@PI zt2PQg(>uPmd(c>0*12&=Ej*!#%a?2>2qd1o!bs39jNYbAh%8)t5c!#^&H@kR-KA=x zAOZ$t@lb${v2zXGqQVGkDeoyYd93;+_CEUtNR8HHqs|x!pVw#F+E6mSC1mbD+7sGF zYi~`QHP;7R^$BW~EjPmtr)nRoRi*SfJv(2V0VSrG6Ar*tzxTQ$8<{9A?_9_8QJ?;6bJc=luXFQanlJStIJiCj9l84*R z&wY*RRS*px0|Q=ijP(z=_pn`C!k<*0A(_venr?($Qqri0OA8keObj9OUrYw7-537K z7BD+XkKnz*l&!7u@-ec0B=jSP+to89k;ru~J>Ycf(ZckhMOiD(=o{S5o-<+NH0K;)PG@0o7Q6Y}YqP_HexLg+aJJobtF1MU?)Jm+$`urj#{FR@G%&e{MAB-udN7sNg`5b3mAZC1{^@&Z$>1Wi3zHsscV>?z~}>cI5f8_6_pq z3p%%rwyG7(R%v^JE0T>bBWtgsPum9uskY2UacB(TR7CsVA?YfyyjR$t=5d*n-rb+o ze~Lw;EFbz<9Yr&C#TFnjV;V+{OL(|aUiW*&F2TaKl0$kU=PZ^uPo)GG&O;I65Av-u z19&@QN7anrO%7*H$rDAZ^o$EN#`orDT|p?m?{BEZEY$1z>n~Rhk`+*TlM0b3Bo`lEdSx8-dCv?~fc2FFcg@@^wUe0#N4RD7g#GMKu-_ z)XwzW2}WZ>ZTye}rl~m30gV$l2oRjQaXG>RD!n;)|J)~-aJ&#Q%ZTX- zl~0i_j6O;RAzpD*Q`Gt&GVC?YiDa~(U=A898ZO-l%{~@nlj+3*=u7Z3MXWe7#arVN zyK(S#K4Z|l61k5Vw=q={)`95n#if7jx+J0nVug#Zvpsa+?KttBIC*~Ly7QM7&-`UF zA=PcZ>fA`471N z(C5^jSX?HBo^GVLRS{nH91fO1&K&3O-8X^_OwU%%kILkXn$s6SP)?>jO)VoC9QV^~`hVp*95ZAqP=8z1hyoD21lM-6m3ehw=dhvw!Kg3h2KE@9So zpl@(MiL1HnTe<3C4xe7F1;IsX!|SZE%WKLw-u4^6NXJoL0=B6x_$nkorxaH<>~`*A z=SK#yHdZ`)O_o?yszW98{=H{u1@)yG_w;e6VLxzGiyrujH$z1_zzMW_#7I&5TKh6r zH$@ga)b!<%efa4Jp{eG*XK7nE+^y_367sqV+yS^Px9}do-4!+n^_LP{T(`cxnrTN5XvHZwf z-jh!UYI1talW!2H=QyV@iD#q#W+D|`!&GjJ$ZPJ*RsOiH^)$-jEts)^@&*XfCag;W ze?a?|U4O}yx)s-F-{>MVnKWL2cf|%EP<9gkB-U?vX0%_2s}0Z?3C`2}_A0y+oQ3qG z7PZ^MY&@#4P8$)2B3OSs`inqwHk99t%^<7pbZ#TKYOm36v& znT36@<;6By)%Y*(@2_4^FD3kxKJX%>n=YW=5mDv^#rJJ<#$Qdbs*Yrf zSX!H(5-4_SJZv~H#{+eEs2Qe>IQ=p8QZl1Kd@L=gs02iHtatR|YoE6K$YJ<&qLEE= zos^it>RXmsMV!Y`&MX%<+5E-9gg0mNyGjV9|DmIJ|Fa3TIU;vusz(|lDwJ=3K;Q5#`0E-%#uJ$FJTst?En z-3@jG(|>%%Q)+PDUC#wu&`D1Ib9L&wgG>si;^NMtlDiLOhZ4VNmE6W5Fcky-vNiIa zIvvn9R#D7#W#QM!uvGb@co=PS+1k=Y=y%_yTA`SPTB5!##kW&FJu{Sa$|&n}Vj8#l zVDZTw(9yho#^wo_JazWQ`AO*=h1QS2e_3)>RSKt}g>!?Pd042>((p2?pR6^nFj9MTThz|W${$>rzE;{>!l>ug%>$Q)bL+b~iW8UdPk0;5*_b>t+TkbT(Ah4cf&6~U4q{E8 z=~k2qsjnG5cY5%!)lDd=9Z*fY9c;!0N;_+gcfSbr%jSJH6ere}>-97Nil?%mJ~6yV z^BXFM1k@JQgl=>F)%@oSkFvoa%ZC;0;7ca(X>69JPc#KCgAB(#k3MmuY^8FMv1FZr z#c12XxE?!PGhZc+N`z$-L#8uXwJ_z{0@kgtvRGm(EH3*8Mi?v|K)yZ~Bda9oi@wLz z+}eY)2HUch5_g8*#topqqWChenqD$$Xgt_ON+o7yRMQnV1a8Xq7EL96*Vks08jaIr zwL5wWuk3TI2Nq9u(t!Blo-I2VNgbDkQJG5MggKDIwR@co8(2pF@I4 z*q{37p&3#rHSh~3Kw2maJ(00wi$E?ABqaW%N*f{RtVqtxbumRmWd#@rMY{ zn4r;h?m*9RhmXc|2Fk)9-L19cG%nsWKMZ@FN%5$Tcw?HKAo^h=I`eGEzXmGR+nM09 z?EE>eZT@az#4SyS!VH@g1DINBRoNb<_^Y8+v_`D2-+8{*iSj|yn*k%>U(BqC1e4wK zAJ0Ab{Y@uX=3YY0ttKBCEqO%zG7|4ztMD}EbMLgM6NQF3alf*f5sQA%3`4AEivJWo z(oyW9tVg$kBW?8BNYU*5qu8o9-=rIGGesG;NWH=5t^L-ps}PQqM|v7bsri6R3)PiF z@b*XCRhpj1k;OaOqG1iJkN_7a2me~#0OL$yVKvrzTPF;^ZQ z-CD%KTh$Anp^$qpn>6&SMwO6!@)WXq2TB%a)Y&rTas029$c!TH9C$iNs#lSJ52&qw z_%kqhkcMm@jP@K#vvZu-uN#z&gy{JapZ$x^>0I^9zvQQind}D}(Xq!^D0#1%m#)3xtS2G?kR6&D4pwiKWkr zHC?!ybSkweY2l^8=R(Ysa9=aeA4|j*+X&uPh!7t9YoTveA@zosu{ht4zqeqcqLFYe zVKFyPBw#Bjtq|x(&Yry3#_`p{Ad)jSeJnY+T%r)=iT@WkF@)}r3xTpe)ZMPCs@Z>pd_{!0yaw!=7)l#8 z!h&-j1)H-QmzPcqK_w=svq(urn~hJ%{E;Bw&>64a)+i2D?T7qKx!T`O;ny^(cVuoF z@zIvbXZ-!R5PY0hqQu*meTRm24lRc}rM&vObVm)9QPK3>lH@%fi>LnU{{6qU2;8|< zuqCo|w=W2HoTJ?%ej+~ZE5Oi=xjQiVCH@g;C?wdCUA#{+OWh;ujO0uqLW3A$=y$^3 zA8d85+S-<4g$gGe#R^$vUI6`l-sknIGfwB{u(Bu_epXMc@V~%{Pu;@{E+@^zyHWKX z;l#(e;j{y_Kqd+`6_rMUq$^l|dl1__Rn?KWyumja*oSCc+OfXk)^Z}nK|dmvP%uup zCa5HB@izsixVen4Yq9gT=6U(Wfu{2j8uCy{Btb~Rl9Q>qnesLJ2M=>YqsB;jaXrxCaJFo^Y9%qFL%rF* zt)kHgnA2QaM{Z7<>*8vn$T8m$D#<6vld-Yl_Pg7e=7DqM=jR-Ivf= z@>L!Y;Wq}?xIhA;@fpXrZH$+FN5HtpMd8M(u|=fsPM%xR$~yWhwq}9m)8ZT$Buws& z6}W3*drkU!66==?L}*^j11=_UJb(|nx(N7@^CQlbH7ov<7I53fh>d3Xm5&Rw(7_wh z?GcB|gRrw=kOw1V2wO7F-x|!R9XMd6*IXtZm#$($y3!6(^PikvSb~Sp*BGVHLkX6! zf0LchXvodzc5r^U3M`*vBOgBbzTu$aSa!xlG~u9=O@&$7c`De6sJTbpRR-)G{#xA{ z6cDFA`4&t^uv{`V*DReqahdhwVBc8IB?6-~)E;cEcV^t@)7#w{D2Wc~@Zj=hM_Q4i z(n||3$;T*oAT)MVUOYD^;01bCE+QO>SNt|WnzW668e@eS}NC8gVDk8iQWQfYwxB`fcMBc5uYtQgz))+ z?6Cb2%@4v@L(wjzON`J{>Am7FLP}VhJ4_dAa?n#5064Cenioj>^m0v&pa-aa^S1&x zOe}b1dL6K3cLX^GnCSCmkhOT7f{h;Q3lA~?SNC>VTz+A}6_=zNMVa>!)^Q7fvitEY zE*cMo!^#IqHfmdG5DPzNXv!=c*SV>Y%%TSY(WXeVU^<;qdmR7st@ArNwe zEZtGh^_Bc6Id|`^?6>yRtmUT~!iN-D`v7qkhlOyaw%XL@8BzI|a$p2s$%h8<;(iDt zY&{XpA@mtra2wac`*?tEFLikihq#31oLu;P@qkc{C7mBPVz4LEsNa2317ukMFfB=X zJUG;^yI@Rr=L(C{(`ch!m;%S}mv=2TPK#7D6E}%(8anO{QSXDN=9;`Kr1SEBhe`;R zgcR8xYM>Ji{j-v#fV#e#C9o+rpMITotoH-u0=vt#3hu>-*V6Rb&fNRf|VkEXmT6HJ|@>xM5CxGk5@XXh1O0UxjMz~Ev5`S14FPo&g@N&%WU zIq7{rVsdW)_%sPA@h)RH$xFbhpJlX%!{Mk;IJv%dY%)fKaeK5Nvs5Mrc9EsTkQX!F z#oKrDC#2LI0?h>GKCa9YF0qdd3SxcN4x&Nv3h4f=YL}q{A_y~h%d50}Bai6b#HRe( zeA26(iWazj@QeEm7M4-8pPpWBkyV~s7h}^RP^e+uG^`JaYJk9auD2wiT@zB3$8>YF zDgn8f!EkiCcW!L#kxlO$CJukR7j%LJWTAxrdv_fp$7dJ%bKj8F1XDyGKTFV4zX|ULIw^({l}zO-5G#D$D*EF|WeCW&Y7LJ|H6z_UFG(k3 z6G~M*aBq@0l!$%AQJpjkVf8?^)<%yeJK0OB?mvA0uX2Vq$=Uz1f%`8?_he1Q6ju7C z+ux!R)xU^!7XB&y=&vJ7_nj5=_#6m|#j^NOK7W@z)I9|R7;d&>??WW4uX?Y>Q+1ad zD|*k1j$=i9-Ro;8R&441y38^sHXTWG5eBtXM^k0)%nVv{o%E~ai)WcdCz_G=a!Cl0 zI6MGdQlvsQ4q9u~rq3~wA)w<8S))Kj){xzBgKw><0%M$4X1|yt=1*5-jq4Eea1Cij zO6x&V(yJYy`@dz;g8W_=`AZvw>_7dOKi2AQS^eW5H%}2ohVi*==XQT3B!UUUOL(zF z;cCrIz8ZXTKYKnWs23NNSOg;-M{r1oyNKyr35>M^uR;Rp!yJg=o}-C^pa^E1?@pb* zlJ3KmZ|#9s=P|~4yV-A^EB=AP%lr>{!I-e5pog+Ivq!Fh?>kz@iP%LOh9m8%8NFX$ z)9(XX->=mm*nU2MGVb|T?L>kjI_-kc<>LPPj&$4Zb~w--`q~|zdxy)aMXO=8`fM;= zxIqcFSVrDp8mGsGkhot>*RpizMM!I8z-alMSFb>H&_QG8UjlsYS@(c#`W;FGWDX62wZfn zlbk4&B|k+y-zI4w)O7m5NnK^kdQIfCD=F#LVT(Ksc&eXykR zfk<>-?IBVcNJpF{Sz>JKj&p@h=e&L|pO@ld{I!Jkkc$;2dyHs#s+_Z8vY>j-OFio2 zcUvNjO?6ds-3yGy(K{n`VWW;HL4O+#k7P$Z+oGsn&tV|YFs?Z%bq#6wC$-iZS2S{* zNKAp832&%JT7dq^-832TW1k@~t-h@qlfBaglt;ngi9jtvBPj_uFHV@fQo@-b&j0-f z?A^P1@U8+T_r$H=Ub}Q6fHykB5G4^NgZQ|6Q_8C@W^?#Eb^o2a|7f{%@FSV>Dv7 zpd|^NrQ^k5Wt_AX^|R~FmJnbJro*BCX7lo$s#m*hSjUC~Z8 z{R>s6Kx#)b;X%{9SM!hOy<@~bn!hjD68OJ!nqH*d#?8SfWxx|1=N73+KU92tYkjS^ z0P&@^Igx&V_c!X9iL?ARBT|&$)(>zM5xWzikS_1C{WQvQf-Vh&OhTO8_-?$ z)5{=xd$FB0Ajsz-Z&&;u!c-2}tmL3W*dq7jTz2Fo(9K{a?8Q#I)!$`cqx`E^$?#;` z0$ryP3+nfqqQ&e?zZX!mjFC$im+>)d{jpd!Edr>WVTe89T5vIVdJRP-4AD2jnH_-w z8xh@jikbH9E`4$2H0^4f-snyh_K2h;5Mo7&WtPQ)L+C)20{A2iy)Aldj+Aep`oJzl2K@Y?SqC_R_STpZCPYpZT#Z;%w4Lt_4zOH?+SO+3k zZkAAdBbA?ze+oj*P_*dvg&$B*1(DncrH4%{F5pV7C*+37qASh+++_7k2m2GS{!trW zMmKfv54F0%l*lX2n?SqsN#2?K$@4Y%NZ{!8(nDJFMtYCB-(;HI4lrd0JIkw~5{M-` zZQ#9D@Q63TsPg&g+@wvr=TPF~*eH!#w zWl=;rM`SVv*3S^~`NbLOWGDQlCE)#i3eU0#++&jJBNymKxIk7kmkSH)Ib$X5K!|ho zy+5Cf161XAf=m^joT@H^7P|%JvPW+){)4IN!rBaVE5FmBdv7b9)Q*PlrLZ%-#$ z790Xap@K_q*R6V|fp@#91$3)Xvf;*m@@f7)9nq&qSg=wAtO%0)tjPMkGmk!vk( ztUvNk)B2Toa0y3dqt$sx$xg zk&M!IRlup;@!TsUCw8x!Ao&ctMl4Jh<_lPcf4R<1J1|R3&~`pby=d(CYC}C!7`1eFjYZP*vg+82zfBw$ zAObJn@&8(YEr}_B3fF`FagILML-Vj`{H~N`KAK;1Z_}?wvCytv+`FJ|VJCONG<{*t zDBu;?;6}nA-+(IE%vsl7JE@dUrr`bqC$h#$s42dt+nTZVCH#2S-17Gz-^Ze&O;Y^q zytMIqnmvDbT^y!jkxlF$JX@G`x8K!JpFnQjpQNYXSc+BFhp`muooqw2}! z5KJJt_ZvsZ!f`20a$1>5>4eHvJIWON>7#;Ix0m26zT@YK~y&PM_S~dY!CJ&!FJL<&l z|0?1rEuk&J0P{ct`~c6Fe=O5Tj`qxh3{s*wf=Jw(SES!~Y6m$iQs}{w719R5-`sXy z5}*AW^GIZer3k~V3jX9$-WVpj^HSOVh^9j5e*9PrtU#z3ec_7s!jqw_nu3hK^`fNz zjV6^`Bc%)yEy`0>HWx)rW?n()LML6IkSMAlW%ZyE%^k)dQz>wjKRseL^(9kBbuw5O z|8b2Wu`k@<`EWo-$tt8j7gnReoDX+uwxK8HvOxmeCs1Xco^vpu37*OoY3?Q7Il4H4kXKzUe7-jI6SfYlbfQv!44^wv zHoOjLMO{gkIVK|mRJ&vE))QhnwS64PsHtbx5T%UbmvK-_#harn$G>te*6qH|zC)M& zg8ihgq;pA{70lnOJI&`7PXy+^V7z9L3Aiy{QyaH&<3iLj@OodFh|_(W3KS)(3L%dNmwQTw%4Nbg z)gZ-R+?N$}U@-H{pCNMjC?@*ln|;}+!#DKeGW>-+p)5eT3bn8U5kc?R~C2I_Wbyg&VZ z=b-JYZq#5Y!Nf>S>c-c|__L?Pdo%sQxW_fO8*d7(7Ma5-Tn5faYn+9F8%^*=;G26s z@)=N|-cvcm%#6igZ2z77f-@Rn^(3f#fg1N9ddc_SNa7)+C5Yd*ci3>#E_uj~>Bx~c z#xgA@-1$qzvz8{q=cv3%jV7g}4oy7c=htO4p$6Mzut(zK_w^XxBG4%FU`dU!^mWAM6 zXz1+eD*9lIeV92SS%#qzzq7t>EuSQbiqERY`UlFUW*M1e+NLW(hXJxuui}(zzW;cv z=6I7Hzj>KU^Q7_?tG07QQXfK=z_Ho8i@_0om|Whgxk+Q_lxeT$ z>~Cj=26N$g@^l36OY)40XR^9Nd6n7rF10|cKEEYlN?8-pBgJZY6HLk*Na6v~Wwj&c-D=jevfZ&c ze-Q$$c5(OaJx7`K4ibJ1-93Nq8@Dy+|4>Sl=J;@pAyY)ev+bZYx_Wk9am{2#?fLp= zvRgQ282@sUH!> zwzmpS&tEjRe~AzGDyK;fw?8}Ju3R|1(N7babzd7qL%x6M=IAuIn#iB7e{p!v_9Z_L zPfW4+kVJN}F3x9vZS;|@lX!OLx>=fUL4eqgb|I!}Jj@SM&I4;H018QNP~NmTGJPCJ zT)E>pfUfYEE-2hr!H8MJK=W!B(}maj_-?8gy0t%>TM|m5wu;5&2E2lR7?u1L{BIrE zuHU5XNC9B;2HUu7k--w^rEujAvUI!!(=K`+{a))(oI?>BW%T?2=k74tP*{!-nS>#n z#-dEO2eBc;Vd)6PN_+S@8^ubrh5D>m$Q2M%OrMERn;oyD11%{l5h01i!>oteYxS#eB5Y71( z(`iC2+pUGEAT=s{W+pvNGmcXSchL}(@zt1;0E-B^(tg|rkAEc&gGI=XZ%7Zc?9Go| zY!AfSXlf@$wG389eZ&i=AlBlY@Az$M`G_N!ym68O(W0GR+R zn9pM9>7czw_yzUVJRWpI?q;!6KA*}pT(Jkly=w9L`#7##XFHZl<|vH++qVP*-5GOE z`~s{{u`rwI1E`Gt%#q5Ds+Yb^v+L6s+LM}CV6>Dy##Bc%yM=i<#gK!fOzprt9{SJz zM}A#eVFvRq(*CsW=n%h$UDX`EGqYT_2`~DNM6mN5=C9r*#+Osg?pyLZDTv*=sqNP` zt48^0XH&WzVD}; zdWu>ucxMHNL0E~EY@OIxx>85BdC1wFz)Fglq*kG;`JY9M&jdaAtp>n1DP;u_p#y7E!UhBh_>xF$7JznfVTs*Fq_CeuF}IvFr~tkbyqRiHdIxQ9rzs;o0H^OrJ2C4A>s z464Q?`zhiZG$@6yHxAcCOg<;GT`7Z2sJC5urw+xLG{8R#@@}2r)qj}@$oJ={b71G( zhtrAm*UhyR6{d=y>!dTX2u8h+XIN0d@5V*jI{xIV_j{Jk>!YO#0ERz87jq;3`_myK z>L7PQsvv&eaIMGO`i<^Tv)~u2=?+1I+DJrLpXcV#C}e$Dw~~Y>P#vZjCaYqj5jId2 ze78?g$1g!9-R&7Rtqj1I=Aw~7W=L!QTyF83$eZf+$lQAmxNn&BOMqHB3S$W<4Ex{5B#IA>vPoBM%d<<`j|k@2gpyNWsmB*=)U>#~Tx?`R9;N7| z@5wQ*HZz6tX#a~IoGakpu%ui<8OgHw=BuQ(^P)SRNQwr*m`hb?=N1E~Dy8^> za2K(g;8g%7iy>Ngo9(F`@qJKhp$*3*9(r|WV^6k&oBHwRmRpe$nE^%23)G2O(Jv;t zrj$lEFNyIf~R`9+)ueN&j>#sN`#+oixhaAx%J)$gRbZQkdV52OBJ+41)KCxU^9CBXR&7%ZUxrflqtTCRICeN#_>Vc0tF11k>93TdQ-VDJtwS>BD_A!xcYax*Gc92HKn>L!`#0R7Y>$Maky&D z+7w8efBiuRs8-k+1C%^(aeG)Zat7I>`DO)E?;#6~fhKccicy8ODfUyuz%Z`~0qm~o zsdI|JZUn&P8C$e0&4}91H4@eYx>6NL)$X5QR);X0EA5#-!+!!e>o3Vj9RX^6dGG}K z(3SZP>&eJS(ot`{_eJubMqhdxIZr0A+FC!It3Uj)a)UK4{}GT5mL(2{`U3T?Wz zUOup&fhhQX;2=t*hvwcu2${oz@-(={qHykV6)oB&FE;}|=2Jr7ByT4pn0-qh20&{Whg1Qf!jf{Sm>@6}Q&q%*rA9BBDn!^6S<|In3kd2#ygbKSyyc_6;m3Ep` z3V~GZI+YlDcyhlcWrukEHHJ1pSn#3YzlG8}5f<4<(VYu~2(#bWe<`%rSTtGa>zl*& zbtVc&PPIUYZU2cC!i0_5&#a0hhO>=U#{Tg(Kujls5?gCPKsF)JmJ)$wdXgs=vrr>w zNae)F80OB+RP8!f_3gD%{858L+YDhr{pFf)96Jy~JuH@P#PInv!#!+tA^s~q@8=TM zuMzsK|FRySK!1p_?Q_bmu|8ZfT!?j`xcb@s;6Svi0e99W0W3ykaOM8O?pl&O7E{)q z{ew)&oxoOJgFWT;yPV|0&0c7}mR;3n?!uDq^NVM+gF=GiT_W@s%Uz!2JPtQT84`a! zd|wqD^squF!&vR5=nxFZA6JFs3HUBy+}dudZgp78o>CydtmeC@8x+di z8-rdV9+#=KztYnljUvoB(H;p3(YU$qc;KZ+u#>`G-d$%qC(v<_+k5}VjP8U+Wh3eE9kycmYu1 zTpJdfL4>28kRx>j$Ylk)yrznV&*w+w~)ziFI(5$@hWM| zSjPQPp|(efAUpdLxHQ{uCbEG3S_o@46_;j!pp?MJ1Z~;M6l- zP`@lMiD?#S^wW;S)p_JZ!gz0xa9GRJic*Q@LC2QpWa@kGa)h6Sr-AW;M*jgLPG8du;rU1Z8M+;BS>8=wZs3t@8hVR~*oxn+ymJ05~^?i%r0SxnOluJb?l>45*W1kVPhwt^+KOvklJ?5q3kql^87p#$}LHNOO&mgVf_c5_!M-Vb;gHRmn_>~ za=~Gtd*CC7!^d|Wybw%kH7(Ejam*?buNDoMdN`veq%H2#Z|Qn~E){WB=Nb&s`D1s% zJCAFy1M}$+OWbRPM*fs&)%7JIyNKnUc)aviRPpVl+Rkh2a%oLlp;M9ec$ca>YQ{hv z)}bPS>9lUhB61;Wtwi{Pv>j_HA0&*^RlHTLM@MqbN^Px5!n42flM@LH4Eaj_(j{eyS1@0uhIy-SVDB7E@Mjzc)V|?iFA=6*)qPnEm>S4r zFOZ|;4#mo2qJ|%-^V`6CQeAHj)ZP{s&F52>0fa4AB+! zrG?FjSTrpTBIXL;;!ES7u%g0ay;`!hS3L<8pgdQCZBjzm2c-M&f)|@jOC~18DyD`` zm-2d}$Ghe%hf1;*qE|Gw8JVc7zowtE^kCP&jzF1`cN8f)ihN>dB9%0uI;hBPsrRQ+ zyA*`x)rSKav@)zmN)A)UqdBJ~ZnMCN_=f`c+uzB+iYV8Un2oV#PdK=hF~dG7W zjorc6`lL*$*;ujbW7^dm5YYJNrwwe<#>KavFcDfV_VT9l*13ehm#kDR3*o`^!=U!q z8}y8wV10Zbj{QoeQH&p}Z`Kq7_diy5j>k_YP)lBt@=kaHC*^_}m~Gq}t4PdCk&el3 zRo|^mH_b1)?~C4OAf}N<2iw{zqQ|+PjEPmpz(Fj-(t*40$^TvMKs+Q(ysHoIlq(ik zaxwNRKF@c1-acl3*aQ}QQ~HGZ1YkGc<@!554TBjlWjIPnZ@>z&!ET&Ug*ETb(pre0 zqJ>fNSWy>}J$*|?BoE864|@fjo4J2*q)f=&Hdt`BIVLH z)E+v-WLI}??e~Fs{~kDH{(y#@8ME0>dO0fV77KjA4s!3B~-tfP(RIC%BDdmrWe@Q$&2k@?7 zG!!k!c4@>8Gy@@mcG0}J z<8~nYHj96G)6R6#?|CqOeQi!Lp!hq3&V5;UkT0v}QEm3`^b1A0A!sb}rXwE3cT5Zmn|OCT4a-y%5i_O@k5=-k+v+dc-<)UcRxR+e@mB-z22 zZq(WM&E4(-$YAjuO6^)VQ5mf1xTSDL8TEhfNo-Mdc2tyR%_E}@9u~$sz6VV&;Yp2A zF8(sHdNx#4tSWr*_xiV04M(3wKd1)_E7qwu8VjE-5t6q)K+|(x4w2SM%0Mf6CX0@Q zMAPrFfLv63voiY@k^p90u;Y4&=)%^sjxuOQh3ZSB9r6s}RV==?qr(WKh&>BcqfN@? zDo;ESuG|9>zx&S*uwG{&ez7gg2k&pBzsk}!^57hPrfOy^>MrQOPOXiKO4H3lfrfQv=Yv zx9!Dov`Qug>h4jHHDx@0B0n;d&);Xhy{!t0SA-$-m1ETDFZ`!Yev`-Ep1$ylm8pPO z*0TvU23UeUfUW#G=UV{UCDC~~u>hX$?oXR2P`Jht)$rJ)Wqlx#SCj!*t)*eRD; zzzh4UHFB*hD*~DX7U*nrN0d0bkno8mv&Vg{`z<)#D}Y_5oq}GUENAkMoOm5SOFGJb zH;wqaU@cmd+us_^d<|T3t`86Yu%m_^dBR;-G2A?K@{o(Q3fW{tL~f)ib{*|63+PT1nWB1R6Lp;EPADY7t>qm22;l+KZ$UUuZ0A*FU+yfoF6Mk2oYYC?9Q$8d&k9N z(3r&#v+_e=M%&t0H5q0%Nml%uQW+zYU_wR}q#_kjr0~AoRAyS-DOV~jf=7r27CROC z9zY3QjbArkRK#$YpPOoK)+IU6Vw5JhQ z64>agYQrTf?!v!3mMO$t`I>l72YW=IoP*+C{EL|xMM-^RAXzR#b(CBGCOss|H5j_% zF=ShcVCnTDkg(HEG6!y}G3$!vVj1_1?y3O|cp4UJKh|8ZZRi+O0s*F8;jO-ZYgbnq z;i3o*UqgP?RZ3D%@`0UKGu+)(9Uh6w!$v`YZsgD~{l4plE5E~^ku-;@VJ#}%z>flk z3}~EWG8UGhp5-;ze#1TmuG~9H1hV2_O5vmHJ2) zZmu1OjmV_&e^qH>^YAtLV&J^)6cB!K`m$fI#M9?(hd0A$Sf9ZyEnZNx7O9!BW?@?L$O2u)HwuL zYm&=FAvpi91t`mRJpEb#)Em|6b}=A%znnz5BA-bVEh2DCfX}3_=y0?GB*Y0<8THPX z@>llb#-^qD+)R@#L{d338y0Kmj|!sh4^-;@K!5X<%W zPmk!C)uOd3_tnDBCGhsnGnFpMVpa%F-vBqlf=RQcLkqZ#u}$|vxKl|AWux)+V2oQx z!fnVVo&b*(t$Yir)}LDAt2^qTpOWF zuD7V@sg}lE8%{ZM=v%IE6l$1@g%vj0#$3)cB0D>Qd(!1Bv}R}!Tx|8VP++8)U}lQK zZoZkYmW|6d{(P%@%0}=8MgEFK69Ik&(gAy!$XjLRMdIMp(kr}i^zqh#;0&$OS5PQsVRxyJ&(HASu47;2}- ze>9L&=cy>(HSQ&hdoF6@B;U>#>!XpzdwFU+_b#xY{P)Q^s00Nm7j8aJV3r#hd@UE| zegJ5BlA*mCiPM(5DdxeAvl}!;a#Jcif^A%&C7OXtZ!H_KtLY#ujt#D^CPP8-YUI%! z2~X9YBlh4z(5X1rPxVt~q@(p2U(NhsKAhm_tJ+fKI)7Y(=HAb{jX)mC16;}>9ct-1LMH>Q9%keM zH_K`F3ODyOZG46ypMEjN0-m`2>?}GQ{&4WOZ{vh>;n!L&WOYQ|-brD#324#gs48rf zELZ#sKjhFZC-oQ56zbmDk1zZas@@_sS!YPY#n(CVPN-A zfnE9!RZ!hgt-&^M)m}pSf8!=dxsTv`4>{SVHW+` zuzu}Ud%d^X*I70`Is>prUFNZpY=&Hji`lgN=~WvMFPD17?_-rjW!$DHU$-3bZsGtF zCax*Hc5}I6o8{kAi48w$1-sS8xwVfxXfCGw5?-=JaWe@5g~Y^e_Ba2vhE4YQ4(RnP zi;g~|;B%F{m~s19=!DfQU1P6(mc$r8aGwyHD35<=ATbD1Tu{TBtNgL64dpJp``s`l zS9z&vo1{k=aF$N(tI%ue66BTME~)9J$_gmyXnN*HO5LB@A7G?LEcf|_v!P`MSoF~X z@3a=n!UH+`3Jp8>d0t`h=cjB8yTUdv6|>XJffgzwi}9LAUs=jAzjEvro7T^9L~<&j z{P#(rf;k}FF(JfHD=rpd*jaVh>g<8Il{>9cDtnYrw4q0Jp~=rfLO{!YvFF2?d^|Gh zU2x?os#56+5jZ{`973n&K2=KL<{j3&kAKNR950(hB*epn%#t7Nmlncmx&IV^>O`++ zkGMWf?WUgeGZ!0-fGm>@LU+Nbs6R^nYfBr#j>vzBOhTSjA6pgS=g_$x_A ze@;rFpE7w@PQri=ps*<<>8rF4#E(fjeg4z#>D=1F|v^xFe0vS%OrUFHhU(iVS8-hkJL@j#FZDV<%dy%^@F^U$u z!*BtI=*&cbbOI*oU9C8KK1ji;o#n9}2dE=H9@s;+)8%(|ZkZy5j(QZ760^oy!7l!h z-Y`C7Af1{R$ZS+P%{b@eTZkjGt@P4mBSR~4mk*#IX$a%+V4Pv5UBclN6yx6Y0Nr87 zf2}_5W3_kS9Gh{ILmg~a381Vu!1lm?jHlW8R0~@he1@U#$Hqhl=_-d;OjivK(4^rE z9*tR5JDGIc=j4_Gcybc6j?ZT-?jaDu$_X>mrSAT*oa^k^aCb9zyN!M!NrDehwH_fL zvA{)s;JHvwDF$6HT;lP&N7QKbc`hOf3f{gD8rAQKj;n=A+cu1v5BdND5dy{;Bn9e} zVruGOXR7k9*KpP=p|Ro*B~Qjjri(B`lPd+YP9R2kd}VVYptRZrsqbEbm^sZaKEAj% z`HcelGx=PIYYAm)@})tqA>Sotr`o>8ce=eV+O_X@(YiO*+J)@lx0YICG015;D1ep-K8IO2p9? zefnd-ObVs0*xD>|AS|qd*{qK=gz%TxF`2o@BV}M`<<5KQY9gg zs#nz_Um?1&KcP-^ot4Rs}barTy6>I6v2G2>?M?{Wv(c1jD%6TZ^ouYN{fEAv!) za>G<7;Mi@|hjMXt~v@J?(Y(PH}A3Q4>~ zN>T|UsaFmp-NU%ZmJ`RKI)@qO(_$xrd1+ymr8++dc(^isJW0tvHwm3^nH>#ARg*^0 z(cLuLsbyL*7GQPh4ASnX5Paz(XdZ1quS{Gh{@2IMi(8Y0^frl$xL$T3y`-A6@yt%F zJz*rcRi~Ey``9K1DY0znu~+`9`G7Y&TU{25oDg!eN=9dSuxg>4xCsk2G#}DO%1d<4 zTh-%6=vO|jic!*z|JLPjNasZ^wn85{W~t1xp`trev&h^&he8hfLNJGCTihA7GwzRL zb*i-*V$HSh--!W2D9}d*2pX3U)()IpW{;@B}sWNr#?y#-XpWL zlKZCF9zE;_Rppna=GdsnOYyT1Fqvj(mzGF-%{%`>8qv|-fP;hUUy;m=ei=0FnOh{Q zV3Qs8mMMx;OgN0I$+(v@zp$?dgm zKa6B%?__Ya4&}Hw8%FdiGJN$Egw&>Z;JA1@d3%SveV`I?p?xgV5u*3o#-pQpy?Z<7LXpr)# zvUs}6W|f5NCUadG>LfE|wyLbuF#7QurtjijbmV&|4TdMEI;yJi zbXlK|!2@Nj%36drH0mM0a*cB6shDfC9^#JWC`oTs=!op$9-dnkNEFcM&T6~^ zVx_VnRf8S084R!TtY5;Y*XYi@Uz$Xo60KW)AxLETLw`=kR8m|(<{)0vZr-W|e&>&X zbMr9r&;<-usw+D8=}IwK_jDKNMa&DyxRxn!(wWJtxwy@u#%K@jw-U$X_atnSE+=l! zcw7i0-8(zgmsH!De}DmO;_t(1nx@vi`!tvcAXGbRKJmYhN)fale47%02cFL%%P`dY zBc-f4^ynQY0~6J;Z4+6Y{&MhpPUkB;;qE0i6S3>$)|e=NG#cO^aRwo>5u;RG;Q;#?PEcuC**hKh zQ9n#_h8~11bj0;BXe(p6)!pWs`meWft{SWIM_eP_kLaPzoWGK4R@OpwSBu3jZ{a*k zlpproYZk>@sKHF=1s%`4b=Fbck`q?iY zcO6EWg(q+RXv8U1X^iPd$yuQe@t(b8usKKk%5$@IvF06JVnRfi@3erZ04h-3_mP{1-m6>lH zbc;NgVIv$-2`YvW`+fneiIOh-q#;jLSLX_)c`Yon32tf5kAu?Y$ewS48RUD1{Tc(r zaD-u;ppKtu>K1!@>KEp(|G8jhSYwnf-*8CUFM-hxVJQLpd_w)>B^Img#WEj%`n@ni zf1q?lz5uNgxC*%DsOS^opct))bptinhPiEb7bg?UMRC5*TXqIeE7PD?N7$X5F@;Tl zqfeqpw!;p;uk?It!ck35HQF={%0r4XA_Jd@Ro?RXW`VueM^5(^L+`>_FSERazO5oH z1{Ouu8={!f5`*?!9iHh0WE06_@X;d^8?i@^7c#h8EnRhc0>c4JVh=RKd9a>NtG;u_ z@(JeZyHj3;bv*Y(o#nrn{bCnk3Vo1ie7Nw^nXp)P*a@nf>I7}+5TRPVzN@5mZ}JUI z{D@pi?^sGSyfz~_*TRjaKSXtBj@Q`~lI9a|-YI`Mm(acdKSyTc{L!=)kS`mBXnO(3I7tl^a0b0Q zK;47V4uK3RL%zOW_+fR|p+~fob zwH69@iA?u0Tz_RCB*UjvopbiqldAKRqPZI$Rk=68b{1_AC?!f|_8+%E;TOI;w#Hky7uj9wOTH*#^zRVWuvu!q zR7i;lt35a|8&~xh@5m-1LS`MSvtM5c4I{}0?s!^F&J_k%I!&1kBQ;;(DU#vvvRCUNy*m&v9*DJ6JvdRbd z{Nzylyy)od zx^2O`x*IBHzWMPI)%sV*y%;mK=nQqs9tYX-22 zik$}fVKmE<#C$ibAb4`#lHA2s;`#HC4AqX!+QSA{l8u{5pu!IPJnz;zM`7c=+Xhq~ zb;eJT*eQJm*eUC#vu%{b)X!A&D%1Td6K9R7XT#FaISW~6KDXtD&1z&`=F`e%Zwya|u?kVn<{L=j1ChIGVmyzqv`rIzx?_BWybjui5sHJ8Us=Y(O{g5sPo}eeVo$B5#@5akT!?5#O3W>9}gYise@I zEgtjOu`O)2GVf!bW({A=GK_AF3yv4Co^=w!S)BHS?V?Gb*$g|I%{-@iuVc2ZnlaJcPa2PiHpv$i9q z9g8v(SwDVe<g2&wQx7uCm@MW(a_ z&tO%s^w>LokHE$6f`M(WMa;U0CyTd4Trj^UzjBA(Lo+N&8CT{Vs6oR?1)%6oeNw_T zEM9$FwR#&w=h3M)2MZEhDweN`;3rFMzQk5|MTV`QTvz%p88)b#J$G-)<=U-J%OtBJ@tW^Mvdgru| zetqKa&9V5iFzG$N>S1m71bAdu#Ni}ug1v&_z_Fi*qJ%{IW#ibt`zGXOgRfcsi}a7 zHPSEEC%+H;o;Ada+70(^RM9^^qtmHQ(7<`&=*XuRWOL~Vb`N!*EN|N}IG0F2zw%Rh zNl64lb>!dH%Lfl4j{w6?28q5mh`yt&x`QzrD2z+J|7JJSDvu++!PW0KFL6LJ4$91{ zG&nD_Mf;SP7g)VBpshIr>pju_ODn@TqB^JoCh?7zj_j+2keSv>d2erYrb>Lghcy$uV#$%-uoG(*HO~X;+$v%ToozZ6 z9G#jxA*BX7vW(|0)vReIjpHHFD(JuMj72~lNc|NFh`@nZKDoU7$FXG>?2iHX8>shgE)AO<5p zlu1KIC-a-j>vv+F!(cRvuV=jI;T8rx?jFnJ*i^f6hJ+gErM@NOr(da@2};I;t!>LY z%F3d#D55IkMUTd(%ST^P^59&+Gntsh9UB&zQqagxKh-jNGxvjV_m)&%$36}oJ@}Hd zRyo7H1Oi7busp446pQ_0d}d(2)P$78I}+sw49u^Cr!KK&#SFgB?rPv?>_}W`dee={ zq!(W45hJqHHcxp zXfcbY-1G=8LDAd2(!&84(mx`LhZUgro(J5oh8C$cgHNxR|u&aU#U{m(G?Z((b67Im+str_i@QiD16}!`WLlT zQv<*nFd&(bsdK*O_-61|w6Ay3geb1tk444gvNtpK?>l3jX~@sqnW(#vBEXGOhR?d* zL;V4x(uO-%Y&#x@-{h|)L`kkCq6RIAKwncPM8j*AAw!oEKcIFrt^WA)`R9bcnw~HY zB-QXp=V|Bd_6(AkhjU>)%2GDSxTDesnCIQFEtWN^x5c8)vfZ(M4Mxp+*r~^9tF8FL z6DY3!o3@-vMT=1?M}v{JlL|d!)#>bwJ>+GQLrwto%lI*G%fAHg1V%IfV(m8p7#~9T zRfto-!hFg-@OBwiW{BlReQAI|!}|`wQ^{?ZFS<9E-lJr?bRe(+lk@5KFSgp(Gux7< zSE!@XDtqgUk-7sZl1#+&qF+!dWXB7f#T+%S(Kk3IRCzg8FJRn9K(z5B}?B`2CO zT)`HXUU@<+LVs|3lRC7-t}2B26-xIZDk`o!;(haafYp~W@_YWLGlr)O`zn6^(SKuh zpT_US`1v=V*zo_(jZa@c5>CiJBWEoizZ#IDSU_`s{|I{ey0O}>7GUw`@q1-HPlXP^ zvE`4-SI&=$Nv>;MC2vIN=V|4i&TJ42N4A50_9Kzte8?t5(6~PzOg-{`CXZNk4hsh- zW_8k^r4;o839sa*VTr6Ng;)~bFg3Ta7a`n6qltanj><Z8+QF@&A6R# z_$iUSV`9MV=7zjCty&`b?4JI9$mBh*KFIF}beBBnvgc?J8rvbe8gYlxtJ>kW1iDlH zoo7BUvJB(uqF)AJL18Bn6u5uyx&84&531%3R7|{GN^=|G`*+}#DAWQkE!!dAl`^w= z2ehSgv}-ucr10{qOQtZ`bR+C}KOWg!5W&fO_r*U>h1PtEayHw-8zoE1g==Wb)hWl`KYc zPfSTkt&auikw@jZS1g6FLbZH4)WElxax&Q0T)fILQjsXeJBJ?SOJfjQ7%6Wr7+r`m zSHNiU9Ya&%kw)I=?w}~=gY?Lmm_WmkR%(R+r`9X_fvB(k#&s*x4mjXAw|ge}uAX1| zVTN%pBBoi2;}g$i&cd8ag2JbnK3_gqfP!Qg7>g^3c7ebN{Ku2+!K*QjDQ-o^;vv89 zfm{5;VFknYxGP_u$KFUVdjr+-{MP0F=3k+nETE&`@IiiCUY-s5_VHt3cLfp=>^5)9 z^f?6=cRXD_yx+FNL#Z4+6xgBllu|lP4?i9L-pO@+!|e@(orWKVJ5fFcrnV6$A{I_0jw=0*8pOs-_jp# z^h4sKRPX|2&fX=wfRjSt03wLKK^rJY>7-u@OV6n7?gWZID^?NIkF_+A_F^Cg@~%DO zE@SkJ3DpOm*f=Jbcuzz%q3V%OKDjR*JA`TLkH-!$9OV6~VlwQ^|NZ*8HPaQr&j2Si zokxzyW5Et0IWRyGve~~Y(-68JX&kd|ETsY}tKFnLO{J3zPitkARZNuV!aG;ZX~qqd ze{}rP7evxZBw5bbIHKE}s_I2>?xC$d#>7L>B{{AdS(_qQy?NiHrKB%p(ZS!5SU(*F z#-wWTCPLO;j8c!V>>6Bl4xqBwrt++OjJN5sOYtz@=o;QtdF`l}K=XkWsBgybz;f}^ z1`0rmOfzijkVv<`jZPCZrUDAu2!zRTO65JEYz5=$J`UTzbs(vA?MsuR)gL9dwTcNY zc!O)0-0mnQ&0*y47H2YRlOs`T#GOyw@*?7Zh!f820lSOrcy)zoGK>Ez9xDg-R97j` zBS_%@Ls4dw5kE9u2A~BD9PKoSXlo%%hGe%z$h5Z8qWwvgqSQ-1X_+G=SNr+7}a zVb;|L7?6_2yfvCy@B7J$V|hJs@zo^SwYVIk7SoIuWYheUvIX(p1m}#sC?^ByN;-9> z)Va@Zi{s5_wb{#$XHdleysnygkA>aD{kw)wj7c=}hc<}cmBnaAma+zUmc)sk3cq28eCyxHhXY=3s|uKy4o>|dSnii%^S>uamBgn@b#<$nL4=n5?zoMgL{~3+ zW#dLJ(StH_u&1D=%n;hb*E^L;Oq~5;iiZ9a|glxPE=Uz6|Q4Hc% z;f)I8g@LPnOA}@UY+lXuEu+itr)fK^Ln+ojB``7GZd-eFM{WCzS_rcSpHezRHQDWz*ljCD8;cvF=-6yg2jfPEHH^$T)INMiVj%EC zio+D*PIzK~GdR2%Z2RZvl1kJU31evkN*#>8JvmW~qt43Mi$77b9Ms!1zH<50sXq(| zy}@m^`SlTB%1i^UbGk`dTKP)ZgwD)EN1mK zOjTYNVTA#5tST87>n-I1^{6IW>9{4qqs zutQ=P_e^E?N$J(go#6aoiC#=ZEf|L23=s5VJv?L`tieDu24Ym@_r@7qT~!}hF9N=bN7~b}{2fTp2ckIv=LXT-AmX~2zZkIVqICCPGR@Sz*i|UQa-F*JC zqbCLcjYY<}NuPR46zubIRet;sgVJ12SA)fPI(UTwz@9uyN<$lie~vC+#b9|BG%c8y zKcrOCc*=f?QA+|L=L>1I$-Z3?w5l)wj1P7w{`OOOIK_~Up=X||Y>O`CVfSu{4#qt8 z)|8?G1vOBXD{!xf#e}ou$ngx{U&jPzUw2QC?Da7Bx@Alu-{B%W=&#n_1DvEudzc<~wX0~b>+ z_jJq3@8z0gSeBdk0q&>+j_LzDDfYk^JI3vOxM6S*cO3S)&t`Zr$vzi$lnPc_cUaLK zt_iBwWxCI=;EJjGOv3{=@qob0{@kyg=XhV_9MgUQG!yI9@pb8^+xG8nvc_VVwt~6R zE|&uY<`XYvK!=B7cDSR=Gf4uF*LkwIWSeiQ0t5wH`kRoWi5cQ?z5^e&Jx;J?bZO0X zu)jLfx~?K}C#6)|kDI|hb+)=nC4Lh>9_#Q{qV@BblgvOu{O?Csic2ko>2$iu&qdoH zKdAlRcMFH0eqJFR+1RAzbGMeQFVz{*)rd{=B~&enwC?rb{-_cUt!P;08YB4fbGPN4 z8B0_cE$f^iQ4F7qHLM>sXE2xBp`~foLEoTT{lQ$V=}2f~>u=l;0E0_HDL66cu`na( z5oHLlC#}<^&RHCR5Bh*pgBQf0sElf@)+mI&6&f2Qr<_M=Tg*JuXuE{98;nc7Np3N4 zh1Lu4Ftwh3rU8|(BUY^UPW!_!AQ#}&bL48kI!$XVz`F|!bGi8?WV5;E!~z`WF>b(2 zW}qK#&TYd7sj7!i_#{kMoI!rJWz0Q~v5m`j{66PC@-KQ#?i%WLPw zCYPOyIDgmu1;i5ltDF!JYezKBgGD0U%&}5{08lv?6cj!uEF8l;<)()bnJAFPGJJ0w zA#=5cXdQ%oh@#kJ7!oPl2;@0D{Q18B4>qUhm+Ph4$;Y!i%Wo{IJv7roSmq`r2EX`; z+`y!tcN4fZb6Op7RNZgFa%V7Zsz;dfS{c217OA*h%=uH81NywL=U=!)^n^CrVV~1h zG0|Sc$9T`n5QO3bY?}ucHf8Mk$=NB|UsCmu7gg4y!J51oBO9U^yG{*jx$JEX*vT%0 zc}>_FXblf)@q;xfk*jD`L3H^;icFz2;T*{ION8y%=9cGWPFu9;poy^m<|Ick1T*2> zAkyT608$V**@mYDLGGlrE!~;J_TS0K?PV~aOAF_DNsbNBlV-{u37!-%ZatP)+Wh6y zTT`*rnVaY^?9!*CIAKnD4kx)QLHm+^8fZsMlZ<_S(`B2i*apAT4|?j94aM3RnHYy? zCHoBiXkzId+{mUt55`fY8%I;hdI^DB)8KoJRh17_?Mh!!fhy6vaie}K;+gox&%K0m zu3`7Suw;A0&N3@~)xF%qG6|)#EydglPJ19uKnYbd(^pdKXu>|&h3$?^p zskOtS8Q|!cXf!RZCVIMJ*(nOD^nt~a{R0taI>B(9ZC>6c)!+a(iXArEcT}s0JCt+Z zJlNGCezs}h;PYgCrzLp`Kpe}z711#vts`}sgI={)6HP@MethL&#YVK_Ah`3S z`UocIxrU)ADA#wBQl!l2{ON%O$S^QIU4DH&5@ibY{Y%(g(?9*zrXSxa8$n;{mCrm@ zE&~nyXs==YbLrCgD1i}5)sA~E88*N0H5;FyJf_T(rb!I92uenQ=Wh2!1q5A2J>*N* zf)##Z8$z%C5;{BMmFo9k9=og&5S>F&PZF6 z&wee~WFIqN@@1{o6#*v}ZIYgAC%|FowA9@e40HUc)Wkb9Wh(Mk@nzkThIFZBcBfhd zs^#b|Uu-a?@GM}Jl)~d?yUwILxijcD+&j|7**vs$RLjF^CAD+R-D%QCoSN94VNr7% za%XQ|Oap|@EF8^#bD5U+%SSn031c*aSftRMnsfw29_hqh3{?m!1%r@EEB!4}X)R@P zBex)R>F2(*pklKu<5$WnCWeQ=m>b}T>y|p#Ug(f=p7jXdfJqOlC>rEV(&+>v#p*46 zayp|9PkOdptY~0DLaE>Js@m#SYwb|)DrffbbK?@OF#w_Ye2J@Ro^stR&mVhxQ75Hz zFMR!U&~tOX0SC#*T<>{XcL=;uI=V#l6T4L*(q%Bt=BF(rm(j-YCpWW4P11atcGz}9Z|IZ(Lpf)?K)<-=3V3nlx- z3gG>=pzbPc&j#UHY1HA?AD?gwC%w~g*Nv{}>^o}qmPtqb%=o_`prW%+vKDorbKYx_ zlrEn5;{m0%la@DZn^hy?aen^1PWLLKld`sN-g6B9g0e#qef#wDyy((K zh?9KPN8$=ylB z>5_eyO)FZWKLP4oKvJU!8IT6fVG0}368lWjMA-Up80X#R5p3prPVC7vR0_K^+J)UL zXEBw$8sFuGYpx4H_~p;ROFBG<^02hhq~}x1wh83TFUsDl@i06r|LtY-Bk+nm;@L>8 z)mRQ}9VXlHs5K_FpA(B8kc|QSp?cnpR_3$*Sm1Ul)odhHwOLg@tO|}VI}jkM+tL`i z>0?sZi9ptSpIzK{ct||CMdFD9-u@$OS@_ce^W4p(Lbtvj2B~>2^v|2>`|8vmhFeP+ zAEr&?wyl}$OV%}qS{mqZMcc$9ma3lLeLjsT=9(gWo2LKae0u80#)uxtsH57nvy4B) z-n>=uvH0hFC>|wMO<2iA!W2!Uk6DHfo0i2kC1b7NaPt+L;|jSU_RsNg)m%YV?!a64 ztCeXTc)%{v1&DZHVosUh8<^vnCACy~fBJg4mOI8E^0-9k4Ite|M5GY>R#QHFvnp|L zIg-*c>1@SKqcMhl1acy0A3-WfSHqhM_y<8bRAJhK{2TAqJNPFC$Yo?_4vplauO#uS zVj6?M-c>Z@=H%;fn>lQ$cv#3nK0k}P5;(=GMIHIUu8f2-v9r|#YXQTEEj+s#xtJ(-wlutl zTR!51H?8xXF=KxM}R5{4f5PsLoXBHE&ik)=q=TVv9{hIu<;M4V- zfFVX~Mu+H*2c(bYV7=k@L(?BQI4SfKazCs?@8&-8eh&Qlnh8&f7l6a=r^HX!^X3vH zfN>**LV8E!KM_FcIqLD5cQ%=5!%UL)0*<{|d!KRF`Hq66q45d-97511x*3ep&ktHriI+^Dd);iul<-Ccl~yvh zy08&Qt&EFELTA38>v&$vSBd+*Vd^wp6y2Pv1brHC;b|-Y9di#1gB+kA>2~W-iU<^c zi2e3|xh%`jV?&GN;?&{SBYC62%AizhbCM{Q7sG27^7&?|_n=`B;cQw2xVHeJO zKiBE2=e=EPQuO|XKl`G|(J$4SQNQCXZqxEd3?a;Js}ks))-*n0TkVSrdUh_tTz-g3*Q zY3fubiJ(ql-Pu@J@n}_{ceUNahq9(Bg65C$?Geeouhw!TD}`vl{}4%51ijj?DQj6S z+Ek%xBHi0SOtne`F+ z9;dWwM>|e4!8&sqwyCtJ=DHwgY4ynGG@($$1H);eD97AZN6BCpJKhOn*x9t7du!KU zJ7Nh_yI>(alw6Lvk#YzZmptL$7L>^m7)Z6@AdL!!SZ+`1{9S|dQq}U2@+I3L(a3H# zFMAWoF$;>FxA~ZD;(|Kuqq@BW<@{pSLO~0FZ0=zTWghqb57_4^NS#U(Gz8gJg>;r{76Fny8B(uw9Skl3dU;8@_oC3@@}cp%JdShJZb) z{i|p&%=I2Thl*IJ){wN#pWJl|dqq~=@ZKwVirVtipL5qEnjnrY2@Z5rzTX?(c$*ac zsH>d0wd%CBdeCWy`i>-niy~oDHOcr(j|6d95$UvdvCir~GVL$mZh_(}Lt#6_5cp*m zyNs?CLGR)}l>{=+OZ$VMAFfbs56^AD2HE$5!<#hr}()TvaZsm{ry6XoKLM;j1f&sa96mO@Rns6))Jc*G+V1#Uk)8e0=$CTy}U<}9SpXX?bYLChd zIQ}K6tsGyLgUwJLSN7;Ogt#*whl#~dTim@>dD0tWoKG3|G1Ct#rw$5Y+kQ{mjoyySK=9n8Dnj#YBd*l?4+MrA`%W$#Ghv9_QeCSGy(X59;+!c-dK+MzmTHq@z^& z$potzDd=UVUsA7eo0RvfL^)RC2X20<`)wIww^pX(W5u6UZWdIMaPB&|BZ*`~k{NWG zuDTn6_3;~rhT0h&S+GuQ#04G#f*U;36BE2HBaO)<(~12A)TU{PLwqKhmVFf20sqCQ z8LyfHDavb8)|5Qr3OxqNZeGW`+WLj=NNFmkdnGSN^`BXy&W1F0H{9v zGoGkZyMawlE5bxU_%M@Ir2+2o+T?88{2!&BGOlme#EbrEi$a|0#0YN2LUnoQVXcgW z8jn&6apH@4F;?e}{EPO1dRam#MQ3(7xCqh&B zUy61q)F(m#2G;PKUMu2JGG47h^|1g0tyhcklC)=K{Ed zJV`G0n)g~Z_?@amK9?kLD~Z_9-QF%!?T-s^h?2vj2@1<~j;HW=oC&v>ekKkx zg~=u(gDh8E53^8wz6;3{naX3dwyTUpuI3sxay3aQTH+EEv(!hcV>sAsF(Lr8i}LYk zz?9gone-xGaLuTOQ8kFg{@Z$DZGIasrD35q?-VGQ;sD786HDpv%Rl$QVciYw&%pu% zP`UPg65C>)nF;9tTutIfCgirh6Lj23(n-=3c)CuftDa&>=$W-o{M%EB;z55&%|I%P zW}X$44-Ps`Y`T^b#iP+om#x-GA0U%|cMnd1sobNYaU>pI^n^{xm#8ma|tcI(cT%jv_=2nF6LH!`XVd#l4v!s zUZgrEnB0X|Pl48JNJaI7fOWY5gLzDZgGsQ?z{fXgm6)Zj9ZQIw98iR2Qy)0`C_jYc zR1@%!OqCORP5>MbDGcgqpkHC zo=-oJX~yUJHcR5aG^5Rv5A`Hn(X=xhv*&rWrDP4V9ZG>fO{s@6OQSv#nc6O?i*~1zFCy{~wS03Ds znx7G0W1%Tsvn6NWC7k9{E&Rci842iPAZ?2dO&u0IxEi{LR)dH~gg8Wl-zDpqcAfrn}vy+YqIVfJ8vz%xEb{Y(}Ftvy))$i z&IIe0Tggv9@Q-yMYWUF8Y~6Z)!o^5BxBH}JI-1u0A_LWOMxnV$H`{St=YO$0nxCS& z4!{(z{qQ3w1l0OaK1N$A>Qn{0VP7HFX|Q@vSA`~bSz75i1*OD;hDLn%P1Bn!{=9bz z7LtU>ITxr*lp;toDaM1ehECJP94>YBphSKQguiBp6t7U@{%2T#V{h~(7MGQRpnY(= z#8WsSKJ$rhOm95X;~Abq!|O9IkYcext~M&qfhUWHz{1n3I7cn@Dhg3E$QLK9`6%R8 zv%@{dgGBc^$7p=pjFpWUKcwROi~8t^S+w?Uf3i!987Y`#^L;Jl_@**GHRe z#7$?g1bJCv&`3~JAy3pI@NjZ0MOOm#lx~a%wYbKp1hShv6q=(=@&7wfuI%Puo{4x^ zZ&rRzO1yVSv3Ey*mt71E^$Z&JL%O;GwK+sjK{F9WcE-`)^r3h`i_OZhogbF)TW7!- zO^`#hv0*1%_zX&Kry1Fz-9tmESB*MuGP0r(>8Hyw28>dX+SBaN%D{=NV(eWQ0h0WR zoaTi%nk^RDiL2vJOR?+&Aw3x$*#@mqTvN|qNpsi?ZJRv{LEoCEKZpAoR=jnGOu_KE zYTbx-#58C1Q7vQFW^A!2+PNO1hZU|c0~o+O1Qm1ao%DrS1=$=XdR`;zT8xj16iS(& zCu}-m9lkx^Sfbrd|ABn+-2t`BQ#@#yV@mrsT<_T8tQ|{`>jFu-xvwpk!10$%)o>g! z+wgqdl0|4=+CU#R;-UI=9^uW#s`GZ}Tv~W%C3fRjw-{;CX}*aOuV_!chPV0Y*)z@r zoKKZ@6P0{i_s?!_(2J$CF0&2r3aZbXJ@3ID;!(8J4UDSE%J9B_uc#Nz*qB%NujqsG1`(G7dB$V**E|IN-kHl)qsmws$RP)w>q2I5-z{Yj501$X(lGKI4-hjXp^l%pwZrO_IbM-o= z!w%IBqB}?n#DN0$uN905;vIlv-6w1Vod-UUPWx`C%5%cE1(d73AGezg2j8_kJaQUH z!d7k?6!X)tVRS-}C#IIJ8}8vi^FerEu$ax}9meJ+XPtIbbi9PN)dx-LW`7G}DFV46Dd^1?)vhyLkyKH$n zT`xF!+W5j|e&1ewnj1Z^iEBD;vu?i+{}XCw{=#IqeFv4Db;muSv*>RcuPh<;K6X?R zj^>8Dhhc7|fKTnvd2EXgPjt<-X0iefB`{WKQ@QDN>g%sj1hG7WUL0djS)0r8se*r3 zkPlwfi1U9AdxCd8tT9N$H1>luEW5~%jTtvg2?7iZ>&`p)xJA#&j|_O-Fzh5T>P|6^ zDhU67FF?|Ys(sQ1nV>boZ`yCA^L@rjzi)x6cFDl&vo&88^qWLMUN_Cfxky(+#XjJ% zVwbnJP3;M%`?hHm!#$gAt-iWNhxl@UCI<9M41F zL-4TBqSTX0B*uZ35e|h5-4?wrsZGz6Shl#=h6ozX<$w%!P#Q+8V1T+rMJYa>A>@77qv*2%x+}7W~(7V|{q>m5-^LZZ$xK0hbxQx7#>< zS{~MlIQew0)*q(;DtGs{4VG0GaqwanJJXsf`VMx%R|6Vm-3i%m=!`@;Q~Ms0&53JL zmrna-;+Ug;;sZy?8pam+w(nv(K2LL?NRD_oG-$LZ4WT+hS?D9;{(fh;qAfVothP+D zEXGmAqj|;t1B_44jP1YcGI--wZt2yG{N zEK%*&xDho)i!WVt9yg@9s#Jk~bu<0v3D&C0Bv9G(_Zv0Cu;c7!Sv4Q24D*M@&W;6y z8wU)gf0kMpYb}x0>Ol-komvU~b%zrfMMMmy2!U3dQfAP7UEtbMN9H-0i9Ex;F)xB+ z7{N)7*sjeZeAuX&JE{I)tNL?kp;Q~=iKr+4`0lUpG(^$eQ2%77a`|SV!uX9%`Sy5AW#$9g;`ax?aa?Cj6TmMm3Yr2&P-y9J z{4uScN9)oug?^VMM=2l09Q!qiHvhxj?q(2pf%$hKevkbkm)>7wz)^Ej= zu9+u|HDAkb#NW&vVuf$qJSo1Q-rGm$8xX|2>AqJnMBdjqLimPs*++7-(U7^L4p-ZD zhzx_#(blL`UW+z;yNx*NG^-vgIa86vOA&YA2I+JIr58o2Y!GlZ321R#Hwfn!JgSrnUZ z;!dna5&_i@lA@3|&GyAY;gTq}Rsqv{q-VDuC8M{B3l`?OWmT&o(ABh zeAJ__tEXySxd?SoHPWtveQ|qm-|DCvnfYn2<{&Kvwim~p&p%MDgb+ytRxOnLm<1Ay zt=M^7ullm8uvzl7ss6QlPwsfU)$28(GbJhz4+QKM{kfw9E_tebSNcD~B~3@XhhPZB zu#Yx@+%gCyHpXir1*dyyVRuqQ6|a}4l+=`kTB5@3Pt{RMc^Ue>3%F!w-tb*I>KSE! z=<)xQG@rjrIlGxmX?JYB4CiPN!Q$qwdrVw|-9#L+&E*y0KX5MJaL?%Zo66s+*W4%$>KPWIs7LCo zQ##P_J=-M=0BrcrVI4M!y~%@0u?gN%(#_KJL=53#R!2!1y`&Hd;IlpCrVvFXKcf38 zBKwk3&`M~y`CG|RVa^{{_b6$Ou;^Kej_bR7<#<3{GX!Evog?(JoNx`}KWi%9j9k{} z`$wS{xyQACN-*&nZBNCt6;9 z>2NS#8^W%qd~fg^p)bDlV@=qIL1Yzn|Bwv3$eoni9oaHg{XKK}=>`QqE07ij23|q+ z)%!$#4DDS?Mbu@j#LJ30&1rc&tydiV5uL!i9bm)PYev}ztVK)QuQp5965_y5drkpM z=kBvSTZb{a0}%k&Ir^iy#0q9IkV>q;J^?WZnf%IG$ibe-FGr-V>)#sL@$N1hZu%I0 zcQk-{Jem$0xuSDEy(+ceboTaW3jTrr=&ANpI`8-j3f!({(^`@7N7*F*Lb_Zy0H z9{m)-&M~2jj(6)3jaeZyd-={ECZrmfj!#xcw`H2{AD{1$ku{CMwT0fYgf!cqbQy;L zyvH4qnRgr$rOUe2Hsb_4x(FaYtmVwTv2LT6lE-Qlw;^lStzHIw@f|c^uu#%Vq}Bth z;+#-%XWn^dG$`8h@#|8BB>jCe;pO2qUXZPws_!MS;3C+2mwD`1cWXW(^@DCrQ#ffR z|1dQ*PqDn=Tf?4&W}RBwC{t!&~~k7;M%>`}3&9PLd|iFhN& zTh(#6FB!~@XcvNICDmt-6581I;z?RZ+B#S%cs(Kv=gG55;OR@eT8}{SpMHzKWL0n# zB8@kZD@)pW6BM@nRzAI$w&9_m0W1t;r^2;H)hUE+n0vd|!(%bCN@M^1As+;FoGmaT z@TNZ5{+PTF!TaS2DF`29ucy)gNRuK))C%vYlfdVpf~mnCVn9$=`l|co_=pA-%fnTu zjoBiP&8h@O-*96m_5Kq`cs^RnudBE|^ze4{dKpSAWu*>k<6FL5At~Nz?nD_=LaL3G zJO!HVRU;XvJ3@x6x-2o)0VYoStDH&)8vL)VoZrwps#g2;tKZ)cu{XW&S0meV&qHPC z>|o7?N@9S3DTxlCk6ipySKz5h*I<&(hhuv;lAnm4FWFkJrKp=*IPE$7(3ko~uS7pl zW0cGv&h3)izE2av?VU$dbTsE(QV6NGn=aQ6Jr@-ViHx+f)fYmjOyX6H%_o3$g1_H* z9s8dO>F!V(>0FfV zM!LH@rKF^!V@V~Yk?tjyuB98K7En5+8wBC~b3f1Xep!Be+Bs*>nYregYv!!ddw*@l zsx90{7*$P?KJ^!z?@m7;ivN&7VYj@5goYkiNRkHSQzx^ z(%$V6O94Cm`kD2TleXd}R4?kI-GQT`(LdhAcnfH-)*I-fZV+=(z3QmCQ?U-gLiS2{ zUncX7T%uldoxYK&=6`Kd#JDIbpZ5s+H@{SjqtAprO&5XOU>Sgkf@Ovrka+O7DxV4; zV-Y$`Ka@FlP+Z)8+(2=N&aEr~=%4pb%F4!xBQ=tK!W_&#fJ`nlw{8Vwbd>hS?X!Q} zp^Q%Q!)X?mk`sevF`YuQ4WL&T`}rziD*46)icl`5fBk4t=kCrk5@flhF^qDWd*1>G zx|YB+O2vuyvqdRYYoKywT~`qmjQF+y?Jf4_idFkbTZu<==}i}pxryJw4zUAJ=#e7d zWf>cUUlp#4KH3>-p^a6pQ_w1LBieG_P4QrS1GtJZ+lm zVFEfkW)zoL>{8#EX00>(S%+$D%TBt?t>~^uLn}q*=EvpSAamZ8d_A<7aOJi=H$k1E zk4pow+zGRUTOb=*THumB%^f!wY5DP%#Uy}L30o1T8&c41svES}PwElX<2bu5psrmGw;~3lL8S%iX+)^NBX-N) zc-xVa1UpmSk%Y1R`1aa3=AEDVAMuwu^PPiHFPxW#`-Htr6{1eRsfhhd)3i)#!jbYY zGYS}a-GHhxPo7Mns)0x!iyuRMV(Acdp$Ybx%*coGTcWyXkM;SCtF1PY!l5xKr7D|D zLmt?lob@YlU6}$S6p+I{oLyy*GvZZgcr*%ItD9qH;9#WBdXtTE)RJzrGb0xT4zz&J zPh?TOuNRa1_e^EdIq7C&xTqM$22r0}w9~0rY$EYB!xH99F~T>N3vAbFjfU_)E=gD@kH6iROZ01RY zgwM=ghyf92;Ld(NYEK=Q9*0L~RFimqpkX;gvD@Dsn=Xc(d6_boDR;?am~muKk8mi3 zhyIz}5=b!4WS36O{pY2ulL9<5;$O)-1CiBAnk{vBsw%^Vv+9wHoW;Oxew z5IqYyQzlp7P1Up3i$$kmNoQ9)PBAw0aj=)jam;hvKcL+THy{c^bB1c!>;~6)Hm10a zye=&=$Z^lHtpC12$Tb;EN~`q8IJanUUKFo{LEYp(vDS`df_D0e$G8XhbmTN_mjRY( zCgT|3m89wZ$pKoMWLz(K;fl8vFlz;#QSc$P1(^uIl-x0@p??~F!RnPCI4BMo0L*M( zs(rR>yV0Z(o2-Tk83EzH-zPlb6x}eI_L$9DwRnrnQH8rehT8vbHgr5i4i@vXdhsZt{8(d z!LL`d=Inok{05YYOvB_*Nd;};AST0n>tzR%c(b~rH+S#GdI>CGlRv#LHp=p3$;lwXX@tP%{&?rpN1ckjdZ& zA%`p5r+hv5P`a#LYASG=j19BwOU?tCe(6x$f3;+FWUECME{PQ4%^$uKHrwzhb8vko zP;oUtZ?(_bPs24+P_e1r%{tu8f(??{$E)-Zv3qo!OPI~cy0dZJOr-Dp3)(|?x0?X^ zTHa_K!Z;A(b^HvC66h8gwyi$Gr)S^7Ce2FbVW6DoqBm-6PW(HEw|^z+iFqX}Vm~C_ z8s?I#P;k=mY<@=SpS)6RbFvY1`4D(PzvqEE~U zI-^vQrW=CLFs`6*7YRiV2UI+mu38vA-u7l}S=nS6zImq|bqVUlrhwO&aHy8rk{wmr z)JcDBWC8x?6_EG*f|I$FfD5D+?>nGkDVg$ddb1@qgg6*8PQ05f%Tn(^u*m~moA^a} ztmkQY` zY?>U-3$Um%d6Y8{%Q#I(k{!#KQ!49O`@cEfuwhV9Y*G;=-ygkWO^@5GL6!R3GkYYX>U=JT|JtQJ+O;M_SfwLcua?K;2@!(z~ z+Xqv32kP;2_5w&|Y;g7_&v;-*%FwD}(wyV2)(Hj(XUcQtGbDpDX}K~ss9HlFmCz+S zKjcpRX&HngJp`=B$N#xEW_l9a`` zV62K8K`T?ukxvR;EdCgh|A-Z__SOutSbQNIjCPVfu-$3y2{^hI#{XlW3wzVAf;!_(kKyR=i{0z@c`MmA_4eFT43$c+=*bC9z@G6myw~VltIY)}|U!5dS$rQPTcKcPPPJv6_l^F!m+**)3L~(huS4TVi8Ufog(uVqtrK=W@3RsI*hiU z-7q;Qt2yKf*ULLBCWSF+03{#eRa#<~nuED`*xmYIAdh$!JNwvRxz#c27%Sd-#nJu$ zH$@wlW$1oSXI?cfg$5 z&m@P%^(Au|Qb2e4I-|?D2l?lAxvL-yLegI{cXDWh-;*g61VX+@AxROb7itsf9D)Jd zMGSyj@-|NTzvzn;*UC(ryz!gwVy@zCe($F#8CzKYk{hlitRpZ?yqW&Wu2NYJo+S^_ zGj?dR=itJ*$x89k3-_6bQLdB}9xV9syeW{Q&*~aPoG(P(oRE%kgc+?-t5VYx7)<&~ zDYuAiNM4z?eRFS@(~nhZVd8rAWD-MKRgWyH@cxnDnaa%?tcEybS8(OFI@jVUhPeoc zS--sSS-sb;2v??(?jxy7G)yc}1G7({mwyxh-j{P6|1r0dn{zL^DBYJud7K{k8GD)Z zc|R;h>2QVcd-@pvDlpmU?{FcXMeEf42<9`$!hvA!|NP2tY5?@UG0?MKITvE`J=4g( z=m~OqjR07|u=936e?@}VN!2N-q74aG#szJM4ckLSIjt6 zdDh*a7#=o8K3NVd9@6dgS>CQ>s()c28cRW+fm+XePVuMcLjP=S<9=Jcr?Zy)e5>A$ zqqhbpr3ZAfNAC^H-|3Ci^EJHz=?G<{4`TaHC`K*5)8ofRlRS2}hfl|9a}^oD3mZNh zNJWKXF)HCbjZQS%*+1M+6}lEFI}mOKm_hkjl1L0xf}B{=(^?`ny?&6I5fo+x=cIe8 zsL(*ds5t@mp;XHoYw5?D9J%4b1{Sd1*BSN58bdSh!`=0`jW4k{EO_{b088sUQKbc& zc<`6tzl8j;cXr3$7mOA7;#mn3wnj0Cv9yHwqk#;;r(lHe44xaQvOEL0D_gm|wRvx} z;wA+FUYEN8pd$L@?AEG%LsQxFHFUJs#GTdI9vWJgt3N?wn*x;I~cXg9`E@GR%i7?I91o8GTH}_bO z-FGGUV_bFc_Qo0-bZ?|F@)+C$o*uZ;1;Qc|*ThxCwq zss0uPlvzfHdN#BmnZ|;^XWw%T5HolX!8b#(x-Y8Nxg?nfGc2D|zLZ`uc_GCVC=k2gM2>H5FKul>u|Na(3X5*IhYA z0rk1}qOXs5itR=tZ{q-m=mL{e!Y(|6rl5hma?m(=^7o2z+@D2J+JU9ohG?3sXf81o z^GEZ%fT?ftCm;69uK*XXmqA}v$2!o5xWZ_-o;gfg|1(ay^f*n#uHR(m6ds6~Tlni})f z!B=8v1a>>4n~ZWTD7h>hG?SrVNRG=6uL_N zzPU_YArQUt3(uo1ZOls6E0G&*{Uv#tu}C)jK0>xDTA5ODiXS6D_uK0#t*Qm;u>}@b zCa*CG-3Zfn2~g=l#@DsSbv2m>QL^;ckSpa#sIYDXR%^(;mje`1OnvgE56k*@S+y?F z@&;RX&5~?&j1k_Z8yDwU&_uHVSbuj5m2{kaNHMPhm!Kt0Qi+KG1?k&~TwReqZXNf& z*2K+rm^#lE=72dIQJ|5@bV)Qar1L~h1hHAMmN**krBJX3KRWJv1>Hl%{s%7U^vNKn zH;|=Acng83(XL2Dr6|@MOxBBUx1TVWQT9ntZb=w#Ykw>*$ettQa&i3><_BmN)1xxJ zeRpy*GL+K9NYZRJg;RTB%@tY_5!VjOtKAeVOR-cBZ64BLOgl2WJ`HP^#iYsfdDiuCJ7ZPHS; z@@XhhTb$=d=VQ_IPw%xgeNNt}oxCF2q7p}$_8yhO=3m@sW|>{UwaF-0Kf^j#^j-9L zc|kC_Z(ogTdPP1j(DEPqY+>P-)3>V<)kDsJ-5H})mP!&PI|1|zyb8)@TDJ+O!$_EkEerW6lYqgU3AJauespy!9UyA zN&!Ixl=JHAnM`p;DDvOLWnz?z37zOZalFm_2SVR{cV6Kl;H>}G?bKH&%>?1%C?yUk zIsNrPJApcxE~4v{zI~F)nvxD+ymQqc8ew;5XcwRp-{JBry4#hOiurrt-B~{hIz}rr zXRnWVfq2bKc9u>B?RxOjVqOW#3XO#AY}4-~p9GYERAlslaUgs;bW5w~AB4-<%>r}G z*wE9$pzs#?Dy^16zVEiC`*luMPa<5J$&)c#^M74X4x>5wSY80oe}%6^kLthY=wk8J zFl(1%#1z)ZKb&4q_!7ljbjugaK1RiWufz-xoGYqv+6SO`=e7k<-(ku+T5g3%3_Z-7 zY*Sc^&B+I*owzF4FqW=ev%3~<5!D$YjMPz=A1%{Bh>PBI6ozq!vUg?ln3piL=BPu^7Bo= z#H_r`EzvJ;UD0V$nLB~8ZKDNkHm7sI){==H{(9blkH&AViq2N|>T@&_Z+iNP86)@w z5pWz0dkGZT2HEtIQ4^SgTv`}gI>w!E*i-nchZpzUakuEF8YyaR`5MQ+aecH=D_SS` zTxei|>!T6MZ@T2=j!@tqHRKJe?ZCj=)WSou=r6PolkUd-AIl)s-no{M8j@iN)2eVU z!aHK&L8cMaZrzmyl~L?H;V5d=-Jd>9oPtjQXipS8T@8iQCv+w3DwvLBm35jj2CNGVbC5UyyzN!TnrE&Fqm7$eb8=M*$OorVe zO8ZuJGXVNtL&ENfeZrj&SusHaY-0(FmXGEM#`qvaF}$5f5BmoC#^_Vg%y&+mHDncW zEHbVs6s7xQ_0$R4Wi_$3$2j!4ViN$1q6g)NAa_>}@JD#JI3nrjkanSYby$49zwbso zNS+t4#DCr&b}Kg-CM-`_SA-~^t|=|5B!57^FW&Z%>t!bJ8~MZh_e2u*4}y#`vX$7( zA0;Ng%;N_ywMgG`=+WfaRK_C{V!RoaR8nLOY1i-gs8d!WG^wJkBj1Q|F6snS$@7F| zQ(7DoJ0d2jmY6Mw3KjfQyAT-Wi?3ZzEb1pdv{aZYJ=4X|elfkyIJRn3`a~eU*ny>_ zvP!1vm}=Gp$&rl`I23U!ns3L!K&xGQf*#D@S^J>n#1joK&|ypIl4yOwwJIX3NilhH zy4oY$!5kn-+?C8^%8N*%xyJt_nd5j&|0Q?aCF#0F3Z0Q3Ao?ZV)~u`ee_8;FR>%?g zM2bceJIb$DXOD|tzAZ8pO(bj7IMq1so_KYK*zQrUk@cG2sGQ2t` zMc-eyRL>~$7Y|bkV=yy-JS=abKEzNEF3%17rRJJ`f}$2}Or06maFd%x4U&`f1!5kR zQ*Uiy=5&-5{o~D$q@S0~(UdS7M_<`z^U`(z% zbZ414`#hdp-ySzoF1PO{JBkL|UQdYQtYMK~JdcV=^$kkXTU`{sru^a85piwBTG)}+ zeDrhgY{5~X>_p1%b?b#(?u{k?P5y2G`mS{wr@)eDwG$@R7_Z9$d3U29!)F~WuOxwM z#_;}+O7)+6aW^uXxE+iWo7|4=m|P?o`L=r6Ly)(+&%HnAaY>i{61R2mD`Vg)z4z(f zZ5rTk=bYeHA@@o|FVrs39?lARK-OP0vccas+?tvU1ZVGuDgSd6A0<W^Th&A&XTGODq> zP71hWJVH|mtKp)?J^m%q;f7SfJ`RWNW9&exxbyVsaQD@Kza`<$y~&A?YkUR5f*;nZ zkZ15RBJl$yH}QH~6jOo+!i~joa{|Gh+h`-Yp@vjjT(@HkV9> zyhL8`_Zy#X}{Q?lKeQdy$O+(kktb4Eu|+Bb{maAfJK zozcRa00nQ03=l0fiR7q!r?3$Expp2B;Y(Vu&1#C+EQBI;z7UG#Sa_$ix?_Z}MLqOn8_`dV_Q@H=si`*_vmJ53=*z#X8iT-> zlQ&)(4^$fLoT!J)%&{IM+dR4vtL?;Hk`FtK5vva`m!`7Fdf>s`0_4xj9)1aBs4kKadZDO1fjP{6nCx;B*7$c)IwK_CF`K(@ zp#8LB>Y6;7Hsov-4!0HADE9c*{M1W6dw= zem8!DwiQc+TrQpdbaIHidO-{GCpQng-!(+cW(?=5k-3d@6|qIY@cDk^`#>2}vr;pJ zKgBq563z6)2rzf=ZvBSs3wm25b2fdg`w6#nBho!zN)B0W+OqnbE}Wj8T-!-o*4d(7 zOLa6&P_Vl5(dmsENu)rX6(c?-N5Z+cP|K>ajipb8Cg10;QxBCWBzIYo!HpS+2c9v) zF)aZBaJXk-;dt}Mbx+@(mw^()B^sBAW*zG8gtW=dacA_V*X0p$f_>H{uxpdAYvMf! zxWK<4V%VqitDwrY2on$Xv5IaAd=LKB*WPGGNH%1cB3|ftkFn~RBq34f?}0`50e3YF z^*nZ8XK1l^GUC4sw_^%*)ni5_$Au_tzQ%dM*|5Z>7DlC!Z;Jso%vIlzA*9E!^b^Utu1 zj93|H-^su6`@Z&hb;ziZ@^gn2u_Sb|?1+aHZ*RvsEt%W`3ehd5vhT#goX>B@PHD^=j&J$L)32Mx`0~TK^3<6OO&uyl} zMy(`qeaiy*o|HutLA#zMRa`D zWE1V&v-S10uLxAkD_a=5u*15LkEX_RXdkYPR$jW?>Hv_Bc4THsVwdE!9UQJ4(I&4VQ9kv1{yF(`j%2R$+unqQB1({=HyQ+*0;xo>NCm7wm{$yvJ?L!dbdB^b zN%DSN48$fSh2GGh=Q&y0uH5oY1EY~9XVaiTm<4yF44CAjldh`YNO=$6xf10DB=l|5 zMXa!dA|EyIxn6!Tz}VD>?810bfx-x13z(-Y)+A9k1JM^9sKM%`NXEXHc^BC@CV_aS zBW9G|I5w47Oit6-SQl!PR)HBeZL))0;`twNH;->mQ?U|-RmOy9`n5nlWiRA0apkO zsHZL6Tna#=PXA4jeW{_IOeNm#@4Tqk4RtVoH_P)w8*udKBoZrf3&f0`U-sV>j`)u@ z(dmz}C2DsHWIZJ!c>GCRG7yk^{o^-gw(&7CqwSBjS~fG|cOhRbfaYgsw>SEE{;JX+ z@@X27zD+WEQ8CPAChc~jzSIRQWxcHrCB!zjGv6I5W!c^1dn&~50)$+>@f0%#)=1#x zS!48Nv0R*VN6&EIG^}i!SXevG5!xeZ*ez&z@4FFM>OeYEZn;<)7La!<`{0Ov^WDOT zqMl4P0A}Eoy;8c8Caq6h1W$1VB2yHP8`zjg$U9fTy~GZCx&^nd?DP{?o7%zOq#tjA z@>AxkdaBRfha|Fg*hd74WvOCZFITN4X@Kz+%p-K;iCH7aUyLL%fvjUNg}BPbRgk{zW7iL&{N6(KEwe{ zV#i;?#|;LigCr4si)UGeDlid>N#a>9^ut&#c;4efd;HmH8hPp>eOz-Gi9G~R&(op> zFS3FgV}KgrNAH2-1Cmg`RD={b4jQ{uRcfvRfMIIGX-7EmKfgHG_<<8we%|q-M@ctj zVT(@;%g7)84))PDqRQ4u$vnqB9?(QSt>lAgX5?Z1!zV@>=_MRt$++u`Q}GnN5QoZk z5_Qp7T#QUQAKv)&E}XUOsed{1Ag?$Iv~mf&E(VD}EwFbnwHQK@7kZo*mgLM&b%2rR zzRc(~*r5(-97C^es-h{QDTK;aC%zc=+)&|YqINN?G+@LR@W41He`(xwH1X=}3Jh~h z#nB(h^T1ucIh%`NWUw@IZg{G$Y69YD!vu{IVasBvnx5~1k6!I-ZFYT(R^QIgEn z2Z0}c`Tusr-g}Xm`&y9RQ!i1FWf(*5m~6GnO4rT{e)D&U{Ve?mpG zim6@8Cig)xr|vG3Pu5!}fjp9#3Au*VH`lM9xYt3>Ckv^3_@0$eKgvztMz`4a#ZT#L zdgv`dWu0#Zr1ol6%}$vwEtfkVXU{WF7{;jWGNM5s^{MI(4jq-l{S`iv1Og5(bjgp{ z>x+ETw7SX#p^nvgd02rW7goOs*J}m7Bxr61x?0)j&4eK0j*XWC+4-vaB&5yLk%}suS4>urhH5N|kqa-JA25*-exGTyo8%stBXC?N@QI#+XG!FNg z7b_609V1>1ny2z@+m=_x331NuB(y%)J1@wzo&uFt+>-RVU#wLATndJo=BTeYWG zESz|=tQ#N77d`AXznu0HtHqI*X~GXm3#OigNCsjoT#Q684{_qEkM|=|a#Q^Ad6B(j z{KLU(WpTxgJ(ykP58%t+Vrunx3sS(>(lE<@g9$YZ3EpfOR1$z&1>R((BKaY^shj-R#Zv`v+rJlzZvr^6W}UO4|xF)N+~w@d47OpEHdyUJ8GWAcHrR& zSv|dLdB{Tg<9!a{p11mmJT{TOA?`M$Qi8sqJtfYZ(V4Z7{R0aY10vp520&N_1#4yC z6dg<#c4Qp)U`?5XgAjL<5sE)2Iv@P%#Hw(YLWVa+&d&ECVZL`>e8nu%V@R}BGW5lK zPm)M>Kf>>${*=D-P%s8!9@H1m0%b zEUtKYI{5r`K>W!Y?UrOw=^y`g5@H3&ZM*IqgUy@D>v0=M&h!b)MO{euk>kmL9=uvo z^$M<4qIFvYa0IUd$u@J(dflt*%&eZan=*5`V$TpBVT`mXzDtPU!7CJrmEr(n?sSqE zY8TY=o2XZz@Vy@9n-`iQ-Syf!sHVC0um+Kfr41Y9u*XOyhTdM+F>@+B^xB)m3u7dJ zh<`>d_QV1?@qZMeJiAUk_B&PSC-4s6wkyEYw`qncN&uaz6V&{A$aERuQ|bvoQ-PBqm4B&S)7 zYOLvX`k`09FVP1s3Ury|E{vzqp1(y0d|e{BVkhf-E=w53TnCmMm|ecVWh4HMQ+40W zTy*C@E|UAN$fSGI!TcXU{ny_EaSp}0mNml`UhZa|sstU@a_%&sE}`IU&(wnuAM$BC zt4@GSZI^8xQv%UfD$(=}=LJ6US4Opz-vN6ZvB4MCg(H6rUMi&lq1HEy#pB4&?hWZ2 zu7)9oBdOVOV{wV$UR=&_LS8! zv;*ZI&rW``?j7$6L;?uG@{R4?$&vD_Rg2JjmrueIQqHnUJz9ok$%MO&Oi#{Reutkb zO)XGjuC1{wNdq{mZ%SEm$-r+3(plY?g4?(sc4}gU*;!_W0xx*bFFwoNBy#=4upIMd zrH;Lv=;7Lq+7U+8`}vJ^L#~Mcn_rP}QRlQHw#Wo$Bue2f|8r?Yc~enT zYEbu63N&lW^dzpbS2iT7e4>fW{*-ek;F^7Uv}@P`pHqd@`g{UwAR z>6|%1u8M72$}@T0QPWtaH?nJ^QdY5fz9fA_<8$Jfc-B#zMFA5vW+1FLGmc~8>MHY` zy0Y4LBTP93+`*zz%LSpbwu$|xnF%!M^KZv8%?qW%?=HI0k3YQ4_p#LKPBnFz7*Bvf4YaP`9#BvUt$ z_b*<_H@4X7m?vxq%VX7qmH#$GSxr`qp-u458cgr9sqySPT9ouVA7tQkGX<;025m80 zwCth6G7&Z&M0#J-lrS9a+2Yf1S}J;Sq{GJxqS+Y)|r2)lTEZ6!r< zNw_W+;rr)Du#B=L5L;lH^acKIHe@{Mxcs`u-pgQ5`V46)SdR(Xy#LfS&BGkOBt(!>n7 zg@4+|M(AtmiB+CJzU_iJ~H$l>+1P!NWVboxBjJEhcdv`EXfJShsd!lK_5aZfijFwIr&`h$ZL&VEmxs3%hD%vFuK9=1m`%_;7o6_T`;tG zn_>dN5)b+XP)YgTrP_q%ZJ&6rSeAI}O^jp7K=+t4;|Q&Hj$W}N#j_aupi0wL3^b!k z(=nN^6_hvTBcG-vERk_Ek!Ezle2rV0-y@;}wTQ_C^Y!{aWU?$^y!AffohysqhEu#- zpL2mw8n_*<$)O%7Cw)g7MNK8EymAfk>G>KNO1&!irA$S>$#V)o1TH$b8lxFH;ak7Q zI**HLHU)cOc*J|<6|G`k4e!8VU>Y9xC`_Fds{OpPAcDRaQSCEQ)?1G+!Zkv!305>^ zq7!-S=fL3WwZ?plU}`%BUh^y{I`);j6FmEhDTN(C zIROTgdZ|r;n3Ep*v3d2N9sXHcr5`drzprt8=Ofn$wmq6|Ab9FIB(y`3AX$k=Bt=SK zrkuppuIT&AB^0j6FSC+g_PO2UkAnEU@MnP)q-06fv3vTFAhSY-DH^_C2(Hw!sT^7F z?bV7etdcF48^7x8M`g<^{Uw1M?{XphyKpQK$$p$($tFUpf0_SAxCT9E(ReSY&%2!x zsIuY!-Y@C}BdAkRH>)HDW>7dx;T14ldNsOK%Hm=V{0!(9gl}m7qjLstv&$w)0qGJz zMbVDzhE!0y%%~REseR$rN?e5oW{o{yxWr&xTvw;Cbqz8$?;I&j zT_y942*sU1^yhU3&wc-D;ZLGTSbX~>4ZH2*++X^gf?mue4i13LjbJK_`TX(Mk1T{r z1!;%7iC}mR-8jQ8 z%&UK^kzNPY(~)lapHT4}wSygOmLYTE5_1nL9TySWzS7*s4 zxQ8YhDHFK_2$6UNNrG4Y5;S{5VDeJJlhz;$qf}2_?2ZpSv?G>6rj1OwKh|t30XHzP z*Kq_i$}qXMQTGF7#S~k2p-oehH-x`d;c@I(J}4IYYGPu$f^g z{+`OsY=_+n_n|E*ru~Nf8?;{X6`*@TNe_?bF5g!4Va4dp1BO=sk`i*Y{@bO$e5TuP z8G#J0%2bqVz>CJCMWlG1bLSX|Ju!k!P>Ga7aQ5xk;AImIR!8>ho+qiWI}oR=|BDl^ ziTg_J zG>w&Z+VYS1hlQgAS#7=gtOmF4JTqr(>{Vl6!{iMk>w-CND+3DOK|EyVu+Wmq(czo0!@&FJTv zqrOLRW$vqlTgugI!2<6>u2u5h`C>l(V}9^MSZpu!g_GJx)`FiXB zv;Y;UX=bZ#?}$MrQh3`gZ(zqrnvNxe^PIa%{+E+$e)}?!iN-6Rr`M-QyK+eC8p!aw zUu&j!Nz_h*ke0{0f3G}`*qKDa+m=aAh(tmG<(M8c`VpS#r&MYBUUz`Qg`HeO+BweT z6F*D)o|-{A&RNp}<*au%t;di@Ew@*ZCQQCWHeR``KPo%egBfq<4j5+`bq;xk7kFEK z=;z;cUMfLYE&wPGgy9;XXO4aN7dLf=4Yq-^M53u4@kBNKx%^}R1;{Xoz`_&vhGj3S z8RizLWiU4)Qdqy6&hCnQGtB4qJ5pk7>W=`87|B5WZXL^4z9V_Mne_`oF9N-m&;E;BQx80Y|uDdgFDPMa>K+++_lCfvX&*-cEfNY+%MBu7B z1!J6%oRZp;$e9n1mc*{bUZYbSN^0P)z^06fh+C1?C>80y1g+5pq`7kWkbq?yzo4fH zn)wEf0mo|b_q_vWyw`bM??{XV?#G+V{#ksrn5JoBPeQ%$4Zr)|c_BK}9~EuBt$kq8 z@u;GwE_qb&;2|lhu+KHVw9YcLD!#ME{O*}O4L#DEN-F4IFo_#Nk%R)XYYfqIW^+(ra&@R5D(p3wP{*QF_ZNvIhTeNwP;+i?6yJ$W{xfPB}=t}oFgTb637 z-Rdf2^A_&yuhw_FAa~2*68lA~!|pYHVyh)$;Yx6>G3d7h;qqVW-a_L&4#7j}HZVwG z2_Fj(H$}K*h8)G#YD!E0aSO1`blx{94C&R#`Ye4H8Uw}yprexXorEjVR=)yctUbp~ zWI7-pO8@H?K0C1VA&&*8Y#a-P=I;HpG`;PV!^8oCCm^fK7^H0-F0ma_;lE$uPJa@c zs#|?H3Yq65-Q^A^zJBq1T0HL)0Z5zEuPAEK{0= zv)Fad$_{iv27;~5>{zY5j!?|=RSs7UscA3lP6uD4qrR6bx@D;~7--kdZ}2wnA>3iV zSxJK;QQKw|{_WJ5uA!`5(cmpJ8GoFb}68p z*fAxTQQK~|;fX#$eysN}u+j*l;IYi@x|o)GCw67}zFcB5yYcb+y+RuJSAS6k+l#K} z!{zUD-QKg>15$icS^5DXd|2W^)W45$`wwNL72TG8d;VF+|T5Xs#C-{m(78VmnbDuJ5TsIR3pAM z6c>aXm23CFLm8&I{h?x34;&<}oli=HfsA-E=>$IW#upcamv<8o)PEC@`0+cTHYax{ zUn8EgA-4|8eZ!(t_GYSKI6JD+JyQUdDTlv5W~H%wK21267AO6;0!b6!mr9meQmw$J z?>o+lrI7B1S2`k=!R0YyPIbxOnU$wcieRZW@!3 zGVdZW>+zz1@Xsg#8Hzz^Pbd2E2@TwR&seTbD1;H}WpEQJ#YQy{bDjCro&I!NKD=5p z#gOOtZ=-x8pn_Yd;(`(??LxS;Zl;sacGy2(J4H<3aCJK~bdzfUI$?Qzh;bzpMCx1l zrcQCKYUl`hm)$h@sKtE6&|s+7c!mA2{QXE(g<@$W4i(x>@3ts;LOTB;Boj^VX>p*p z%J`q6k8{jSREmgU?V!c&MFk4vFEr$KW<=P5;W5DXJ#wCRsIA_a+28A4R= zekzmC{ruIf;bs zql>dRrJb1UaEGL&v0!BVUPmS0AzpAg5Y0>O!K&{>OqY^>;(*kv!K&i517^pUD`c%E z3+IjUV3~W2L65ph{-FTpL+rmPo2%Kdk9%K@#OGKU#7hWen{IAQ$u~Q-2IuEC;UAA? zSMPGkLk$0%JU9-zY1(r#p2l`qj`iro9|Xa>`AL?M!nUpE`l5eylm(pu+U76s)~zXEBO(8%0<`wVHaM13D+GN7pPX)$QzqP< z`IveTc&r$NF+rX(0vCSo$-}@~Jq8kM4A>pT+`#9xVNp+d`~^}i@96SAVzW2zSx3yM zXslgJ{ND28_B=bJjS-u|iwENUA-vl&>lBx4_2cr{YB9f=g2ajr8Qz6NpJ0w&V1QnV zcV!g=T$-Vgn(BhGuyc@EpTE4-5(jQHcP7yPL|D*RAt-w7Ii??7L%ski1Pv_F;pKPP zRKi%V$DjrQtr6E8ect31@9}OWjr~CasWPO*don3}Q9=fR96|=4*DE^9MHH?6kVU3q zCV=~YCF$#E_(06-^Ym|oMNk0McC-lnm$YzSM91~CXunuj#qx{ZV~ciW*D zU9r?QTU{G%xw|KrV9EGVCGvjBKU-xq z{|Koj3V>Oycz8(Sy%8Mg93+X!!;U@In-9jV^EKVud)%_P+_DzzN4$iKs9g>)En^a( z0~|JLFLh|B6kP{Qmh>nX8C;82iqwGIEz0O=zG71oF~_|$UKIrCuC~mT!CDrg(O&2L z*^27?YFQ+heI7bMP;hdqXqIp$RW??JeMEnsKs{l(Qo*3XKKUy9>68^F;g=BA*k%-rx7=3m_&D`z$B~BC1#*g}1 zxAA5ZHn)M&5NT7J*D6L zKbo#OD$4e0qks~kbR#7oEyB_vDU#B)B&GKqea?D!Zf!Y~n$%qIm-5CXRpiphy3xsVi`RBa8zD4VZoU z5(9e(7aeeYN>j+ryqcM+X88;1;=PR1$>#X`;PH^@(Up#B7x7Q$I;`Hh;-EFs#3;h~}xO_;9VwVt^L`|EV)FA?v~pZF5pXx`?msB_lo%V+89JhxT37tM zSw_aRJE*48fx9iy^`&N{PCA<$KGXE5zf-d|VA3nj^f9AVh(9iE!jpY>CBxd-lkXV} zE6#8R1Fp5&ScZ&MF|AAPlZI+0!+yZB=$7$UNH|HkMW{|z)+B`@OAmx(ecY9cPwcsh zO+?TjG26Fp-x65hJmi4vL|?}(OaX($)d&Iq?o$F_hmenLS|so)t9aVrA{Tf^JuPtz zBEA;o(Ur?MN%&}mMZ@z@)^xqeXK;Y%VPC~BQBplZ!`{+kJ_lUhxe};$tCGVyPK@nz zU9Pq}&!03DX%A{6lRISc*U~GK7q3815UW@TL2B_$5^)UQRim_KD>{C~_A(02+Id62 z{~Z@2wV-DfL=~?(;q}rMt!jb00gI*tXMa3E6M3<90sCVC%*=+nDBaYpuLGNua@EqT zGaNHMMr-$IJUn#hnk1}(yq}82>pzqF!_Zw6)g72WPPWIVw_}?z?9tDiu;ZSwH1gPn z#(5tAt3p$!dpPQy(-Twg+4}t=B$NuEO9fYTq`_mu54T{h*F`KjhIg4#{jhrkuM(vV4D0i%Jv z^)tlRLa>`78G(wt*~jVxnJ9HS)}kmlZ(ei#{wZXp!VLYgy4#nll~&9T@fEQ`NB;&HL#jV^u^cH+AtB4#rvm8Lrn=)x8zk8hW89{=*+HE5t)%6-F><{|}>G?$e55>G5r-XK3x6>pyZM&0G=sSMGSzo)U-k?97 z3HD9Z7t1`OTI94dU!BZ2y3@d&m|8^o2K(!zYY1YIP;vVo&mEzWz!^VpO~ zra!Z+X@?We_>&PS7iuGI9qM3P$;;kwsfe2W{T9H^;8C$|1Yhtbhd$0dyMDB}*gYRl zX4)m$*|EVsBeCNOVJXbi+s>!;D_(btHp|yS>GH~vcZ@yxe@wesC;51v>n73Qr?99! z{r*=UjgunmP!iQF)wXl_Ljg!5w8}pq51p3F=iEUn4$wDpTV<`}ujQlMNGzfmGt172 z4Y}`0ddPEl@ki@%SC^#1lMQ&w?|8sW71HunyP=&+?Z}I{3LJ`?q&x1{d`Xcu z{TU%6rp#?#empPETm*o!NwuCSQ+!tP>^wTCX^0jwOwJ)q0rwjBC;NV4^B<@!T(X*^ zJI>3NdOzChasfNv-Mibol}P}B!}lro69~eOSQD-HIcADOfo3Oofb)q8w{2!S)2nJs zW&AWs|64{CN58F0f00}CJ>m9g1wcTqT>20lfPidu#5W}1Ut#q}MaMgrQ;~;r%WtP; zT)fq0=}lh^>2tVO{PB#4E6uHOuMG@rf@2zUACkD83r=T*857Z@6H;g!;`ns3?)R(6 z7%Q>D57B_lOg5F9w{#UNNih!{`X{;d?=@eG3w;||Hx$?pJNm95oZcBIQDR@lYG`V| zm37lVuSc0^2xX%vZqdd>kc$Rjd2n|~y>S1QOP-?B@f62MJLH_sjzLNt5I|1$W;fn; zCSlKLhd+jqy&4Drj?}&67@8^S>ksaCX~P{@jsAS4W$$Ba`)8`7a_mP@eAEc~_~=Co z-gL4L zdB7vo4T(yPOzdA7v>+sGx>GD@6Ac~zXK9U(7rnHkT!^0iG30u3nqvwQ9BM&!Qt^m% z3KV|+8j|*5XGCAkXoUQEt7s<*UMectsXIbEahzKeS{~e7-5P<9>&h)v2qnVxp?gg6 zRre+Fb>BD1%(Ci+>=OSrrqy379&4r94)XVz3YEVD7y;~Gk-E|366K5?kYR=K+_6Js^9*~H1>>oOQ4jZ=ru~Sjd z?d5O%i3~stZ`ZqZ&zchPEOiE5=W7BA}cH=N_sh+EySj_Q~Fk$Xv zh|ebNGOEVaGVYx=2kKIjglDuaC?Z9df)*ZvO`D*CsU>2x6-&)lemKkS?_EIXhfAh> zAN$jS>1|>`Dbc(A=JYyGV|j3N8}&3h319ofo5tv^#Kfr7tmS1*I{KUXxB|GTFuA5< z$&y7tQhPLx!W5{>rqNJ#4?4!2S+>g1fhR9x>On+(-6wKOn-Y@u(yV8&0^)nDw!Wyk z`fGKWcC85S8>%Q8$VR7Enu{WOlJdQ;re~}@($O>i?WA~uCM;V9bxVnmY9T%Rw3u*; zy&KmAhQ+rbept_}i(1)O$2+_kZ5Bb*_nvUPTY#ZxqUc}a^ce|L7iiCZ0LwV;JuvT| zI8Jm?>C;(=nUKSqA={&B)pay_2)pRAFk*HEUHwD!Xzt}B2Y|9}e;zoy_ngglbop~@ zcdJX(M5JrH!J`#dQ02E(^1>*!1E;9ZLq9#2;o_@A)@OO{@WMcDK7m z{T&8M3cB&Mr&8vw&8+YW2De2AJOo1(c?mSOdne|`%{kJ_Nt-+2*DH3a7vW??am2s_ z99G!qIY9+LNu*8!_L|ry25fAL=^4NKD;f~QhO0u59oA%wf8wbVP)u0XN{x_`yY}W9 z`3LQQ+W4eK*O?nI%3AbXf9l1jwfw8-U9~D}{$LpA%iRAmKDS;sjE7dIzRXfGfp}_W zl5grf#8_1XU{>0#5xu@Y#<)J~LA+-!53|H6%5fbJuRxc=)>C24C%kyx;72sioW(4(D|($ zeY2?$l{{}DFScXn^SI+a;TcT4S?_B3vv*zdq~^=iMC@At-pD%W}m|~I23i6A!uK-ESGf7fsexroFO)}5uUC|>^hUouc+0MhL- z9FjWBxJJequP^wX?t7%vBmp+c;(>4V)G-&{cPo@ZE!gsMfkl2>a~VaQG8DC%jE2L6 zocm2qJjKsRUb+hhOF3QssJt}C10LQ+c;MBa2@m!nALTh#k2sv~?}f1-+V7##J(DlD zNH$-US4o8M?d#hxz2Dh!A#>27ySdeWeq*f5&?jZD5_Z-%Ek0U9R${LDNhdo|yPKCp z`-4i7c6WX%jsvj$SUmW2#}&%k`j?lA;Rmsbb&?=0A&V;r_`1C2tSKL=@U4mGr_>L^ z$~pl1?(}!%H4Y7!t2oEq-2Kh%7KygBXBZ3Z#D`hDdsUVj@S1XLQ*Z2jVOGSXMfYl7 zeBT3B!nj{{y^KHOI0_Oeo($^*xjm|C`Mf;6y&!AMVtVQ_j{meqvOV<>Y4hOR`{?0a zqI9bt<=<3`|b-6sZ6$0w`a*#;+#qcKKyE^Xw3FY@)Q?&3H8izKzsqQk>>Z z>&62zqbTJ0jo@Tg-~?HOE6(P{%M}T+Kkl;Yh;s5n_onVKGyJCsPjuV-!fkFumAqAz z{9Pt1gNr*q_VcPcPi($DdS2)HX{#uso1i&``;_u}=iBpeE?Yh4u_zn^X4uQS%fj`! zT1XDPG|1@SCP4K_i&S~-(X9W1%zE={@j%;DUB`Q{IYOk11hL{j9{bCV-QfLKpH1*E z$E02ugL=Ept>;{eO9we^!PaI!h?QUdnv8Vagfb|99#&Ag|5CT$I~8w^6M@P)G;?)l z)?lbwRocYsjq38(waHg=Z+xFSowJ(TOVJfOhvpsZqsy5Y-)W#b1HdhIlH*Gh#2(HuLT zqnTyj(k&ih-&+!W+G9F{U>_!_zVyYFyF&Au7}+%BP;b@4>7?CCBV-T6YNpXAbRxm1 zqOMY-SLVEL3qBPx7!X*7b3*h))uTNA_8&>2#hdK8g*z-{NDrzbiRD8~S%+w7@itqu z;pCz^fA;UQPw(klzr?S05Yy0h{eryPKZMgUTVk4#tU0k}!0>7GzGZRSlut-<=%1_Y zOtf9$6#oluxZV@iSCUYbV)`)KhZ8$)WcA6O|MCPO@%8n48Pjmb6{I?^)l(0b$ONcK z>S<7F%@W!EuT>AQhADW)*8!*pa>*H$f;XWyi#{w6G=q1Nd3F28?k#03J`=Ch<{_l% zDs^Jtv`l_qQzK`O)1wrO&R>w$hsF>I?WwD78!Q_cb(QZvc%ImOR#Z+nB(svskTStoj)W_ps%SHI&34H9*05Y zn_39|!?BB?O4kp;^PgMDhtcFJasf9AL-ztfm;ZFbV7Q~n79s}Yv%Cj5*n`k1dq&l4f? zefKKqtDx0ESH<6mKCO{ZC{?}#5SrGRtCcg5#ac8&k2-DZ1Aua0WxgO!{3}y3^yELv z^)a9!`+!)gl0`m7?Dy!u58$xYsZ=Th)(j>&$WmM! z=>89OfL!rqHX;L?Ha11HZD;r1TG|gUDB9~H_*4e*i>EHVjotA*Rlu`*Fhdpgv>*Xa zeekO;27{*)+qo22hFHZhQo(K>d+15;GVo!ouawE_jmT>&tr5J%Qky3x5Ho16v2&T| z^&bxMT4DSX!;o%{Ae}X}5!Sm7n*l+)6kSmutNBgSVBcqWDudoBg4QO9)n9 zL6)RygFRP{v{$6&Uf6SL{8ztrStQgWORc*MjDs?%BN2y83?`53?Z zz20AjyVUnS@kdGogHDO^(lEulf1c#Zc^6C>9=I?e( zb-VM)6O1uG4H29}-X5vLTBB>MxO2ao*>xcDRR6`Rb$ym8NtZ40buxvXZhM7Q1sAD} zjcz4(+~>#E`1oCjLwC)j@*c*4>R4cvBfO6#KW5GsQR(ck-%6P`@23PS*wo*l1gW+3fdqhm1n>?3|6@0D}s1 zxD~O*XYO6lU7483)FFM-3%O`dxOmeE5-diE-t|;qH`eqyJV~HaSN)G`V7(6$Vq8H} zJQw2=MI>^B!>ISHWGCD1aBC0=`vN5k0{R(w+&HBQQB0My z(1}rt40^4o+QyfB5`Q304<}9#uo7+?Fxk%i_eOqKyH&-e`^gEiSVAJ;$0SU|%n{9` z;Ars{_+8}xW%B#sw5FUBLX?(B6h}$K%*4mU#Fu5dJnr8{K$kRQ-4)392z()ZX;hM2UfiicGygi zqd32L0D4y5Dd983_d6h*GwkC?z^Oa=$%+*-*zZ$QY2iC?hJ1U{w_-txskAu?Q-M9}@7+46p=1(G77d)UY zrQw)FZWdxoKX(BAZUg!JqvkqsvC%&b!LQv+= z?chVOx1mcuxiZd)6GxP9&ISfcko!F-h*FuWm;2I*#FD^59U7>*b+{(uNU%PaJMP@= zgg+2Jcg&v|YNLAa6rsNx*lB57#nr=%uuK+@dPPqITgpPvpwB=oh^pIeX*D%*MjMLxY&NAgyW7OF-~%MpCfQXDlfw*NDq3jkj?&FZx4W3}q67 z2)?pENbtVlA|{~X$=gWq*ITPTCb0xd#c>GXJK>#xaE{?4vV0rE&;H(^XzE`D?^7!v zv%*9OUEJDo!fm49KhcwGv9hlxV+U3w$k=@~isQ>E^|GTOCMSWA?b|5kcG#qJFIRzC8|h1-TuuUCq{!Fuy06%(QDRu^YQajU93WWgp? z){)Bu>n?4E24S;BJ@1a@&6o9IRdGid%j(V@LnsWu56YI|y!)(uUt!wB#JDCx3@46| zm8=zPj1}k``pv8+@-9d>=DJq;7Ap7LBm7ZgN&NVF~#5 z;bj3xOwtvrG05W+&v<$U2c1~%r96R>pwm8{0*T^N2LkCZG2^n295S+cJ_ku2-JL(O z{uF;_nfOvcvN+@nHGdwToM}{`krGzCtw6q}PPU>f$hk#&GLM2N_(h%_x()EuI1Ns6 zjiGR8YQOY|C^qtt>Qq9<>4rr-9dAn{=VT0jtHy>uHcUM~Ov0!3gGnk3lO~;hJ8wy6wNk{ zXXMZ^A$QlY3MvVv_bT~IN&*OLJ7)SE{_il>k_4a1R=0t68j9={)YZiQOjC+xy0UDU zlMmp4rG7wHp>@$%S1e>T)wst`5AtYss~s%H^hrc(GnXFue_Zc=5BgOU-zFncn;p#Q z40G%DV|H%lS%-gSWLZ2XP zdsQjM4A{Qz#u|gkbLELtvYBhnNA>nuQSYWeq>p$c1TB|orG4Mg8xBmbL*9kB+52DV zmqi=7N3KU@Xqk6NoWVQ^YVE<;(OFQ}BsWaGfm5w|u_n&Ff@Szc4Ka4Pxof%A+Lz*U zVV}2=1vlYe7@ZE-??aXFUehVOBfjvVKNNBSHd*OVQ7H_1H+Pup09FOhe^AC zB_zC>^o@Q|`S2hMs5#$`49gP}LnDi}1Fy{b2Ek%M!#`$2MnsqOMVlMnjTRHGJ@YNTsML@RWR(!K-OumeR}id`lYg1l-A86bAbxqyc< z5lOomQ+NZHR{#CaaRfRTcph$5R6ydJHTYX3%eL+c&l?XCdtFVYy=1@ylwnR9Qkoj# zlf6+jgp)R1@9JBN?cW6xq&{`8ls0j>VRX zPkcqeuokg6ON6nso9{LWJQJCiwnF z^arr2(EF&*sv&NHwJZID+%)WqfeBV1r94UvgI(91bvPpm7Yf0Tx}Jud)rtQWZVaQu z6czBH3tFAJiE*IiEnuyWq-24Xrl7>V{~@2-SwP)em96tuvFl;vjU^+cjbl4VV1h7* z!vCvM_&@i5>)6{I#PB)nV^-*f88SE=wnCTr?(+Z*@7dudlIQWE z^{J8Elw7F%#M%IEW7ygcxbczwTQw)-D#{W;4NpgvJIz=eJ9-EEJ@NL@aTsC{Vl~$N z;|uuB&^o*Qux!rfXSGw(ztOjIqx|h4k2G9Wb=W+P0e)BZWHyuw7gsh~MJzW31+~S| z@3%)gn#aS#E6N!$B&9YNu{Lt>snO;~?EN-x2G*Ftj!xh^t>$R{stGSiT>ol!k zt2zYZaqVQPG(x|yu!0ldNgjr=THNHOo#U@+G=V!(s@Z|$;J@g;M&^l=_`pEMj$}O8 z1W{_m8~$cVxq}(qzCrZQ9I<9u-v+9uq_t$PpEU(Dn8wEbh)ffDX5i~;L9kdlj+=Yq z`GMs{kGgb-+uD%ZCUqBlVk8ceNbt3$n(l#xo}svR&(Z1RKwxw`-6GjgN~#h#a+t2t z9a%CZO%%4W+@%@LfOup*MzL*0I_U5&=udy3d^;h-*yd_%UYQ%A(j$kT*OxvkroYAq zY+mXOR5lNL<7tPVcVs~YXpRs`$5z?S#v+ga1^(%=3Y<)@I%lxzx7$l58_J8<;FFKQ zW6I+<-N&JV+9kuX6`&!=>lV)ZhC4Vi&imwwpJ7; zfV6tR2j?SCcTrF0TME`MAt^y9Ib0@^Hjlyv(q*N~yS05@>P z#_uIPxvz3_ui`$PBo`0EAC)ChH*Z|5MFsAXXG7~Aro05gI)3jl8L{tErHhFOs#)dk z32Qr?FR#>9{J4>8r{y^wtht|Hk!&Qe*>O8x+kLB^#fycb@xV*fVCJux{>Zb@utJ5Y z27XGNQ+7yZ?l$}oPoc}+xK=EvvpreRvxHQpneSTT;wFPD8&Ip!6S~raVDD= z-#mxX-t_iX4!?va*mpb0+Z?ny>ewGI(QfNfcRM}}gTwQDxQ>$5)=@J5DjGA62=1}r zhK(Hi{%(L29XzsjPlN9!lGD~wALL-WHLUFvyQDFdlDJ|EYLo~%P1tWH45`;9(|->} z2u6WVKGTFUbM`7t9i30>**TYw35%22fo+OR$E3Xc5Y;~`SUcRRvPonrGmAU4nQSbc zo~L5&?8?wQ&~oT@lbQT@kg>lxWI~hN0WVwaZb9qC3CO#M^T}_{l@|mesb78UBHUh% zSMLV-sEQay=9M`--+FGW$7M4RkJDlc=ZnPtRyvGqDtlK_dgJfCJ1UUOC!Wgi*)|__ zj*~+C^qglI2Z~tHou%U?JEHDZMrpl7Q9Qd-Xh}wtVpkaLJa#mWW*D};Gay?d(!*>) z2g+S1;`gG~g$RTa>3^(N|E;Bfv@Z+!{LKw@lazFe`#ueBgsqb-w^GA!f>_TkZ<%neupYnH(cQ0iOvVpQx^isJm&{R$oP)=PEf>jRqJ}@wUh-XU1I` z{k(g&dE@;tuK&l5D_wqN^OBJveR>jQ4N%%LkX_Y!#t!TcrYDkbxNLB~2>2>HJ2?#y z2YLDNcg;T@K08O8ctN7ybBY{rrpr6u1RwAETDAAUu z{Uc{g12pH)g*Jm#B*6}FWBZYNTf2G+tPZt=&*s1DDRlKv4#(k~gcLtma!w~Pp11FR zwz>rJApm_9Guiyi?)M!1%MMvr8SG)gG#QSo0a`W7OoH`Z_KyMonsg!1`7dXhQ4Wve zZvi{n5O%F9!opRf{L7}?acP?bWy%(!H_6(ZcIFk4DL=JosbyEEJ|&IvzreeC z;?QrZOPFF6#8#)vNOa^ccV(LI@hSNWY|Yf^xv$V@LGog(X?Q>}Oj*cjo&&cn7bZNE zhNz~pFqg%6(mf$H=CdMqog{R?rPz}}B_I-+_PLq3D(SA-P4BqQw&$i~J!d;-a&i*u zDpTe*y@MCVLumJ1K)& z^Mz`FP+mswVqKZy?O17uJ1)XN;Qv+X4D`OF5oh9J(RXc5)Acw0uuG$uaqk;asHBUC z`l||IsAt9xpu~NGdyF-p8YRH`0bDpBSes|h; z&;mmxQndAL2e;uh_&2PAp+}O>V2=*hL`2;#Rkpyv&dT13)&YbOF^m~$97FUoyTTQ_ z)|jntt)57d1E%r*%ts<3+zwe&>x#^2zcQ~GiQIrNX<2*#5crM-(^ zif3kW;!LPBRtD7TrP<$SZ8m%tsp76+{%u%#;lZ^rT2WlCkgg3@wR-bkjiNtrAexX# zBuF0@zM<2RX~I#&x~b42V^1V$NsD|@A>j6)SL9TAWAYnPaBW4j2~Lk`YO3Mzv4XO2 zy?}ZJiqX>!f2~=Dt@r71?JWbmD=Z`NibmCB*MfEY1xUz|+hYvGrm3yk%Vj$B0Tg73 zNGmr%M-<~mb|<@dY!f_q|BU@&{n*#{-Tl6tr}EVw9*Lims1MO*y4xIn8L8Wq2EP?? zr5DJe^)Ow>pg>KSDto7jsfHNGNx3*P0fi-dw3hTH%1XFt17OoUU|EGCR~ohX(R8P@ zCEErS46ahYVYu842u|X)XI+7I|A;uli`VG6-PNi6UmGNAnb3P-jQv83&j*RgjGZe_7`EnrU?xkur$_n?CTP=cH1ch)}CqMwtc+eLXK$;E14u6!atPD?)(1%w~jZZ)@AyJ}6k6 z7Fm3IZ}+?ajx%V)naoCb51~M8Ea)EC*zy(S$z|kgD|L73+ic9RhmB4VVlcp)iFVT? z8L$2flkM87@vlv$NT&3;$UjDFVfo*Ns%V6`&1nRb#Fm`vGTG!{J0fsWJUTMdPbE3x z9*bnd=$L9}6`)PAUO%}!ssw9@j#N6Ow@kcY*2Eq^vGwmo8eg%t0L2qVi-UL9U7Ee~ z#aMs*H={e)K_F`x+BvNPW&IuX{>OMjC~IWZ=9xmOQ(H5u?SuswT7w zz7+y*w2CTCGgRyOJ|y+}Hie(#jjz()-K+=Q7eB=N2vhzaJHZylFDmBg$~MAw4ejwi zY=3nCl)+nX^}`6!ai^!W72boXV%ae%tQT;bcWkO*;agu(k0>xxS~u1hY^I(}3lHKZ zScL+K>PtIa|KDfa3c{&IcV4{3q~05Zp|#4Ns2`n0tGuk{>B&u|)&O}Vdh(;;MA^^6 zE@sDturM%8`SX+GQlz{O-ub~k@>~338}24uQzu%ft@?SLtI2rB=4rOT7cP-d&C@94 zM$59^S{Y$9*LlKe8V%c@>vVYcP1LPK&@H+#Vhy(OJc?V;X;8v0r!M5FzZkcR__$d+ zmms*3viKj6Bb%Y*%o$92U8r@KkW|EAWfX-J>?e;c0gq)tvG{*%nhU`OAUp-(lrn-~ z$imM!7#K}!$xt1;1AAnX(nTa_xokPmo4ku~ZJ21quhf3&BFLR>e2{o= zt~$4>MKHkw42)&xibS~QPtYwdfn@%V$l~oG(zVSh5$HFL1)Das}i&653z-!QSWV14R0a+YqC(l|wbjY^#h?!>OjhkMtvt!%(`pMfz$q<~Z_U@O zkn4{fLdJ8!WiO)W)z&1m_u@Gx9&@nqx2k+(1Q>5*Kqri4D-ISU)B6^NNTGS-`TQ!Ev&0TyyHy)i(A3v!#stl)F0J$L45x!kL;4; z><>3x3yg%X4T0W4VM#y8XNs+)TmLqSyCaT>ioj-UN(1LWld8bw38eU|hb)$XB)d zTmJLGlMvRjyrtxsLr&N3=8w?&bed5 zQeizNY)HQbNm5kCL_lUb+I&@ULbvyr`a=^LmaE(ArFcA2_M*HT*}ssk3^9r<*_tqX zzM;XaWgMRK%G|l@aom%ngTWCiciD&0*v}J>5B*KNN(WaQ-z$S7#jYQtB{4FNce#3< z9cV9_m@7LENgP;%kQB)wK=shl;yw^Kcx-q$98}&^B2pC0f1n>)w2g;89UDf^>2u5v zRFil<9!iFh{d-1{Un`cQ9bm+!p2In&Bc=NghPf&Y3Re+j65*g~Wl_gDF zk5<5n#Edl0>>QD1P5l460Bbs#%*TG%fcE~C7muV)7`zcJ_juA0>+ut{t3W6(S~Rb# z4O5)}U4B)261X!;^HFbC8$~>KTn*pV>=Mm_o>Y7|$lVW2M!71O$ZnBNs#Q$#{0lo$ z{g_d~8efU1Jnh}kTBjsUuxiMClRAZg6X;d)hCa?6JsCA9^f+Jc_oc@r_`z-QtLU!e zhUVlAA8w=h}(vT^Xga(Fns8!LlZ}>p&5clU#C6gVtcTVUnuLyR7 z=#51~h%r)&!nn<_g@bPuPS)*L=&SM+e-O+q%ttW*8?nhV1WNBO@ebF$Zn)Qr4trN0 z+bnKlSD~VdQ!7|k2X9AQ#Skj@oDTO?NTTFx5 zWnjyDY4eqr+d0d4f3!|n=p#bsY3C$-=36NFAAvf7-W_G3fd~foGW2^Q;YnDB6=!5F zXd1U7oWG8T;n^JSf^Fx4`_S4+;n+(x_96v-!`EFAL~GAT!iy{H`=WO>vewo9>Ag3_ zC0idDDJu8u4Ndp?#y4NbU6yRktzunm_N0^6;5RQC_@Rbnn7&76^+>Zk)5 zv8{jjqWwPf1xM`|O;*DqY9aIrm<{-ix(DbwM00FAK= z-3Lw)2pVEswsG?=L%BI2nLtINBFhz+jGa0JE|7=r@3wUw(sH=oq6u}J)@U|%4bQ^? zJsm@$#b13#Ef;Y7p7dEBc zTPE3rEr`rX?(QAmPS}SZ%soAawFX^i91EL&>VAgq;JO$dsfaOCl!Om>MigZiPQS(Fm zlOaZrFNA*NwQZ5HV{@6$m~5KXcupm*5N6s0wPsg2NSu1&0}ZuuIugWjY!^nF(`XB7 zW-_=VEo~_=Ig5W>!wIbVgl)jDtYQ1%7m%yAR|jp6mP@~~$H`|l>g^u^sB+)J3A+2_ z!s3fK%gsq*o!^;ByZ7Zw9aT&Jt_NVe;pDR3KVxP5x|$9?77jfTs!kP`O2{FB-f#Jw z#@kWi9OpZQ2rP(K6Ol97NZyNV25xf60a2jGE0=@i_-BqkJw-Yk?rzEdvMYQoZWWB< z+1Ql9%F5MGU{sWdFKJ{GaH{?-Ob8Hr)z{*Cq&uWraCD0g6z`AwtNOR-9PMrA%^v>A za2#E>uzbkk2jUeUR~d~Ba-RIVdacNE_Wk$6B5xXas)$Cu&8|;4@~xA1vLNXO_$UbG z0=+*eV)>9u!b7Jgn!;&2 z7OCcrnm-0D=xGjlMqVhYYJljHQFq_R(3#m@Y|h+D|Mjae-gELBK6CJl9M1lg^y^W) z_F{(`X%)HN5AU`nL22KRpGza;D?SHXpl^09tFnJLsf02}ikivD!+6>@YEI~m<~sdj z{R}yZEc3TQl5r0<->%&D1-+YMF znIrmkftme@OCWD>8V9CCB#4Tl-9e=kHi0zfOsRU>xu)Hf_#s+`;AT*4YrXlk&Oo62 zWMUxsF3YcEz*^iviQzNwy;P>vn+z&4or40){lWGJl>W0hx9U0HzdQB&Nqx0i(-ZKZ zBU5YeEdVC|pb{zV9e5d_4FD-uO~a({p(Cs?%h}fpXbWIKA!^st^?}t_`B)NmN|&Po zg%-E@p&b)gn`XO!TB0u?0~%U@y!^FGesl4+#09QbmHB{i{qw(ew+5(KQMVx8OR;ZA zoou)3i_zBFkb5dc&y+V|hn=!P$DCzE@Q6ig(7X&dvZHnP){mZunoce8KDtY7fXz$^ zC};C~yqZ$qwCm}41yg3%q!Gus8?S!C-yZ)MnO{LHGyTdMLH#~ycO<3aAG@30^B;Y&Og3FiuD4ada7Pz~+$2{O>kL{-r9ui&t2=ah9%OjEtv~QVJX!CQ9Q7HY zz*7n>pIK2;b^sA080zx?KJ9)+-q;Y8p@OWHIZ`nm|T5ep!-NREMFRmUB#pwDM8=@0FLW6sw*CX5*g9Zfq#mWz26=3%FpFuI_LbZli-XV?Vn*V4A2w3$QL}Z=e-N zc|c)kI-iBiO*5nI)b~c(s(MpvV^r3xyGxVgGZ2mcwHPt#4M;-{v?rZ2N_-J>(_k{{=KEWQ`5IZQ~w$98mAY zQTV66ywfjFDxTatdcpO+RKWZx*`Aj5q);3(nNt15i#w|pFE$`#$#yc-TrTdzKuj<~E{VH7BdnVW)=h#!mNf6ojUa zb~3b{BzHAZ$Xk14dllRAK8N+7dU9p1u%Fs1f-CR>0s8uV=1OClg|;QiZM-?rVRAA$kZ*dDYFmjl^sHfIJA z4c4-OgNp;qgW68yB^9(vg9X$F)Z!fKqMAb=4$$T-MkfZ8_;%KM(@d2E5XatQ-yI-E z?PRagH%RR&wwwmaLVGga@;1`E9i z2Bs3VaXfeE0ex41C`}>S1bX$fq=)Q)h8Dv_OMB9#tr$Ygffm7dtN&;yPlKmIk)AA5 zWBqV?fy3Sc*o7^;=j&v2FMXcY0|Te(FSZD}Go z=O8%urOF^GYL;P|vn~v^MYPt9Nss<=M|;bs6((~Ke)jm#qsO4k1Xn`M+cgJwV(XSZ zVET(o8m7$cV(N$Ze(oOGkc2A+;lc$^cx^?ZV_+m{bZk9+Yux)en91rC5qMu-tMG~2 z&_r>x5q+CTkIYbDZP068x?EqL3lT5}*9$_uAMnLBYmix!saJ|BGm}$M`ZWw5S{=*wb;ecP>xsc+W$8^M5qGWk6Nm^F2&=gLF62 zap~@Er7j?#bYJOC>F$&cNde&^-ALy}x?7NvhX46|pXc}Hyxnu=%wDth>@{+O&Fr|c@a+Y9m5uH|)VBu( z1}x%+3ikWepdrKPPyiN7pz9bSyIxr*A;TV9sReY_(S4n1F6S>?6}@+kRo2;-8VGcO z;+kisd_QP|R1aSfH5T>qDN7Y{9b#^I`=|1C!zX@*>VRCb3TyvRrf8zs+O$t%3PD<2 zO9cn0=1%Wp>eQlTx3u<8VxvLO#*9`YzB=Ye!u?D{jAylSGR6^9`G+S*+bh+|rf^^W$(P0EMX-nAKK7TY_=Z+x@ee;{M~p_B@RhYZh-w7_{9 zVT9f!oV{tSvYL5H$#I!-``U6#6!8h|Vh3_*{nzln+Kjm5bhq2Kg7QbBnGf0hbYc-` zxhcs1RNLxu2A?_HkqrFsM?T#k#IG^eZ=0%@=kG|toDTS)Y4kRacnNtZ zZb?T;qh??MAaUlv$SSsmbIy@9H}LD!%fS-K;6VX}yT~OyI{ovV__PgC^*NV#g?}vU z8ehY#`vcp2IEXs+;Ou15d(jtdl+{wA8f60fIuy#@$v+z#^$j{b{pNE)7vc8i0@E|p zPBCCWwEo3^t5(gv>V}4W$#$ZbO}692D{4ZVnyZfaC?}s`WD3Q4$P;f{;Vhit3yiFZ z$t0m6`8%ypHflyT9{yD&col+EPN3v!fSmupFQ;TLazIrV|_8u{j+r|`D#c53k1FL7OVH2=v* z9x^;kPgR>}^n4&s(+h#uWn@E41Li$cylJ@G| zxYK{t()^O(cQczUHuDSR*wcSy{|kyg%sP-Rvfo21Z=U{E*5m(=vR}?2hKsiHb>R_m z`lx3?GU67gY>wlFlt)+&iy*IYaHZ8LaJck+dYFpepa66J(>{9KU%j|Zhdv)9D=VFZ zh67cFRo@v|ei%W0f1e8Y%osS-)gZ-Nn)EpCCF-ScZE5<0y}A5uTYNs|ANww=+i}9t znI$&)WtRT;G9Er}^Psz02yN}!UA>Qjd~ zPr92Pb`8Y#jpRZf>d1YiT;3*BA7Qo48OS=<{X<{X4$!BsiyWI%0%NmIfR`veZ=&DH z-a4yx1=L=hR!K*}4o+L3j6i1K9+tpnEW$NphcqpsQLqtzs?h#0oX}-Y2Mwggh)P)9 zpL}oE(XcuW8bIX#XEsgxRb8*kM6Q?BDoe6-Uw4(3{IRJQ{gLPnbr-qrX^(!K&nXM>* z@{cG1O&SGeY(|lAGT&#Z&UajAY9d3>+t!gM4!84Gd2kXgi9yr1W;)u2*bL<$%FLkZ zO7026ww<|E@n;Fn1QQ~yv+&1?|3EU=-~33Ckwn69=W#2JJ~2H`3Aj!6jI=*#B0r9g zLiQ5R{E0o|w5+Vt)osyKZVayPp_6?o@ADSWxF}y{OAk=o4cu6ryyr*#h=aa!33m_NU95f;D7r z)$*k~RfbXD&?WkpLD5W2p%K_I8O7MW!Zi_%kN6e(-#)6`3?{Wx$Ufc0xr>gWU$V=n zW5Lszp|U})LWv!_-*yt8;0rqI(8%_`ao#&TQ6FjGcH>Z4E}bSwgYImDh-ka{r+}Jp z4SDL@TYh)3h2G3&QUkGM-Ua!4rN|ez0@4@X8+=3L+APLqx|Y+t87iq z*t=K5O^-drm_IXudAlE&g|i%pq%#yB7=ZuU>FAD)_RpSqt7+)hX1%HDNJygXR;m?N zvBvNJ^CkM`ZxtEZ#Xq3&X@5lO@U~)P^60|vwP>5vvO}^}HUz>MwIkw+FW7jPYOoua z!`@Mz?uso?Y~L0)9p)~N)#^6)CJG@*kWDaV2hB^uUbJAC6Az|3Wx&?v$9U_vKNLGp z_)+9PB_tWkG>y@`(y?351cp}dzQTAsx^GJMsAyaP|dfOM0>TUi+fTh z>X$FK8+0?MvK>^VR%1ea!MQ-&fuWku7;yJ^P;5*P*ox72BFlQ#;>A>U^3{|P5<3&N zU2HRimGR|Q_&Cef)f}EZd(Q7F{xX<&XY&SXZD=HQ1;&^OOUucE z3})Dl`qs#74xK~m+z!2;bxnvR4eB#1Q?(+*J~gwgj<>LX@C4YQhd{+{wrePr{ooND z=wX#sXkA<`;tp|v1b|f1o3t$Mkw-2c!1uyv!x>geDek}(QEBu#mCQlRCglFd2Yn3| z;Wp1-scS6_A7&*rJMf50a(o^(c+Bf(-i_xsx9Phk8$;q8@-WcWO3DOj0cp1JF1+(S zx3GLdVt18(o@Q^()-ITFru7Ht9j4C-&JmHF1_e`@!-@!lyrEt3@*AKl&$eEu4F(VV zB0w2>@$;7^qDDOEMvwgMz-yd0`8&mYzn7WECNWJcx^-r)P#zZSE)kXZ255PH7q3DG zyG2909%))>VLe;u6oXI7a#+*uJd8tA&Bifdl%EP4mzPniPEgh|Ka!SaIh-{;JF$&? z`mNmBB~){pup4Caw%$-gx+2(&AD-^%qE?GulwilfHxniFbhWAMpde20DNMDDd9zo@FJUqY) z%Ps%Z`c#hZ=F5s3n!Qcm&o=ejyfGhrc2XODM6LXcy(rHX?rIRE%zh}E#EIG z#hn$zKU)_0gDGLN3tx~;U`-6%wbvD5S*jnd#wL5)FcfKJi%4Jgft&*HRF#`n-_!is zWlQW_g*!WkJ+W&1xYnR**ekCg#+8=S*&Vy}%VM3z6!HYP+nMe%#X8RUzdxG~t98IRnth9GQq*B#gD?X$wWG4+RSAnrwvE*+O-z*5T5Z1>A z|0mju2}^s~$AhzdhjaE)G58G-_2p=*mxWbEd6K9{M2Ei)ANMucso(xFVc4sM5&7^C zhX2}NClpc@g8adX?pg#|66%FY#RH}#Q_gncQt;fzw)TqvbsA^5H^eo!!6u&|jMiKz zSGi=EK*KDcz?L@o@+4Am$rZD)Q&)Zr#GhoZuqT|5OIn|GZr6S-_J9TT`=j%_irZbft>fZEyHZ|Iyr1#ecq#R@4otccR@kKdSTfh21fLgfX2X0RXU$Ml1C%(S!lA99Ebj9kN>#QMJwLc0r;n+{v5r{H+DV3l zLy&%S9d7$P+jZ!6DM>=R7e(MmQoVsjoQY3Z?GDAz(h!l|uwA4Ls_ z7VhF=Er98c>R#)1wTte14g?j$15QJ(tEBfeBJd`U&D*5SDXr^dqEHbO;$qU;sIK>x zY_(a;ZK;?!oygK;j7~_6^6YQo8uyq+KGm$r@ZW_;y~rZoYeL(e&FAGh zkWLq|o3EoMeu>P{R8A~!O=EP2zWHKC>*S{guQxy-04EbcaMQ~IG{ zh<538K`Xw>ZY5FzTp^b#6JaYMvHYV>BQZ_cQ4*_GbT4%X;7TatQC{@^*um@`ORM*M z3ItAY9ApdvnxZe_)`&NJQvqREXeEh|Jo%TF&%KKq3jxa5wMH`h#p z0hN+w8GQ0EZT24%9*o5;Ka}g1vr>8*UX$3~Oxc)nAoq{4vcLd84d>HFc3E8h zR!b(gAe3cqH8n1^6-e<==6co$88vV}cHs6dUCOIc_k~78>1uj7bZC1^0P+%AY?yG~ zH#*|J4kLczK|5^c2ocjq#>(AmVV8c(siWX`drfop=z5&Izo*gugplRj`;(_V`CGeCj@OwXRAU#YZxN24#+|w zZ*d@C5&Q~=ZDF&n-Ju54UVi{rraK7Oy0YlBKz@nL82n^zB-k5v!lJEXref*qE?G*1 zAzOa2m*;yIC@+6<2n0K^T=<>yxW-bD=JPM1afUZ@biK1wJByz0hXD$?fq~oio{d1k zz1%joGeyl@jCx;nsdQShe8QBZR+zzn$cQyqApF9#hfcC(ggkyuLCpF|4vY;au35Ra zZM^C~Gpj;)TM+bNe-9MT(z0hg?5Zh!)+9N^|B`;u6xi?o+}MZgt>$y0TMJ$}aA&Fs zlVs~kXu+R>>88!I0XUv8j+L(N6~tVA;O5A&(c}z5#BUUd%l@V7Q~THR3W7 zqHCPTHJD&OcsoATJ$h}VmK@OX=|8}oto3NeSi6`#(sJq@jyZH-`sKnjuwY9+xL}yO z@qWF2nzGE}xYPQ5-%;T(iqM)`qxhEmUU}c#$4&kNw2P8OB_JFQ!Zr)OcL;Z~7{msN zt2y+fUJ8IP{i;~Ix&K1lhI3k|ymiA&CI(|xIA$byc|jy9RrJF-Jd$ByXu+&n0$N{I zzjJ**hYcYG>u!Ix^X#)(`}9y#wqMc0IRd48GL4`RUX}P;)imNWHEWLD<0-IiQBm=0xjT_KQiQf z%ta41m{9Hv6D6oHi6dP>o4jsx0H1waFX}t>W<%{3tavq!TALwi7?!SXY0=^|#19}D zUjq8STL`!9%a=D7hi^FVNwSaH+89s=c7+>#k#(dFcm?=7N^DMF57#3|%}IuNk63)m zbqBl+R-W^I+AvUF&PluDn@+=|$U6zR`V<{5o{aJQKqV@&WPS-N2=U;uou(Yk?6QWa z`3|lZ-t#w|T(uK9y7*jWlsl_7?IZr@ZV~U#rpO0Da0d|Xs07R@iM83QA4P%mMH-e~ zqMHXO!&#^g>OkThR4%-UJC-{;fF1VX=$Ndxf41by&E+JVty&sJkL|K8eqaKKF?V`J z;db~rBseQio8Y9YIBH{VsL2=`UM5h~5s4R~fSCH}OX3h>BN5-SKt9_n zLW%qw5Bspq&k=gvZ>%^}JDu-|cPo$#T=$(n{w!SbK=}%CM!x6+wYp3cu|&@`DGJex zK2SoV;s?=y*-k|P(S)%Fv%2dK>B)gwRy_;LInPa$i}D+I?=3Bx3xj}6a~=*O*uk-M zCt@3;{Ld)5K+$nq{>*P{vcjfn&!zbE4&@O7@Md$;pigaw$+egLqkp#3S$~zGST7IT z)W?G}T@Yf+$3iqd*vq@egJ$|271cKKeTn zCwDnTJ&;AlzNo~PyXi1Rl~>_r9{(jg@@2E^h@EuAJ#{uJSW--n9fk2O%JJ?Hoa0W1z;v{J*1l4nvg)ZsBIU&5(bAa|rr=sTFmQCD zsD*lJ%OAR9-DBfaRX7FhAhusyzKnuCeAdhU03yVaS#C_iVK1&vXRZdj#1OcF-jlDo z-&B4i4b7rFQ1yPn15C0rgfR{bFIM1fpOm4~tpj_aeHD|?`t>Qm5TRSY(4yc*B-%C%f9+BK zDkK2k+>y(mQ7%_4d$h}`kc$h2 z`!RSp;pBK%1V=^LKN1r^YdL1~geRPwyGu@VeEY?a1rz%xp)2J15AE?5JcWZZ#On$SH*)N4=@ai>BH zVsC;$e~IIbzwP;cAn46F23>)0fI!@ik*Rw8+iD7X{<)>HS(da?X)5jtySqhz6|z4_ zz9F4&qc010Z72zm5F~5nh@(L`uLmhrA0`9f+Y%*RDPhY+~vp`fxDMJkT4i2P-}0Q*52$kOM-!kI!bCE#Y}HWeJx!M$N6N zhgZQ?{{EgJg9c+15^%Na$cK`o9=A#`Ze=oha4ER;!cO(&GkaXL1A(YOT}!i1oAxT@(hQ2qVOsQw*yXpr_5qOz z5v!z?(&=`uF0E+-TILFcSy$TQgJxy&;ocRzKJ>75!&#MuC3H%qmj5|ez)o6Q=l-T24}rcerLOttd*cpm0(a0ik_9 z`o3jS&C` zS9erP9m=@(Ws{-y#}*uegWL3vL~CJp*=h1TXfydcOf1!9(iMTdK_#N1mm4PWepZ|N zT~FN>MEy;JgK*0>`LXKl?@2?=>x6JqO;?XTmowOjpn8yH-3Em*gY7C}Yw|>hP1%9H z+-=%tcWH*EwfGY5!zQEYgPUP_7zDeEO@ZnKf<(+raq$=B9X z+xCuksr2;b|C;IXEjr*g0MA8yZQ{lOpL#mLU{rr*kDXfkr&i;n?O4Ffy+A&WMpxLCe z4J{5wl}ZfZmddJ83E;?=;-1dFH@|@yM;S@1l*RH4>x<~oW+U#XaB=a3_Ii0cQi9u* z8{W=7Du%YTGqoAtKrC#zY+~*c#v9_QqlWccjOTHDPgXbEE<;+&j+Kiz0nBw;z4aLN z{h#b0xroEC3zxEq5Zu1~9uwbM@?1pSSHg*!S2p*$s8glcO@Ut5e~f)DAA-MS6#0JA zknq<;2=x~$CE8116L8cR)K!G0M`yD$tD$|(h2Czo~dj$L4%gG z8!2Qw6^Nvj{H&v^mcdlcgJ9XUL6*8XFvaR7^}Dxw8wEu?&Fj#^fUwYCat?RZ5=uDW zD4LGSZDM9D&qeN@AeFrGS-E6|oNv*@(w^+31#PKTVEzxpVIV$0>$WScu&z;L)6z_? zu*Dkk&g*hdZ2!^N=#?`}Ip<265! zed@7i%8Ynve9NeKIp5P1*PTy_vB5iPh{o(cOt$8p_$L(L{qM1Kh z@dE9&@E>bdtbjWY*gHxWV6yEk%IcDrV$L_oX$RId@Xe_5Vvrhb%D(u%0I^wqr3GzD zIcJ8zRK;;R1$jTq&2PD+`otn^6BZvU+#bN~Oa)uAuQ9caFg=8i(39XnLbxB^r8%_w zl-;%?A}_n3_Vn<%4DvN&6ta_lu13eYou^2Da$rPULnjhf0h~fV94;RS_5AFG4E6+3 zS5fK|!D;C=uQ@V|6ZdVYNKvKmR7dHJX6lkApwYv z4CQ9(phl3Q(2)c@FL05+(^x5eKW{f~~B51@v`LU3k!Cu%CU+9N5WWhXM zz~K2^)RhRvZqQqa)c4?4%PrLjObT4wd9v?B&`s#d(iT_HQO#H?F5 z2QkA0p-+?A0xE|shHrLTFk-q9%=?)K?_8(W5TJQ*>KQwITLTQBY3?r8txv{5rUO%06pvRx(r@3~U+3_KmKqICY;~?!d~xa^ zrI^~-wpyxm=8xYswy8Z=+x9b!VS^Ej?Q(7jTKNO)VoIS(ggYjF* z3Ul>dHgV3j$Hs;IF>s^quWVenBsZm{4Mx#n6CPc0T@HEGl9h9EyU)3~5qLpcfCZ95 zgz=SIQNXHl4#?PadiHhg<**{ROG~*((WBiSr3gSjcG680RVsojKO0QyQ2nTTj+>Vj z2PdQV*=$UZ58q-I z-U^=p?8=7(_b7bet)BLI@&X&(7xeQ>`O={$M^dA6YFd2D+CVPJx$WuOKSPq!is=#i z)iiMe2I=2ls7N|NHr3Pne~|-N7HK+8o^1A~UhMs&W zc`J<=-eEY(dT#so`*hx%u0IaUkZ`GJf#WtMT=T4l4p*8=c*ZStlhWKzwMK%$YpH>4Lai;acn{V*)!Zja?R8@ zNpiOKxIWWDe%vl4^nVU{D_7E-yy-@dw|hh8zKV#A_qm}!2gksX6igCOp0Q^}aF&K4 zCzD_(KO*gJE*V1t<5Dz zOmmnsz>V*7)?P;a19U$84btRbh8HGrE{dGMg*)En(K)yayDcd5X)04}Wdn9NvzjkA zr@%aC$nMahW8K4MbZYeanKJ6rvq|3spS&G zw14MId6G0}m-i~19aJW7?X^#jEZ9o&AcGk_s!b+p3UGoW(iP2>TW5ZGSnyvp^C04j zVz&Ea!uIv3g(_I~Wix;H{*7WhJ(OT98ZUz5^&1TpuqPr_R%1Ng=NaNHwC$%_!Hv7%oqQ;SBUboxpuzj)%yAD z{+II)w@rl2Ts zJjwRY9)I2H3M9A>{(@$c4_T9LV{MA9aygMLSbU2&P)qWlhxu7;7=7b@^#;43!LzcJ zP1HG?BFC-ou#;jJi6AOYe2vJn%|>Tom#b6>YvCln$;1(iL-&9_1^9BCpEEvQDuWE2 z?d0%pRTXJR68pus4jZ+whlMM`%chD@w%p!t=0wzChL0ZgaGse=>ETM)j3l9c<;*kO z`5tdI>6Xc9-sHU_e<(#jzV-t!$s?P|G0-D^KtBCHNUPP=AJYTAl33XUyw}@fAXCG3 zJurp}!dlDI7k^9|1h3)lQ(sVT$GB^+x6t_|D}`QJjW0FhKO{3C0u5~?wRfA zj)rE+L>!e7u5{MY!NDVaj)2LEmipC0Ha@)(A6YtAe0G%_l3<<`H7}bwISFScfekRQ- zIJis5Ut+mNw1FM^XO{ZW_YJQ4r2?Do zoBMUSx*Bq|Z8svCY4CdUD~A zBYLX34nnt|%1xhDw9hM*@Q@a_no}AJj&W*=ikxdH4<#F?!8c*a`_*2bIfaM27Wd&A z;DPtg0_&`06~AjQ$cVCK2MqX}As|y8mD~nB*0PipY% zgnrYiS}!_P+d7eg{?N|K&aDJMO zh3l0pTu3$4yD!6tO_~Z)pvIYbOY^~)Rm(i7`=4i(+xQ-T-G%yb!XAtJ;Lbh@9Gojo z5MPiNJUo2x=%&~(6KpQ7tGl{XhqXaLjqHT2BHQcQtYLj&E7=!2T+<9#XH6mJTNjYQ zeZLl75kd;Piu?#$%uE2j6gR;~w>@nmM{(R16t{_ad9~hX*ecg?6N%|8d@vQ;3ytk`EXb!C$~rz z38P>yErPDfsNn`1dijBSYJ=wrEkP+7u7IS94kyhUGedyW#Lsq~$@`2p);Eg4U4{bb zBaF!|z3P^zS+(RY)StDkM9RY1k3Jw)L6ZE3CZQU(2q$*h`)!DQmUwC2O5+x@`J@iE zCd)OJ?U3Lfgxn7qzN&C=*WS#%_6nBq`W0Q5tCy8JGEso%4|bgs6y{gywu@MGAq#KT z63K6K=D`d3#P|Q<_~Enr|950^ta*Sy77LK4mb^lg9+LG88T&ZBfU+&*|4~QUyRk zfS}N7G~cAS*YPmtGoI*oLiZSMmT7UZ-RUoK)Nq@tU5Sj8DxlMt?=dqy1fSzS)pW-@ zs(LVbuNP_Z%c(-%ah7bIkRELa;47GS8B$Po_krI1Alm%z z9wo+{;}Hc~LZ5%#bl-(OyUZ+|=yrC3J-d zqN87$_%CW$9t~i@^)R1Z?_0@YjWR`R3I7q{H2!61KI@k(A0weq(&J{IS)mMB@KT+4 zS9o*))KKadzzZOs=TSp}Ew<2?g!M$4`kh6#7Dm=^;J`WkK_fZ5>WB)L2RoPkN3y%j z>r{}C*30k5ateWGS;r%z6A}h>yfec@sibpXY%2)1b`uh6GHwp7IwpGfx z815^A5Eq>iHQcm~Qr)bfRwsgEo(e+$m^;D7IC6e-f$q$wyM<4Q ziF`fd96wyuMtWM@|44sliOmi0^Je2uPCvF?RAe-H?9lKX^nvj z7pep%zT9m#Cro9~V>6Ygl$>vMN7;>^F-l&sa61)wdjr?S$V7#fVB@bfZ9ZJPHD1_u z+`z8I;2{*G5Agi_fC$$@#oX|a}tn%L&jC=##gVAJ*a zC$)qn0&MF>3j~g$BOHwUtPlX;c+yzx)$c^4{T{*K5y^ zk`pE>P)?}0L0ad)J|Ense8SEz?s*p#du32bROA~nV|Qm@=Wk1rB%cqz1ZrrG^H$MW z1t?;!Yx8RqYBet*J3*AD>{-7b>NY};BZuOrNquB+d>wJ(`{`z!&IRSx{5O?$J0%==CxSdlpTSmn-CibDz-^49!^Mf$3TL3>!v9& z-lpssSPiyIP|P@@exyggx*9?01J?sxO+9oaj1CYFJXa!+hw6#ZeerpHByIitpKZym z#yi1XD5*Q|ZN1ydm(BZay|h5)woM~@=njrJ!BeF*_p+0|LQ*OeO~6qd+7|67ytA80 zrHhS_?{$2=3ms{v-57=*u2Fa@<@zVDb6=yG zT?57}O%MOXMoh;H_s~1Rzbyyo6kie`2S3B3a+(rC!mM4PzshpIQCE`m-^R%tbAAR! zDs7Q#tAXZS2<@_5vY{{*wxNRK6rGkfVq_mU_`4$ zmSEoZX4L;!#_fI^p;34xm^ccP9OTg3>n_gSLVZ(YlTbI+Hc?O)(M5h~-(||oi9Ap) z#f1Xkk(3&CfTAk$D_0Fq>-n)qunHeEGK)-S3E)FoF%9+T?+50;on(W{;;2L4UhX0< zuy%Lv)cxhAV!4Iu4!it&P;&Ph7?H7`{@VKGkaOMa?cQ9APX(rF5 zSiE1@!=(izXOb{~YUqJ0$`%4#QZ|cwfPDc5!kg_aQXXNyL zPXs`4j|P+Jmu|HjEvZoafonbPY|mAcMF)FTbc;YrOUtJM%lZaq?*2TWzD(EG&%D z1kX?WChKd*>2Liz`jeG;m=0q2g!S-49Gh6x!}~tfFmS42n0zv80$d_YoS&Z>C>T!RP&#E2isyoy`wZNb-#D;bW=Z`&bP~Rv?rX>L*W><-JNet38J5lNHb3!2>8=vL zhpuK`xc_`@^{Hl2IU~0 zR}bl`9u;v+tSgQRw%4&<-?HPniI^$SO8NS-s!cR$*p~B-;Loj@>7TkP!b`b$XOq2E zWpdc&U8B&tGs=MXUEfpWi$qPURFGh!9&hW&u7Qn)Rp76y??rm=2OaSL^GSUAsV5hI zJ5t$N?W#4S;BRylDd#Lqwej78DPoT-wI|2Iw^r`^qF3Yt`L?$app*v>Rk%FH2VH+t+ zQjHI>RGi-=hkxAhR0i174ji9azXan+nws&Q=Mlz2f}_&7XA)|UxHUI{It_J(zIhFT z)v%W-Ea15P%&YB-j6x~p$`@&PclRiO<&{5FdA8a+%e*R_ixiO6^L~-vy_@uHwHCeg zO&AqP7CON)xxn(ks=ooXMD)r!}4lZ@!=@4FgVd*w&-hRgb>c{LX^aJRJo!ftH1T5QB$ z8JxDW#br*xi%QD^6tP^6%<{f#d)C28oREe2_Xf&@c7gCWf;jV*sN5HSMmCEuxKGBH zia2vT;RC!LnPs2b4$+~Kr#rhx^vQ`a)4yWA3Bi9q=4>I&X1Mt`^8W%xqM{>Q?)NWH zZ|Eem9+xBs+9h`*9da-kaRKHFk;Qgfo3~QzjtR$Eu#B#$UExSFN-&BTIsXQ7Uv-mw+t}$7g~7n;hd!#Sz(2&jTEb{ z!J83{k6mG;^}{KWiD`t#COL%aCxCVjzF~rk$AY2QvfZ^Xpz<7^w9x6R@B+~;w2NRQ z8TBhA{}g;T`Gt@8i;2_>!YzCuH;=5nJhrA!FahN`bR%oOPc!X{Yk3%W6 z&Bj*CI{2+U-v45^%#esE&dxCAVicX_+LpSv#j}~@2y zIPRkW-DtB}q5GtXC32FVWd4@ELY{G=3P7WGmU7FOF(Q7Z(LCLZHsZHkc%vDGB5V9? zEi(m@iS{1$=1I73Qu(z?z1olm3$Mk(MW^Y1_RxM9jR3S=9Men!nh@wVCxIwc(LLDM z*7=FjkcU=|I@rz7SM!dSct7!)z053-)@D`XBjP42bw@?XY5gDYlN(#fi^ zcqp>x5-ozFNJ2afQpE{20X(x3D?N*RH(hOzrCklSJ|>XDF4c1zx>I=y30P)H_Bp%G zL7j>Th)&lQ<0Jj!{1pSj+H2tFs+lf1$%vPW`Y^9uVlLllJ|=l?OoXrU(Um}lEU*60 zpQn@p=ZMY)tVY^KcuLJy4iC3tNc3=;R%arcnGEAsepB#4F@DF=_bcqiM5^@%=?59D zV86n*QHeLVGLm>Yh&4NcaqGPGSFDS#2&sgJZmRN{BzTvPh5&q|hh_ej(9iM;txoSa zKZ(MNdtvo4nzPpUmE$XSYf4zCFiuz4Hx3~b`C&Fcfg{9KnUo|KcwC$bKz$s`-sb9| zv1W*N6;Bay6a;obtACW{{lKDCyP1BBU=7Bt`XFTWIHYse1RyRq3Y0bZgdl%)bMD%a`^+q;!7B9>xvE2+d;)_N*P0EKQyGuHn{(3u&+#^!x6Izkm zz$uO1^1m_$PgMv88c2^bq|Cbdt9TSMdJ`*n*BEct+)^Emc4QpVQ?KaWD+TNzFs4A} z*t2r1f}NY6zxnI0Yti6)hCT7GPdM1-5ZxRxo(jA7?!IC^N z?&@y!hau)!FmVajr{5cj10V8`#`-yWKX3mP^3Ulf*>yR(CDSm(d7>dU7hw?s!MWKA2A1+wW$a{N?R53OGAQVOo zDIDRX5!1vzre%zhLOsqzgw#Jrg9zbR+)f75^2eYv*}T17Qkt7k)Rx8~bGe9nhcaaX zFHyy6e4zqGj3FzHx;vsU^(zYcS1kWOo1CJnjkyY1r8ErOts5Mk8-#~j^KeX!jJ{L| zi0`8rw%>nWsXaJ$DDlY&d+d0f4_YyAU_F&?+)Ns-BIEgFU4R%ECwenI7TVf?*LJ&l z85KQ>%M$fv==Xv28X8Ol?%!P!ZJ(X%nQt}s(z)*mJlaDKMiM>JJ=eIq4({$P?poZnI1KJESaElEcc;kUZpB)>P@q6@_W@cQzPX?G`hLOAImu2| z){aEZpZ|7`H|SUpT0U~co7mz&h0LsI(m?l%55hn8G5t(FD7#Nir4V%wijPGANVR?` zr^~QyIzjOsYQPq38@Ew&Tb@n5l1PU7Kv}*_TpCLug(Sp-#rjQEs5L~uKck41l1)u*?CeYIzD{926k;1!Uq}UGCyy3AApK=rZ{3`j$vW!Jjm0<{cz21rK9T83fPXH z1KC~{C0+U^J~3@WXDd{r+!`646*%M>e4HtyKz7(fOLP~F0w`Rf3*2*z)IurLd$;c9 z*KVd+vn2YQuBuiSpM&k#TO;xnWV8&os%Y|?tfYEJ`7sr~mT>%izIY^bGObb!p9_pf zoV>Z=TLj`{^Su9@ut!DI*B}Db8PUZNcfwlKE}p5-H4+$Zz9QN~w!zK*AB+5@sVSws<4L0Yyz0l-qfpoAD`#|3hr4M zJ4?0}Ue2_kU6P;6)(5Ck@$qg#O`b*q;xzZdBJNj;xFyOD8?+L;ON$X_fpV%w+87=a z;B$dv;$UsVlq=A+@m-@(;Z=!Q(td>JjHTH^@%<((R=m*mDx$Xz2cPz@S+=%}Ka@Xk zT}@Js<_qSfWI0S}dk9_{Hq6`c_O{Pil? zqJ%u1U}2N5@^9f^m%z}dHh#B}mjs6if}?h>>32fhz2I9vv#>?MAj&O9m*b0*+tDfm zY{#&G7!!5s;=c$_Jl>vMa1)jtVyTqzV%ziHyM{57#~KANRX8mzp`Uw7vk;>L&Jq)) z`oDe`1I?EG`HS)dKaL6&f|~5ru;u+IrQ}NFwotsaB!^@KROgQwR|G< zvNJk#q_2&$4|8-q#G;}=^0?18Zg zvYdyU3!@LI1X=uQ&S15KwGfy*!=r)k=)sP8ur0K`P(cMfzd8PDI(wRC)+AV}{W*RV z-L`h*b_P42$R9cIPO|why34x zlZtVYg7*#&LD1ZX&Lipl&_C`rB;Gfm0E$Q<4ZTzQCH*9so zSJ&roFheCV1&G~kLVvc??kbaUl0&7E?l10Bh2fb@)m1(@?p~G%-&v)L^ zz)X5X44Lb~v>T*+!FTNVzNg|jTNy~VBoBQ$6)B)Z7&p)`;mXy}TuDZNzS2|L?H-gl zz9pgxqEC&?C^y)88hzfjhsH+L1PqRAkpcr|CA(I&-dZ-8%1{7y8*2AhV3#kE{P|V6 zkavzUUXq(AMaW!KUw*_{^O+c1@8;S~x6dwwFN@Uu&UGIB^f;k#1_EK?QoXMYH*#aoU{X=DS{`78Mm^21L7zT$ z(9?Hi8m1_dTpHdZb$+gXB>fkv8iL0ZJH#6s3qh{SpMM$Pkalq|1|dT7{_Ja;t0GnU z^D-ddAH)gqQI$zZVEwsXzjydC0DYJp#JUvi6lL-h*8ec7rV+RLX)iRd({k~cx3ORF z?j70_0+`bYFhzb_W^)jZBl8qJ>=#|bL+8D`ZChF;gu#@)52%GCJ$L6>c15mSW9*<2 z(0UgT%J~;o+`++I%==tg&q6=x z7mLGP-SJSFJ!b3*k|@;N3Z~PF&d~j;g8vmequhM!u9o_+kJ4KTR5T}-4j-AG+}Dvt z5J4DCPIDI*&ng2MR>;y>P=8C5Sp)OEmQlK+Qw!kity@V+!}32m;R%;}qm5Kn>(sK=31P@H*!FlGtwu=~4Tnl_7HujnKslIoK!tJ#zGuCSq0k0b{oK}@2v zNRKNd02`<_*X`<&yKwtHxOk4Uul`ML<<9+28!oY%_{Z_mzgoXzfefrwzz_B9g-=yS{?G&mb`o*)fu96#7{=-;X^E5CQb-!hiw*0SeBEOsZDThU z4}Xb!Re*;bk%8k_V>lW7tNUD{m)mymVd%KNJ^oABU6sF`GBtkdWNac9*(KAC>^+-J zzo+WT-$5V^!sFuV!VrK}W3X#z+p3EU0CO#nLq0`wu*8+NuZjze{~g(rSDE}IuY-Q96v+%X>U{mUy&`9uR(YbHf0sDNNUDbs_@RJ8KBc84RvUoBJNige@ww=pt@570RP;G=!KQA~LFl+b zjgPPRi46riJ82s?b{W{?)ZT0D=n2k}&|O@{Zs)k4KT>w;c>e3Aj}}OBE*dvv{-@k^ z*ubl{fmndV&={Rrlf!ag3;gztu{1ISG5Uo8frXnEYCLodWi}J+FLQ)TQvDA+{NVJj zoa2YE?&u}bmSkDTaqfcp&8I64K=h}0)4r3k7X0Hk8+NM0N}b#4#THsug%(TT)evj)DqF@7C7p>%mZjIm5!{&?qbm( zh8N6>>ATskkAXi_PJW}s_WextFOjKf3isC5hw;F}-=q3o5E5xYQSoUhpbU`&Ch!H2 zAJp0+4xQE;xYsQS+pMPAuVon)l#pX?7G5Hu?780Sl^)N4j{3+T1WljprZYzS_3y-8 z!H<|oc=aa>$PR$B$?rr|{PBZalkW=ei};v^A_VH1LDiORTq9lVW64Nnt=3t%;NA!v zm$6(I1};)Ef)d_R|7JF~v`Bx7y!>@N+IC6*K5GnQEGy+@IVIT{SovKk+PSvz&p+YJ zdYU+oWg&D2&cKf(2G$OVQ_oj>I#R)h4T#yB_w2FvQ0i?frDMs!>#F;p`>eABC4Vbr z5(Y2U`R=^=d-`li{#XE+d1{6)KZ>5&t{Hl@&t37wUe0ye+d8TN=!x&6&FKxD;|?V+=yI98}npzobJWFVCD3iPM5ohNC#3eIsiWgauE_kT7qcl zBso)}uOyDO3E~vHnkDy>a_lDFe5#f;F%oWlmCWDgEY4d$7ftGvSa^?z5IjsDTUFe> zQ2TvITm>C}w41(0e5C13ce!u=k1;5?(|*=)wdXz$R&ZfLj9(FCnZZ#qKQQh1Ih5K< ziS9IOO~?C?jk7Q?VBT6i)gT8=Bl8vs0kj55LhXI;oei-sY!7y0p zRwXLuXYK{Ir?U$!rrBV5qGo|O9K|2}EqPv3fYUC!eUQS!k4`HW5?-|kT9;$3-2Yz- z;HY-c()rv{J^U^9t^wWa(m>kICs0*D)SKgr4JsCAbO-!e9FB`MctmW9f%Fni1JA|1 z>XF^xgah`JvC=IXV1^x21Is`{3T&mtJ%KG_(qKH0HE71AVjgJ~uyrT<9weJI1(pz? zt@gC(T_^CPh`sNxf)Ie7+hYHY9M1<+|0pP`&hX6>6WUcbq<&}?~pd~ z1${3cIfT%S@;CTB5k7jpCgHyg@|3oYqIpxXh4m3uu|_~U{k|tw1_WL6^-8)obSrlp)jDutS9Lf(&Yf=L;b1a%iBgt+h+QuEaC&WB`* z=Yf*xLylJpK~X6zEq+d#@lJI+3a?_fk*}UM&+cz;k(U;;vS*hN1~p%mI0LQ(_`%xxmpLB8!W;D+e@>Ti3hSIj8K`Yj$sicdb8X38(YkbG#-Yyf=0qdi?BSM6T;l|c z<#j_kr)682n{zPwv+%B&mET825f`R!cNcD^7~ zCwLcV2g@d4PQs`~gaY`iIwZ6My(vzHI~h|U@DAOFvA;t7H;~zHBckq-URRkO>7@pe zr_OJfYATs#p)8NtU(WIW_<=FGcS(42JDkDNFoKtvOg9Q;PhIt~IBlv_Ml&tTa)i~A zQQLRo+rPPGG0oU9b;`WnaByI{259hsfl~1Nl#>M!0J0LyQQs6Lj@*lTUVf#+ICLdf z$!{y(v16{KJYG4uwsL8o%8%+Lr=2)=9k|Jf5AGgEW{|SFZ3DHyI+^0WST_OPA{04;`D358I&UL8|!BCHP z!qPfOHb7B{U2BYB5$+t)(^A^+fpYOk@XVv*90#^V2d0(^NphqgrGc&7cu2%>tDv>P^RL) zS_IJS6V}r~ZrLWp^3AD>xwpDJtMvXMi}9W1qpkNH7If>PmUk~9kB5u-LgH~j$M26< zjiX4p3~yGZ@itB9C@$2I2CYow_U+iT4yTs5IdoibUgzjGn*AtCdK|)EqQ_T_hi5SG zYBdv*$J8TYQ2*iF&6Q_O|HCX~^dtU07#uBJ>Y$~j@Ma^bDx3dV8Xr7Jf-IP(RX$O$>mF z((63q8airQmoT3{@VcVJC1hi_y7U1Xz+C+{R8OR(S!(~Wkc zx>a}_T#dF5 zdy4)_(-E02dKQM7kKGUh`A;qzlsT&(W%&9!yNA?zk=aa3Pf&gaj7#pGdvD46XVi`4 z2xOryqJCdDD-PKQ`)FzoFwMXNl2Zp!|Ukwz*x`9!*@lSvG3i7c{E|X`fx56 z3$8KZL3LsM_6VvKJgcuBP*(vK>ICJIiBI@p3!VdZK8T}=mK-X4wu6kdx5%?Q>}t{g z-+rbPn2>n;1+|Zn2O;tBTFdAT{iU=$M(>MFO!TEYN}du-ZvmJA#uGZg)~zIeP50jO z&5k&a&maSwdgJG@>0!3LN-k@g*(}B@I?q4%L*k*hnQv>i1s#ML>!-Ku&4PA=h~e8r zCO(J^kFpY3wdQAk(@rLTEtfou@r&76Rn)nno;!Peu@xjQL2;Wi@Xyc5F>GU?rxU+F^B&|J6YKye8Y_sEmEt^g5 z>@@2afEnTHj@!^R<);gbNe(sG|!8*ycQ?|_va<{cF2O&N?E$$H;JvU zB|qFTR=Sh<`8_ZrjK_SFOy`{^%&kkc9qw%_0%wlaq(s;Mx!Au zGQQ>L@YUusx2Z?3WSu02Hrb>qKA<208p)Z~3cQVwVyMkN%d&BX2Pf27;aBZ#rvXq* zXo{cVOuWe}V551^M54sc`|vhWA_*j(95m_TpItQiTc4bObSovrtKQo+g#-n%Z26M; z+Q3i!G4c(Nd@Lje0}-M;>aVPjDXis=-QOLd+T35EnTKi zh7Qr`m+!CZM;aAB1GFv|RAKD2$ zXRe|Pmx2-Kn2%NG3U;Sa)-mjkh(DxHbd!Epj!r;_52&+Ch>xHe(hq$9G?)2|+3e=p zoPg>6(`+vSrSztx>mv#Agz$`EQAGQQB544eC!~&W`SbjzSOZ1K_^+P~nGS6mvrKYp z23<9E(?T(9-J{Kxz;uc3ILOZ&+zFy@S-ZbCQIE_E1FRNIE{9iud~-9YPNN4fUFV|- zzc;%1-l3hbhQ1NJmaH5`0KpK|0hws$>{@r^+z=Zhc7!L^9?O-feUfv0&Sjx0*;tet z=`Ea8<$0dOv9z4nvM25;msCF#a(fb;i} zSeb8@#RWq2ol0F<(Wyy1UdH1wB=idOK~MaL6`Qe(1QSc-2#;`e1I;0e9g+O})e%E^ zQ!oNjvS)IZzqAazN_Bv@blLvW9HLKH9YX`SCp|eyOrF#nbCJ~7qt@;X9rV@PO-1XE z`#;c#Zm&cLK+L75K{oCUE#Q+|J_QP+J#iOrtjcc>zU;tqV&kJimW^_QtH;`JIZz9; zyx9CKeX|Wdc)lEQKh#k;&8InEE@}KNqqrIv9uEj6ujRQ}-lv@;mi?>xW0~(c*QvBG zJYch(2E}G!q!#R`&}EFxevK(claI$x>I0pZz9^P0$41qRw2DW6kN$<}k(!7P4taKL z{8OV;8TsdB$i_Ljle7_oWuMOyUxzNy)i;02diBB^r_Kw@9$T=(%}ngKcF*5DOab?X znucRw-q}~AeBIB8-y5tZmI@HQ{OGZnu3%vv7fKB*U>xY8q>+a7$bG|8o2gPs*R%u2 zPyHPtS}S!H_J~scDPz%dMEeGT^=C4}6{$51?N8@lM=CWME&H_nY0KFOts6;k=O;#H zdSSS#UA@(chQ?@Xzle@29&3^g>hp8Up=7QkUJPFLRwmCbnUkKigNka8yq;QE0BkrS zzlK|9qhhxZ2O^Pzn8TyLAj%HnhguMBi5$v1rx40m+8xeX2;!}OvjPDE4ThyAotrg2 zS$@tkmN*U@)n-PLr6`j~bg2ws^*Je8vTuiv{Q6;ci^zR1xdE@3i)t+pxK7a?L9cnU z!X_X!Kwal?8ge>@GO-ueAjENm7MuW!r=rVIw?|kIc@4;EM9x-vonIE($bUnVW}Zdi zamw-a(8tk|WOsB* z4KKg@K2jtN`JsdxX`kkF(OVHufBgaViV?{aK*aFIlhQ$SY3>zg%sQb4#Q=%05}rzA z?EHBfibDAWxzO+BLgNvWJ3`x54D=`?D+NP2R;1aCIOnlk7MtdvH2XKa9vO!Inw*j_ zAKpmTn~hm{ZtXebV(DL%Gw(iVfu(Bv%wKn=Swz3xvm96ob;)08`R2nt)=2RzUjiXIB({J&CI&1dxihp`H~+$ zvn9|q4ZGnj@2r{xRoU>hB1B^K5XpU2L=s~F7gm>15P z?NB=K)NVnW&g)J16tkw~kSC93V8^a~zmBg^!zwn6jgRa&$}sB7vJnmaf|3O?)y>w? z6@T-smPr*WO@97zO0#h2pM&X!QuJ85O&g=W>8roIZ9&@2`eAQqbyb6wqFhin20xWV zb@2O*TC4A?=(-urWisc#aU9QIeeN!?#5%VddqoU9{w$oXp;P47fHaNI3k3Vv+m%0P zy2PU{GFAVX!*qO!9h1g%xyK9+#t5}Ulm0{2U+aCE>6emmF(%-8E(xs}Lb798e z*A>Tum%HwB_6cn!dmV$y(Rg>6zJouP-+wsp+8n&*>P03s6ldD{v*T)r-FJ*8-#EQ< z{}lNU?(etd!EyDiJzyyu?1A!~pic0*^xWVLDH{@NB;E1RQ)v!_ zuj*K=j=SP;>x4M;cHY(C?!#N^e~MvMEfkWxVwvjgw;q+hiRz;GMruKiyDmp+jC3uVWFaC?+pRCSB1&ww(Bv1 z^?Q1Kl38#G9GTz*Xma;Bi%2%8wB5ee32er@8HbtWL5x#}HZn;qHNWLQiMrs(8{qMb z@a;SD8$~0I9(KoI&8sJiD(&1$uMK7*o^ z1D*P;PLnBewozv>hPoJj1#K zU1aXC6YEyQE+1BaP01H%jqd6B+^g=G|2TI(ce^|o28stqfgHcV(OR?y4g*#5H(ifQ)61%`=iYL?;K~ad0=@^ofXd>0PWvFuNQqA+pyc)*oUoAewL?&bws%!>Xs zx#hhVjQh6s1Ii3qDx)>wAi?lvDu&!gbwYv_XG*ix zk=M3VcdVa4e5ZU}|G`-<&jFrHzUHv)9 zS-m3_@FC{&!RPbA(drIl&XHebm5>fbY=62{%1LV z##I4iM>V;dqfXe>9a2b1ZrQ~DTy1W+WR=FT%6oVdxV{~fP6CpwHtvx+y}I0d*`{`| z^Og6;D_B*H;XqF^Ci7thl&cUaASN^wD-Pu#R&lfjTacH#GwLg67u$G?-y44YES**# zIaO)%OW`vUfmri@7|AYP`Qy^o#~$%Ip*`%Bruw+kIe04Ku~eH}tFnRd!CTKn{cCqv z_Xqq3|BtFp4PNo@u&G&ouHH1c_niu)GYrQBy+ja=vA1{yNUPy(0>{eDV~pNRcJqMm zvSqSZ*zJR8YC9B2sQ&vIM?#-9+H-#P<(fF_zIJl~qB#V#4CRETyD^;GJC6XQ8T5+T^y{(n;nLUPC;h&7C;bW}x+IDm9jpeT1&qzxq(i%@ z4hlKzk4{P)FoCE%RZj*(J$9vmFNg!lcqC{KPq%KWpqpfqk*DvBZ3Jt4F$~R*(v6`M znX7HFkb*keOhEEQ&(5mTJi`v|GpU(FWC}EMz-005FdN=78F6=09qlUHl~FPlj~s6w zSy?&JCz|>LoG6b=n-W;T6Mpd9foVw9PT09|PH zhryl{?Kt{al!4k6xgRqpni+O(0`#M7bK_N&?as(mWY2$)D&lxpAib6FW1CAIe++E% z{C*LzjB^jL|ze4K}&a2~c;prspqGo-G=3sqk`Uqy|22Nh<;(D`g@RLtiZ=;5! zdtpT@1yU&x3MSbbe__RLk9Styfn|chC$ppcWvRG)95XZ7xN5EvyjP+fCvbT~F3?1|U9G(F0A~YtmZU-T z^z2`Yobg*B@6B7(lizDW4!W*Z(<8h^x2zj*39%X=t^MtThjoLp&vBrMaFGx$RRF1~lbG6Pdxg!OnhVq&P z((R&|8(K4<&R=mo=DQjvuSMt6?@=<*khX#Melvd;D7|ovXF;6OEBJy#qHsoh{vWtj zl0#X4o(}J3z%A%ybmx|$xs$bQnT>@dMyJ9rz4}f(d9?2N_bAT(YaF4d#npD=&;$)i z*gON!;7$`%W4K>M?b1~+M@l4P%z^EtC0vZQ`=^rv&*I1Up_g){xx*yi!}9o{$%LaD z0<9_5$`IqYzMF|)Vx@dcf1TyHN&=NMZFJ8#HeTzDo2u{Cx9;a-s@)MG`i&Y^JHEz0 z$r+*=d&wL^Vi910tf&e+o{qSi)z}<5WcNn_TF&5asg=IcV~hP)MtV*xlf*^!MS(4} zqdUFR;iVwU`Ig7R@xzSCFv<_&F8YExrxRW8Rgs^L9aFWuJd9NCg|eu*P{LBkqOsx+ zNxmTk0XUD!S-TGcUch0thoRy9V>nN;?pw9%MBPZx>D3chE9Mg6jwzszI%<}EQ+#T_ z_<@HSLiM8SKzl0I9Sg@bDDDE3x@;IabhD z^-`+qim-FyKiQ6MkBZ@pAbrhfaQsKn;cbz5Qd&RKt#gX*-T0jkFXGC=5KysA!Ld4g zD8nhzE4X7BnpQ8T%C4NvzwaTQzq;zi>9B?XzIil^n0zHwVV8#FyO^A7l(903< zDf64*7G`aFJywQ0CYWrKzK846C7rSIIFR`>&Wj2xw>#y>KvYl6fs@WhDk?}=SGz!) zJr?v1!hLi=jK?kC7LXDF3Rd@GjJk{knHX1U<(9^gjtf}r*Fv0cQN>a{z_Yln!BVT_ zzxi{Je^L!$LgT%<+EKYt*J_=fa!fQ(PxndE$?0YQi9h&&q1A+4$*FvKdSZIC92KQ^ ziEnl${jnm_)?Z~klfUSK=k>}&Y#nGa#UBeOe!KrqyE>x>t^lD?r-^HEbj%){eeHjI z)n6T*cHNu~Ww|H*ydgTO8956oy4QwnqQBfXqw=+(%!~=kw=BNOcvpH(h_hE6AMgTh>{8mi*;s z7FqtaUXRUt7D7cuSN`?!UNX%=ZR&Lu%(3J@9lnD0Jtgp+Z9d zdQS!xNSif_Q!eVLJp5uv^>2V@#*pW!8)f&UsRIz04qg0x#u?e>=0qsN zGjNCm;Y&hIZgl_a6wKi9a=QC_fa-VF^siPiJsHEuJf>Plq4Q=OFN7>HezI@(P=|GE?DLcNAXAj?g^j zaH*%wsVC0wn7!l~ApGylVmL85Vi6Tcq@BqU-kn1IAw84s{YcEB?8E zA3XSiOZ(GxXb&&5dZJAU)d~G-fx~DYpTlk-oeWMMZS!jpG^4E!s$wpuSte*Vx+BD* z2gnT8W`9+aDA3cS;~Q7QxZ6S^DdZ>5z|s+guS387uvyU-(i>hVqi*xNicy(=50#4; zg%{QS|Fr--1ocT~@`ef)6Zm^;UE5ljwa)-hM-l!2x}NTaRT*MT;5w$e8hgedF*DQ9 zPY-bx#!4oImz2{-4Q4Vj{J@h7nw4!M+_}+|FY5H^27NZ?O$mezn!SfWAfBr;>Y*|C zug}g0^#a2*1~A(^`b;ZDZx*=zkCFiT|UoI|_$ z6#aC&R!MEf?Qq$JT16}xc^br-C?)_)wp4TaCgjl+6?#R?7!gerY&-dP6+1wzxo&?x z7FJtQ^HVeaDV!1vc41+48a$8aUGwRKd}y*vCqWZHnZ{S9{XJOs@FlP&WXv zm*gp^KTj8;I_$<{&DIg7^Fm`iyULUoEC zIw*2N7l3`iD&HSsPCb3#yB#Y$J%DuVd1+%JRSMaWP8<5_WHth=DF+gmsmO=ND& z9?48S?zgqVv&rI0i3d-S>Mwz)$|dj-iLl)UTn*ZVR_-y4i0}Uhmp2>Gj{Qs5*XX_J z(kUSxEimG)J>=S^7&~_~e%)W!`7+2hWAt7s-*@TOPvq9`(L%Tp!SXfJ+3!%`R&^!p zr3#J>S>@MjE$@kPdk93C>iJZv2rsjPY=rN`W2wAiDsJ_1%euT-W8YgmgW?;v z7QDZi`B{ayZZy!5Gbzv@0PI=AzR%CE+}<6mrQ#P6mUl1s@SV-6cR;XjMVI#1i>>S& zZhrC05>K}q>)X-0!CpU7Pl2*-z!rx?RFYnaqa8*-nK*8l^uVFvMDPSM%b;7W_>0a^ z_g2j~yG2N$A!9_!=R?8|-C3byW}KFS#AH-h15fKCiZInL3qYNTd?KwSk!^ez(|_wF zFK?SZ1=vjU4=%5vq0WWl7@ihc=i$tLHv~f&1S+Km zg2Q5F>T`_10RAe4_AfpaId>?ieClqeB5BfyJq>xq%9ih|yG&bsSq{;us!WCox-SwM z&};Gdscv@=={C+)D_Q%BcjB@U@e4-206wx- z_uXd>Z<)T$@IN?Aqph>nsT)yHgTke`Jg_tY8aj3*3<_D00-p>E4Wz<0G9)QJ_#djy zxj1<9$%Rc!@BFblTfaz8M|j!Su9d8=d+eqkVT&(*VM~1P{JTA0-&e`H*}(c{P`BG) z3PI~+;*D0lZr91w>Z3c4uS#S<(-t`LcWyZnKtk-yXxIQG&QADTgTxvx~jJ6mMuz568{g@49#gTk<3 zdZNG1sg8MD&wcYvF@o{R?xhb%PBj)y2 z8@*Mfzax&X+@Q*h4pvhpoydS6nYt`Glhww5noJ#598`$AVg^f@bRll< zM4W+0Ya+96;Le*0XaYD+nW!@l(|*mg4!v0ceEB zwGZDxze%8y)*t5S^s#OpUFvS0=9b`@1(pO!1ou1Z_9bCUZSoFPP)`E!jnLv}GwPoS zKTcA1$A~ks`uMjVRc8`haV} zlL8!*tmG5)aK`c*l%J8(uAX_Ruagcc+;Kr!rxoIpc>TB=(B-t_D&ulg&W#!&H-`Xs zP8vh)N|`RCJDLALdudUM5mTgKJbdZpBsI{TwX4Oa`uM$CD|Gg|I;C<1$bleO#aQ`V znAQDr-R_^dK3!Pn<3ErB=AGQ&U&Bd%3<;a)2yeW#1phUq%vE;?YL+E8kZKceQAw8f zyoX>Mv1n3U;HyMnnY52dVN~N0&=BM1xCz?i+3nec(*A-7u0r zK>w)cLJwaYf!IXb-F!h~MBXfh{RCL+v)bz?DNxF5bfi(8@@5tA^N3Y6(q3w=QXO#U zJo|T`a+REr?Jed@B63tj0Bg`qtxgH3_OP0DUg+^VaOLM{-toc$@tSY3vhGW#E`zL~1CBc7E(No#Sg27I`=!rp?rwS>QA;e|GP=k|@F&=fR`|iZd zY!;ZbzFsN3IUQo*CF(622w60;r`&HGc_9QF$D zH)d3y>?8*{x(n5%5@G{ezNR{cgf~De=>Pu;Hiy3W|y1I|9!;X;SlLF*3{HUmZ^DyU03V2Sp`lN}*WSxn{iA4b&&^$6nUid(fJ7~VZz+Taf zIP}2fQ$PISXqUf$6d9ufxjuc@*Do3leN#aHP8 z>Xx4c+^TL`f4I8BtZlI2;?>DX^E@DKW_SZnO~YUn=xnvNWSoq(tvwxzWW;rF-JU8c zN764y;6IwBd{D1n%3!W9-S|MW6PT=Q$q%`LGFZcCvs-7SeFxWF9BLr@p5j$Lm9D@1 z8Knm1RR4K$L!gghfR4r^Lz=nvwF0=_37!e$Y(8T&-9@O|#;OAgR~O>0wu^chm+!|2 zT-_!#tprZ^sQ=YpcTfrP&WCDjU55tohpd@7?*6wHIE%W^BpM?}(y_TpErl?_H^|j)MP=E?`r~=~OA7#h9J3ca>%llj&^6DD>xklWbl^Tz3 z^DGKjc1XlxJ)N9+`jrFm_fg99(l!c+roL?k{gj{fc4FaFC1($)}_e_)KWJ1yDK=_e*-ru zM2NiDcl^9Q5IxtVOfc>e(|!}V&lKnQ?skJ zC-){6uWxPlfa;Q}*>eLzbtj0E#6wN!enDK0#Uz^{8uEO|fnri@DdHc(Pf4Xq<51`@#n%ip+_NCuqM59Peil!@Y?QI&y`Bz>_@V|y_6z9=#}N9 zyyO|ZaNgFVpep}CD3bNLBC8x>kLwINXCIG9a!y3FQ@iCxg*D#~W+;-4KKIR$3;r82eCRPXLBElyiTaQ#U5U0F!+3BS1U07c*!j}>IcUhw zi1wef>1-X9T~w!gQB@<{-l*F{)}k2XsS~P+NB#o4^62#`lOHbWCff&cK<t!1G)oLxNhl zK!<;_gfvfBbOt}2p~PD&ZA2E!Z5iqL>Jx91dFIrI&LDKX?-Y*YP^%SfN07!n$pIHh zIyP*7*W;U^Nov(C0mUdg{dzHGou9*7C0Sq^Ptx7gB7Eml>g@PC3dL8ZUb&okJ#`J@ z9r#LP*>=tftQ8tG>bmz6F3k(_v($UbR(KC4f-;*k;UQVfpxu5_#6C*Ut_i>)wo|MD z&Z6YCx53QzqnX0rTIbG zc`PM8LGd)rj`mG7phrZG)J+qFy@28AR2bItrl9(D7&$PWm5F(KhTf{cPOD-2gadq6biYlKKo%EZN709K2up zXu6*Rk;l`-`R$YopdjBVRyLrI0jMZfV#MHc(fH>-`I&Mg1w}e$8o?@^T?M@%l zOk1w%N=~qmajAVjjaOfUPUW@{3f}TC=3ui0dqaHw8l=(9t~g%Wjr}HBH&|A&;4W8F za*kK1{V{&myw<{O%&ofglbj2S5Z5!J!(o^-FY0b8pALRKs7!o;5JBdY?m*Ec1R($# zDZuyPMqUA1ozGs8r^It7YY~X~zYh z@j4W>qrgZ+#rO6L>?=bQUxi5>n@`c5E;FHs6WUz2N{=MYh=&}l;u)(0#mU!)>SOBS zOsl@dOd~jHpEy^}U;_|18h^{CaP81EW9lX2|EWv6foJ=b*Ecjet!U0A_BBnQ0-zS# z%fkOSg{t;;Y*2YuVByt=g7l}f18LyGK&%}Z5wj%vO zThNV5m+$R=5c%8ik7rR>oh?=)TDMCL+5NL|rt<-Faf{M&jpd2RsKveg{aMz(#C%n1L{uAnosEP>L_cy%>D*s943>F`&I zpn6_0W*G?46{+V3i_6!H@!nU}sMeTZJcp94tqvFg z;GkKF8zXb3k>Ek9Wp|%9@^-e9c$DIs`uTO;@)@sSp;YWJ6)x@*y}p zliMRpU~NM9xD=K+wYx&-KvTR6Qh2l;NLzi>5Fg8-@=##Z*q{&VgYK&wUal#1azu(b z3WjDzh`@$2*+%!{y+8a&MYwy{5sDrUVWBeYT#Ry7k5+ zl0FkQ?a@y58ZH%#zzKV;XZ#0#HE1GKQ(7t|D326MdWZ!9JG4>2%rV-@=x8Wd7r1)R zs@wbQhUJdPuz$*2I#p?(j6=B|#=(H?4HdJ@mDNk!AGK%>RmS!I(R9{fQFp-}rzNCe z32CL45Tsj5y1Qc$q$F19?h;UH2`QzPuBChFSS1%wT2N}~j=S%@&wU>FfA*Z;nKSd9 z&zT7lk!56!u=uH12{4#*DBulTiimG0@=+`^b$@T(6I&zdfgOv}PusR&r12z*@;D9k z6#dT}kRhgl0y`!(iLeZsgTZ!QU2YLU&k}Pil?dH7RPDS_Y^M0@*HqVuMeeTX>xajo zUYVdUg892-zAO_Zdb4Bc3;ODFR!B*3im^Iv(_PPBt3n+ce({O?fz>>^pWQgI) z(lW|Vd3Bp6jfE4;J4KO=tw?Qc7aHrzR-u$%KfCXe&>Iib6n9^?P)BELig#PL$`mU* znp}1h0duTFP|z>m)=A8CmQW;RB0Xhk{PSqS>;Jr&;~QanLWxl@`9M9qHxV{yqxt@qucER7v5mgAn^s-M1 z;jZt^XD8os)^t78r9SyjM+wZ#vC;~++yt(P+;Qn@-BLoKy0zT(32!#6;R;b}sz}9@UI5_(=Pt zJ<}sZwPd$WMk041Orht1HvLd>?IOo;r>=L~EdR?t^>)yZ2fvC4ucMq4;!_vgWhGf?o?XJSW5dGck5)mnOh#T>fbRYvgA4i`33Y zqp)FUve>6;4ad3TdgwW>6c3rts;_0!JZR!sgL@|K?1pciDJcfj#XV=OGjrxz7ocYK zB19=}^=W<8Vv^}6tNPnPv%hg>?%f1PnWvv$7ZU2%eFQz@lDo#rX$K#tWf7jeuQNKm z3|??KS=kBKLtF$8L$7=doYQM@{Am(%V(BbqTfgjXSm9_h*%H-yt+7O%G?89c*%A;s z!~c@LNBirKcO0@A%WNyh&R`P3vD;+gDNYvjH0pUiV3|^H(98NOcHH_RVnb?cmz_v| zT9mt95{tr}4`kj@jW?gpR$bs4&?3MZw@3Tc9D6CEHIr4Tl_owSy=I7KOecS4O1$DV zie%S(i7*_@L4-ODOJZGVV27VUuN-tEq?>;S5_19+S>kbx)zTtZJaU?p-PZaD30$~X zf6x@L^@weG+5W!a)Nk7*hGOMud<>$o0Ex*%H&53Xa9+BQ7YaqQ=L&|W8<_af>A%R!F?ku=uM%UzXjsQAj5%Kp)=?nP1W9m&`F6)E&;1?vSBHf zsJ@!$YC1d2(YH>P{M3KB4NrS0uKdIW+}DFwT2@|Zok9Iv_;gE*scXOCTpKv_77SeA zSD0Sqq({4xi~EPM!wzv|B}wf4lyN8+=PF<^Hi9Si&X%IqB$vdNhUK{K;HgZD+yAOiWs!lF?;q}0f&o}4OGF!P8 z?#$-UOz&-?tzY^`$*d!=<8{+&Y0(KQCpD$RYWJM$YPgjXI9ClJG zF@m%T|1mP^@knTS>$weJm119CnD69o_DiB@Af=RIR=4f@g02txB8a!d5?D}pfUK+h zmb%*kukIux_ik>;(Aw=+TJlq#OfD3bI%vZ_K2s4_vdkr9|33GEWxED7=t@%W)?l>4 z_$tix?J}!{bLOrZswU9*wgsvy8Aa29AjJ}u|Ne_XB%`z`c>R)qsYn``$WBx_6m4<>}E@*l!I7E#rOFx$t0KGZNj;wfXnueE{O*g z=0^%k<6omo{jN!?9cRrEE0A3FDwBC2qPPvBORbMmmaNh8$G9)m+yOHKQn?F#1R(o# zrDQ4P;`UhJNY}g07zs@!KPku+SEk5&Ljizj?KclSBFfo|?8!92%1JTY4&Uw+It$lH z>7EpI-&X`fP;sorFrraGzu?^M@aK?Q`xFZ();*d>P!!iL7^OCmjoO0!``t;Zw$DHm z9;+%{-WU})d-?q=9OO}pYgx-{ALI1wQLg1`^pe1!Fijy^TGUG;TAF#g&eK)~Vs);G9Uap>6VpI;^$+%eW1 zBR{;?H82Yu(-edYytMxu>ZafW?5}mPc4|=2vuH9LZ7xwdqZQ>pK~PhYtd^h`5CdV6{G&#LgCyiwtCkoF7JVe@cPO+(z9 zy%^A1daChYNa^_*&dP5jIDNPA6uR!p{_TZkRuUtyi}|9;q%0oOl5@FT^OKgDRc$HD z%b-MOEX_sW^FO-}4E|BPZe`)huQi{B3a-I}lX-cAbVcz3vy{S^$X?2ic!bC{rLIs5 z;!su5$Nm=pM}EsQQ;0qp`B`gdRw^B{)0AQyQdAh__GdZZ%ShXVZL;8`&}qZ^nx5P!Vmmj1V)pHw^>EI8X$8bZ?*mpgP121T!y^Um-g=#pjT~u_A*2d+%1&5 zWHUk31g*L`bw1uvd4 z|3b?q9_;{hIt*e=Ay53-p` zZ?p_IaeQV}J?PyB1to5lw$?kqrjqo~r!ZZ)3_;777+Q(%`f3dA56{UH81A;(CVrN| zuLeshP%s8F_>~A1-nm&4bN^IYAc^%csrR8fFhW{;EZpw>+I7QW61Ezu z=v+7x-fTE`$56O!!><)AR)q68+njm!^6%Gtizcmg$;B@(!EtR3+LrsB=kpd%Ng~;? zUo5w&zOL%gqZ*tX+VNTMIUf(DUWY`X3|13qo)$1Gyr$Zfog4NV7PuzHl0$*DAadA! zrq@xyBn7oSJKPKlkNqO%1F>gny%mx9L=V#r@zPHo-59GO=nzFHw%<9b+Kvotu0N8Pu+%7U(fxK|wv zs*Za%Z(I}JG3>=Lt?2Yww^Z0rE!~h*LP?_e_$!8CI&91!OvE(?xm2vCeR2XMRD*Uw z77d9m3q(0!vA;stPA;45jo&QY^|K!8FZDVzf6zEi9ad{oxa8S7HJHrhd4p$p#ZUco zqBMF`evNQj$ia0kN`6j%P8=^Q%!Y-H>D>|_ag0ou?-{D~UtqWGRR{{g$C_-(_Sa`MHt6JB9NGU)E*w{^xtvGD zPPT)8kidIPDfN+x;3=mkLxq|6*XNHzKXU61ogcePafRGvUgh>ZLcJIb$fr9nPLosC zjm&zF<9s_`7r}H3Bz+!MV?!v2t|X2X4`YN{VG_b`f-x*Ux>&U3rOo|3=Lb_N2qHdjU$MC|za0g9I0FYuD0FjbgK{qrmsEW?Q`3N&cvC z_QHR(C?T~AeXr5qe1Yj7q8qY={EsRnZe;KlrZc0~f6Oin!R;4J`us0MN@@Gf>#60T zjJsWlxJu})^A|jL<(ZNCTP8JH#n4#wqcH(?Q2A{!^jynq7n@@-q(FGko8}Cdrxntz z^PlvctODJP=HM}H;u>eCv3nq<)iKa?^!`rrBlHu_sU_eqf0Zr22;Z-mc%wTS^Xc90 zbyv`pYTqRocfo37T>t`vyd6GtEPqp?)#twD&wGt^eV5vo=alnJf>7FYU^shtlacHg zrKl6y$OjGItc)oz2suFsifaS;B_ePF_kHc0<0VM4O+PGsxn-buLaUPbwTYS`l=%Ru zj{Nj~Iy2`CU2QW}eW7LLtVya&__bg!>%o2az#mGGC5#pU0m7h6`tDv}2In*tazs|i zNbUbwfVKJ^`bVMBlq@NX=K&Pz_RwIq*(>u*NaU(1a$Rk{d#ca4%bw@M64R zbblFSFwD-(7Wz$zVonf3eo8;D!6R&FV59x%-N#uOn21MkOWEl%K83NUV7IkS7is*r zyuqs?7>BgW&=A|m48*$7)jdRB$`#d`JDjp&10-uj5(=hOYt2MZ!ls z6mxjq%<|}^uv4fsuROr{3`B$1MUG>kfBh_`HZ?q$tku3!fuoCAy$90{8*ju|ZB9n! z!_FCbJ(+$cx$l})C+22PgHIaYd4zUX>$Q;dzx zhtaONCS9{eCotK}o+MR(R?f64*7Dvz3wdyiAa=zKO-kMA4q17*)$Rco8WFjlJ{1uW zN%|Gttne49ea!Ys&a>{1?(Fd&q8P-&=HDkwwZF$lnkyC{1%5ZV%le3ai08+1rip#_ z-k2zPgO@zXz30wK%sn@5j6T83Nmd_{(O*DG@wUuiqC&AH1P6M)QtV3I_A zt<$@qI?(x}>BIYb*}LRXp`A2L%aj7zl@1jAzm2vObFlTLI7qD`I(;5XSQU_G@E{HL6$zw;I9j`K2qb>d;Uu14^$ zyVlrh-wVBX|K7Ytqr%@cl>2n|jV{p{vwY+U)r!hTl$KG*0%e}Z%Q%P8)cUpOQ6(XO z5Vxzu&@acHAY;{{zKk9C3Wi#LFw?O$6a97!t`HB@hQ;+LWqk?VO!$p|Z|j;8!Dwkz z8pRihU(1|zq5{87_!YeGFCSy59uN9e_VZuz$45fy;W#TcP>db%`u^Yi z738f62ZfeBF&5zIZ1tagBn}Wk51KwF-)Jm3V0n#2d&9 zEy@d#V-srgFmzEwfG(CvqZ~J$r^C~F>=BHWp>5#aP21nmz=Nge(Heof@bs|D{kFE7 z(tR9a8}YYA70u3qo66Y*e>a+x}qB0iH#KP?Qvjf;u?sNW##j(qG9orsC-*gKWe8TqQ;sqTU>9>*WhR=seqe`Kr&FA&QF00rt^cuD6{(Ya+ z$xln2=n~{Mv7lwlB~C@%S`CAGU{voXU)vre;*~}@%}jB9CG_bEp2hAOX$E$O7|X(k z0?4-x&~n_z(!Nb24LfV%I7FhrDgnD;YBmt)yT(qEVb(K!=#l2y;75TkZai#YSm)XK z19(0q>@oQmUR%2!SS#^@x8pUh=Sk6|w(y^qa$$pU6BXjHU2lF1xK$yvZz!DdWVwNj zH~PI`g#%T;kP@F$K>;(2zA%Us~s<=XH3N_AZY;)74avYsgDP0pnovg)zs-s@)MB)!ObEm9byAO%% zTCQm97)B+x#@x}9Z+5Kz5+FJBPhQZf*TX!HM<~6foRC~k3>yv$Ut9&`<91;y=~{9! z8RYeyzJ(rk6CoV-B|-`6b1TH1@s|>Ga@kChiwJ*xmzy1a;ExoEItW3;d%dIFz1(Ix z22)$MbW?Fa*`$_lj2B42PEQx$u(S{oM8e013_^b?1Rc&5u>Orju6GHaPpyQXaz(=K zPVW;5nu2?N-ApQk>(_S9qwBro3);79Ngt!#zO9CXx@S9UmCq;%$6=OeXka-t0(S~C z>33*`x~r(Avy>oSrb`-QYsz!K{O_!#bS{bFG#+L&<)!5dl#PLH5rWfAfp)#$Z?y5p zar|LACB5G$)s>pskM3%+bKDOVlx?~4Re(R3U-`iVh=!w8SOZ1alDCuU$446Bj^Xs!1wU8F4 zWkYCYedX+r+z&5;UuM~|dOz!Sq#(9jME}((aP01RYEw?CgP{I4tKlin%!S5X zb8JmVuy{4kcW>jyq* z&IwxjyCq@WjJ$Ux!3l3aeXUJJ{r&cKm=I>o#q(_WB12|Gv>Sgp3rw{Ylk;cdN8{V* zfE5MVKqyx0r2hdrFEMqUqvttT%@8ddO-`)i(qR8;rzkAUzEc;k&MVfO644NLuo zb#mB1y2F>&8maUipHr(-_Yz+;@tkJYd+VAYBY~W=1-I)E4VwZaip&&VrJUx~?rT{; z-|oGn{i~MFH$n9wjNjc(RDRH})YpYswrBKIChGPzLA4MEK#|qcERo86-;_e7tE|*l z(TRuWIoe;@_Q8qqA`N&m1;UfoNSolZ}*M_u6}Vc>}qU2-!Tg<(uDxC`cDi0>+uWnZb(qImLLT+HP@aEa37 zX%<}Rrx5A=RM&=J{`KwZpyb9dyw9H%6}a53 z)xUwAe!p3^s_Z(?iH(0=zu$r|S%_T+Z3|8oZy#uaWR~+*mt^}XXM;i}9Cm=`cf1f` z(96$OzRKgY9uY6p&Q?E8r!fxJ7#*kBWuXf|p;}I(1Qn?*ky_TbY_Ea`+U9>hDnB8& zW5&C~ed<%sscvM{SxayvJ9t@g;gvs<`I~Z>m(}DfIznS3u3_BScxMOr-8bBD_!hUZ z*XtlbE+(ZL$E>0d*k+?tg+bL${j?(wg@eBn?Yv#zaxQ{9GwEP_$2{pdl8quB4 z9v!dvD|UOmsJE$w&_#)e=+di@fkuILVf-Trfgb?Vc8u!fqI68y7-1(GWNs~wvFAq> z8Csk={6#jF{QX?^jmWg*-DlG~QKhJu2))4^o>`fAt4ZJ$ZpWqfYR7PsmS4pin|)6$zc?Ty&_)zX)IvApl9?O z8Mv)~J@HTWN(s%-YW&m1F?yE?`kK6{&+74HJT*zF^>ub%Y^8u)I4N`go$9zMDEnWH zscWWC;)KkE2_MQ}X4$gf@A)oZb^f(N3-2>TYjWNrpe1 zp@_BD0%1-W^hCG1v-9H<_W@!T*eGSMj2Z{p5EHuPm83d)_7hsu@W!+-;dg5TEhBA z0eDVH=6xIVsBdc6{+gXelSpTZ;W_oABFFMNt{i0JxY^S6CE6hnHiPCC#EWhOMK-+_ zR_t@ViLcvCHvZJ{(+3 zm%Wm;QG2#C!`d>OC#_`7Kx-9VS5G$!iQU{&=6cdstYd)wpdwsyWSGD#uTxBZWVd=_ zu3lQ3u>4l6b#(3WA4^wF*=`zqS#nk@Bw%3|KUz5CkIFNi;_k~Qg*oYy*}OojLi+3y z*kDdVE!bTe>D#)Pu=P}Q`?^VkyD)6h0rwci^yo-{FitZCup^PMvsUc5oM%CzMD9ye z@q9^A=>lV;JwcQfkRP_jTDWjOu*T_pgr0#_LF)_lOi#X>LOP||gavZ>huiW}8_}ON zq}jsEZor9`&AYy<5xd2#z2h4KHUb?CU6MVCz##Hz-1n`bAx39b$Uh^qUi{T8*8eJr z^#~KyY09IWTm=8+j&uUq+(T@OE6z4fVnomV7dF2l`v&fdy88lailOp(>W zlE#{)q36q2Vu~_rLij9hMmZ&*nRqR|jawQ`SObAwpW6ok%}FsM|H3_%R@$j_3irr-qPhG3;Dp<2qAg_|CAQsD_@@C&e!3;fx?T5YWwTeB_rY4#u zBV};6v-if@)O=RC(QO!MFqur$>N`v@n7q7ZPTdo=Ba6JNKb^Pmh`zD-mEEtkga*9w z4MQ!c24}i$sz}P${uI#hDhKKH*cJ?|-huR}Lc>Dk!fUNc{aB+54b2soOEQ0$iOAxx zQt$4ZQ(mD)UOkz&=^*YuRNqzr%z~z!1OT6SadDepA4}hLFtyYKcz+^<+@e?zmwc@; z+?FXl{Zg%HG2{MPj?zw|Aean?py5?nQ%)Yl}ujIm$F*S@t>QFI8e~?A zM-A(pM6`)=$7h#&J(u7u*T+AC{DGJ&7Ek%vs&jY>gy4-*NfgJ18*8F)_Ii=TG9|40 zcH{2=O5o5;w)_`fCz;xiC!ufsb+U9F@&fhk@g-{y+RAH(QTCrKf@!u?j(YXkJaNU! zYga0ZepKG!soF-?#}HIMTtCKCYov%ATfy1n$#A4h1n@$)Tfxp4qx<1SPa?>eK0Z38 z8WwHqWf;=+OE1O-s_+40H31p?mi_my_+WUN&|S;c2-o-KTvoAxtR0@yI|ZM8YcR-n zli|Bx!O?NEXklm*L#_LYikinSMl)W<#=dnbuCCI5&Fj64l6_P3FwRJCpH^YmaqfV$ zp&U3=(MQ))4Q>!08SyhYlGBq>0wwOJzAw&IC@$n%aK^fCTQu*{NNco44pEq%KAYGr zhhDuycog7X2e94J)R)^06XFqSLTYV)EDT} zVk19z%e<}#_eF2WqovDc-DE*$7|P$e@``-pgbHWUi7)XlW2>)kQ$DQ(XnBaK7}`LT z-+SvQi8k4${8V*NUA53m{008-(XX-l!nHP{sz!rFyeF(r=HXR ztFU%2NXc~TYU!ukYx-1xXLnv@he1p9dP8Kby63RGP0%!FDg%6b;btWmC%}B_1=>5# zh@nB4R0)bidh4pDA!++q7W@b@G_AH#a_kyl8NT+fVYz6QH_rP#?A`KE2w&mlk*FoP z(MN8xZp*${HQi?}xU>pO($SZ@fO=D={=jVYw6{~~BecHj{+0p*^1 zu^v)?*Ifsx;-RI05%hyxT?SUE>}{6!Uhi+XVFJJHmc4pey$bC+<#mFlQ}CCou!f>8 zrIXbdRBM3NWjYaetZpc@k?19qf0rU0qD9lZT!bZ`)b2aLwEv+HkRe7%(Fm>&YI{wu z066j|v5&8l$*LpkR(|os*X~YjP&Pq`b`i8~H zxgI574!SB)^p+`4>3pueCmHg9{&OOP37~5Y%6OmNsc7<^X4WkWUT#;*wZ#3_M*`3*_@qtuq*t?V#q*O2tqd(H_f!1*rs+^uiX!mbHQbHE*_tKZrEm`rsCKRwR6Q;uHSe z*2Yhncg>(7sG?~wD2<#_Ugd8xC*WBVqhF~(ed@-D*1#d14O??DQ=+v%Q1?maJQE8j zHU<5D32yI7e7_T9Q zk8ynfL4SmrrCxXlVaDRPCa(=3%Jhr=fK}fo_Bc^U3m6lWqCTR^*1~AoXi%Wm&O`P# zx4u`zz5BRNNcH@xVbfGmL`+1cmQ>n$frjiDOgwkoeWgrPa5rX81Wr`@A{7k}uO{cC zv7nuJ^^$$BCmqr&r8c-XoFC`|cfjaK3$bs*g92pd}Sq<)k*ExnB5f$dmNj+L+WYd5ftQcqzFH8SohiqhbHUvvBfq-uYcKsv6Hll z75{M{I(euq1jxbI%K|Mm==y`MbXl{^rQkCC}fS+T^X=_~=c( zH5VyKjXvAR92%CjyxyL&Bf*%#AB+&&So5PmEux6GMZEa;j%h=+2#rk>fb<;9)nKw1 z-4Fzvz3<%`;e;?GZXI}6+4YGik!)k;Rk22;2{7bDLWPz8Z!}!5t#iaTE93ix#xfs<;uh z)Hgf`h-r98`|7@|7jYWy zWDSr3lDRnzW-T4mm7YQjC)&cyy1BfhqN4>fSk(Sm;~$v0bm7#o@lZSEjZ51N&hCF0 z2A`_4kBFgGGj<%75@TMhw14Z7Q1E$1rJM23^-xMFf!^M1i$N;EddxdI@JlWl@k$q8 zdry>>c+SkZyLauX@l-bQn6t%S;1=rl)#>5kvgcGH=R(uAxEN-kraZw`16MbN6PfaRCY6r>{gvf8!epKyvM2jx4Sr|-UCb;3nYJrai8$BVx~?i1_N9pDu~C6*@+bPzlm`kv5j6hG#17xvtD;Q| z%{sTnMTAd~JMOw()yC9LFjT9EmgMiC=t3@nbuI~|5d2Cunsw)Vuk6(@3NC9xE>~Z7 z!~S)B`|_(hKNe=I78jwnfe~0n_-0tunV^B`Lu5MwH%V-m?qYzKl_1<~p1VQnkqX^$ z{}(URUIDm=QzYYoN97DE_E=bmeBDL(n1~TEP8KAMe#v~szfR#v6vQQBw-SvzvDdK7 z$ImYaVf#~z54Go~W`#h@HyiwX!`o>{Us%>_D2EmJvkQ!PXkl6`ElA zRnF1}he`s?1Apfj>2R|%?f>*exr3!OQY(KfqHqx+SX!<1?hJTmw7Kd^o03EHwG{dO zCSP_vaGmpeq85hBt4LdGUc!xy_VJ>K+YEIfJ;whmK7L8FN3R)`>VEY5ha*Gs`F;m4 zGT0=zj8HW58b&2-HgX01GDzXOoRDs6-*<_OJn&Q(AxKsD^MNov(hz+cslNAA5b zYr+n`mj8bipexI)b7mQR77TIx>&wY;LZ7l63E{HvGo=MkU+UhI#4~u7`=1tNUFJP#0Ef*gwiv=GxX~hBU<4^ddK6q2{ z!QNsmRL7%k-%U&WVfuJugI^0UyIzFxSb z3ks?tXgGg-#C-@P2`zhgc#OXEB}Sdq{8I6mz1-DkRdKy~L^K7~9De)f-~Ks(=0hJ3 z4=v@c({3jF>*a9V(Nkr;J1rl$@+P_&tV(8}XxOb0r}JaZ5Ah>^Ju2U|?3u;zowG)q zsXtgX!IUDy{71}h6>%4?Ve4V<`z1zd=zQ_WZrhf0MCb<2Nn|dp`=xxxZI8>!3-)$c zx;vi+1zA?uni!->CI@aDL!RL64Kk9Mws(s?A6Nwz*1dZ+G}3yC+=QGGzA6ZL3jRX+ z2Cn^Y)%QhAg=yc};Y!r;Rz=w+VNZMVA4?e z2`AiloXg3eymHhd!miVKXkOA~f7E(4II~Ys7nws(g>Kb{Zz0GA{1!y~P)QtND)Seq zBKy+lO5Alo#N$1UAwW98J!d_cc$s@nn{!c{Uw2}CV30!D=v@!jC!25HBu0S-tsb*7 z9YkPlpoNZ!XB7uelpPyri30vS?d>4dp(3H+8Qlb5Dc0BL6|G?VnFK#dXoT2@lFp^C z3TEmD^3Anpl(+QMt0J4PRxi>ZT;eAJ+YtC@^E%kQZ(GRbcnH&8rQxD;eAe)@O>gV+ z+l_U_V(%M#ANN7+n*9D#hXA?KBg^4rF$3`-u(-BCvC~sTK!Q(OkPnW0aB2P}Sw zul9FUhsD((Dae#Jg3Cl>zOl$fRhy^lW`c%P$rKcEZ5e=63i=Tx>UQsX6O48YzN3|4 zg88VI?8ho=@)m*>09z)t23a78Y|Kp!VF&;j4pbX%YpUa@sZC6k=(*#=$T!Y+7CD&U zRDZ01hXF?Jv0(?2mtS>-HaEQU9z9$_6~_MFKFy&In-Qa3zu1v=^vq4 z=uEXfo%~(Q88JEktl~|E+d^HbB`P9F8F;S1uy49kqQ<+i%B#8DpT+ufL>={*EL>?} znbM%pC2k!(?3Z{#^&m@1Zu5_ocb~lo*xE3S!<;o#Td`QYHNr5Yyi5}NO$oq6 zEv>_`UK@q;;!{g$+yVuN}tli)VEe&3bQ&oNZ-#RQ?Bwe?=x zAUB|lL^DXm+S!O!xlG+VK5S0U z8fD*tC_irqcGl^ibKox@3n|T-4=AyG5<9Sb|2KA(23URVnD$xNk6N_QeRF|%pb?hZ z%1UVBd9c@e8ml@3wYpMe_3~B|2Kru@+Rpipy&b#2k@&M1++WF<19!KA#61C$kyr5F ze-!xer2C1h0O!>o3M?H>-e(+5v>joaUGJ~xvj!ywsV$uhny2~i#G)^^zL@@6wP)Lk zf|rri4w$9CT)P4)VCZgm+N6n!5rYLla7pCc5kH>ZRooOeAU>5)9wC=NW{!1&Wi8Rh0FD#@1*H zde4_c(6w%xl&|7P@-m|L{SC$y=UFK;GJ`0=sBUFLEc;CVqH|2Dyxe)B-S#^W({)+h z@VN|0uR+2Itr3$|!+|APJ7y!)Y$TB5gQl|EPN!>jId0z&ohh|6EXany0@p^x#|_`E zkfJ-5FA9!icy<%Yb@-%79GMQ@_?pe}ftiW*vgpG*hD;*$k-%@!GFn~uA%R4-#<@0k zdRtx>PjiM167K>%^M0+))$|S76kLwazO4A`msfudTugs9g80an3fi2T_{P2+R+kp| z_n$|ODMhGcD=xSg00I$p1Um86>0)pVYvdQ6a%gtn zsS>-tk9<=*-aMmyHdQ_mQe>uzYDsP6)u8d5FHg7^-;+Ih=u&9vHQ-8@`k0nK<3zBM z(WFkpKFSaT@ZA6S@n}aTA-F((B`ag+tDxdQV*}A>8vpjX;1@%r@ev)%!k$-b@m(C* zP_PS&DaEfcWs(^8oy9NVle6sgx7$*4HRSbZ(FsXs$ULx`x`N4VM!Uq-cbL$yX&fvF zPB0*0;qUXo=2}QYU@@C;m7_x#Ns?RL$xuO@YjQs>y(d6`NW>2rV4{b4nB0_~C)Gxy z61);K?X`t!0U=f%HJomC{zvYS^u?TpI7e3Ipedp3zA{@PIKi^Y)i_EZ4^;aFsnAKn zK8AYT&soZ4BX1e_)f9ZFkYQe9OrT{PcV*#kjh#LM3H|w#;SLdp-&S2GEg$tTL$X@( z{CjHePP<#2-zJTKG2D;FE#!n@jiWAsL<2ZgBQY!28Jt=A`bi?OWa^Fpw)3 z;O6Z;$zF=xz1OWcFPm2*4JYvP0$h??TxjFrmvYpz zvpAemX{7NEPie*_U7T=@AvE+*=Oep*FMk<8mvi=|qiuNl_!O_mf&utlaP8{ohlLH= z!#4MWSFz{+E`<+uBRbplkeR%LAhJyfF}Qj(_VF0CFdiJn?Iy^BZ-suZI(5Noaf4ID zH>PnK9J`wqOa^j0j{m{O3GeCy;z=m*O&O3y3Nl}?u?ps%Ofhn%uL<@U#VxG!kD&(? zEbq%D2TTX{ZmC%ZbgO7=E%}~{X<>oTvGUCE$2RN!sAHj&y$13xI9zO|bHe|%0l+*F zLE|=+=q5IEouAleP%7f3?%8KQq=NBxl0I=O#}MF02WY#;i;FlG3aa9x+bbpJtoF_8 z+XW5@AfeShu4>+AOm2bTa_yT4Pi0f1Ut!g4UuY@X9ZJkr^$2zuuLADfLby-glDWz5 zSDaVKjoCU;zf`G zrq43iD{kv}jN$#haCl=zgye$-0lUV_UeeCC?efhHCrUG983%mtJIk1jg7-E+kY>NX zKHq7V=TQv4(}J#q9Rn69{>6||Phf!x>pFP!pDf@tBD?fK=EM;B>4erD*J zA?5Qb$^jW5|18B+qq&G6!;zNy^3j7ggQfXvq4p9ntU;?`M`x5L0UVkZ20SD4>bT`( zITRy6-Q5GSo>p9SC|U+6;MJd^;<$l2iv#%^_%@1uYxr7 zYvP6>l$T)|B|(_Ob!>nI7ZTM`(Y_33dLMXtegSvY-wlWH-K(bKiA-&7twIA zt6c$;puCb5I;ZmL^44CAy<9gfcs{Qqw$3Co`mXv6Tj{T*pJlF+WshN3 z`3CkXehKA_?`O545^ydFv#tsSutgp$Y-{`tD!?RD1RL4lwQv$_ueX_^)xxM{cRQFq z3S%#lB8lhwTrc&H=-yG;5IAP~B5H#HM%|ti>rz8y!7i6ad1=R7VYsEbJO5I`bb&YC z$(erf6+4Y9{j-dc&vZ1mIatZZVgUKE=5Pz3ZGR@>dh)|TI~iuZpV#v00T0Pw&2d@& zgEje2wlX5^xIq7rt*_GT$;V7-AkB5jQd>Jy#BwdgW@LlKn3@w^|4nSb8^P%KFY+V(6(`|&@&8orkPfMLs!K4vCdpV29_cuRQD zqhoj;hrmGfc@d)G?BAr%t5m#edV(7ipSzm2o#iv)) ztqIwtJMb;hH-Zs7KahT+t0g&KGa#pUc`2n!Jn+xlwtr55{8(!wmT-HFx>L;1QYZ@N zV$~skKd;T0;YZX!@qF}bwM~A%(0kyv>S+76244JUS;AvU?)VejBsqw?0_O1Tre@Xo z1u^Q1->~9_7NjNR24JMJk@he}S$<$SD|4)m^oq-SvT$A)Pj$D&UF(CsuV8yuypbVv z417;D$lg^r=AR4pXb6{SeMS$AMFyx+Tkhz;Hd);%2(NLeOsL%nPias1ng9D}XEz?z zt>}53YKL8tR|q4kwcGQ;OjOM1%8_(S`yIJ@%XUYyxR?r{#Bb7K5R#^>^7=ybcGJ@R zYi;6?@o)AQ1qpA`HjOaW+s*tNolFgddz>&?*5>pX2SJ=r+!GXKqW4=xuP>g{4&m?#v9;d>@-zs^ z=1TWx`i)4zaHCBc0^_DBTP+940s_k(WX?<;1UytX|0y_W_G2dzD#R`P+;XNWXMbQv zQKpAKXNSSQG|vacEFtV6GgZ#zjI-l5V+xR+56Z$p4|~E7+o7 zpRbh;fu*~Fy3$kdlz@ZlsaUrCGWbSekdA-~W2Q!CiCa%$d1o zK;KgQ(NL_`aHTbE+s7PUK#vzsd5TW)lQo=nnk2+?eAn>*n~(2?x0tjn7{YdRLqEqx z0-T1lQz0`pCluwBthCk$rb@lH{YXr0=e~el-g5}oStD!HZJOG_wwKCOO0^9Y`$`V7 za+})-x{>6pKnE&>z|dDT$TRYh*JAM!ZK!L>a)mXPyu|&1AXI&0>H@IOs95OrZjq1J z=%Jm1?+D!>c+&Pb#Gse&knzmXUVq0zU6Z>A_}5_!8z%>a=8ce?2)#WK1o8qNhSeGF!__V)j9a7p|*gHqq_b{)=3 zbNnZ`{Nh3qzQ2X-@_D_~ni#e7oR#uW3ABa|7`U4F4$1W4SIoW4rbE9(RfZAE?ilF8 z@89-4-BT6(BZT~YK5?wWDT|~xw#liWT$~PWF^AMYwxAS9`tFl?r&XjF&?>Aae(}9N@lr_Ch9QAmVgT(BTa8CRBqrSV?)S zF`@I}Hob6T&)>?t$(qRmf;3!Gro?c-W)58TFlR(tt@(kR%I}Yb+4OsF?#K8LzLmpj z5G2aCIPhrLR1c57xmj5)2Cxx7CwtHSrw6^_3LNBVm9{x~u^KMoxM|*;!M$;9C>t{8 zi0{b6>kF0=fB0qYUw_M!PDOh;YKda9zv`UzLsx8%d1?^)f;S{I>)VRy?+kB;X-ae6 zGUe<4m6fP6U()*XgkhTSGvc-{mB+M92xbKQA1d;A82B{O2e}5}0If<| zul)DRea+7H**UBWr1%8 zd@{n+mzXd&j`Xh=Cv11`XsP{PC5VC z#+NynERFmmOva?%Ymvj>a(|^Tw`@_e?3V>_Q8;M!$o$mt12d$`oWczVv0$T+)I3}c zLuz(?nXPO`Pr2$M-M(ky_vv*uN5Y@V_gCsPe@QgSaYi5)#_|4xFoq!zAKhtYwU@~~ zTlUBIsaTrfZm%n-r*cR3;mILS;lqHKOtl@r+t-5&r_AVZc)Ms2CfUycuMVj|3d-nruy=? zfpmW?bkSdNLYm9G_h;WPUvv}51iEd6`RttQuU`A!6Fp)xg_(K5UE_(_8$qOK?w$_u zV6$schF}l53-b_u{~J{dtiKN8j86vIDF%}<)JJ#Cj`3vC(O&W2?7+*6v7Ovv*Rg7m zpPsCZaItbROY-16NQnJcpEGLLkiSEl`9&-Euw^Py;owmTb#X7=eA3v1CU0G8pxhBT zhnn7GiJ4Mjm7B(LRkZ%dTHrgt+D_fY-<+mgeSY=dR!Pj6 zgWc(-H;!78aBG+rD)(^bMQ;TA3|g{C1)!~-D~Gg5lRkh(>D~)lDlJ@1y~Y0hho>7+ zDgq4}AR^0D!Z^EWkAR;a1+P*+j$^NpQz)=Kf+q{t%vc`a8U?!3=o^GdT#h3qgD%2(FXew56Uyf z8kRsVGNoKUgT!fvu2(6UGX(c?zgkIHBqs(26F3n%`-@a||Mry#u5MpDrnfTEm{X|4 z$s`i|79I1!IDwEF3dCZz^FJv~cM=Z^Rl2^Z!`pq8v#@fUP*yPqmIiSO($lF!LGR$xr8%;h9%e%;?KHliPsOsbPpY7`ePEmNq(R%c zuB?naCJUy#TNT<8X5s;tm-}eK`vOp_n*Y1vNaoN!`8vUnk^JF1Qy4P+AfY%t(_4q0 zqU;2?Zg70TQA+b<)FZrXMGRKJ-R^hI`ppuEzJtxwM0oLSEgTZRs`n}+n^`Uz-S~}G z4l_ZFgk8DmJ;=RgL7Zo8%pLXnRZO_v_w^*>WhMFXEmv5ri|!^MMYG)@;J-S{q~SPr zuUD0woEb$Ry#Hl1yJLn+3Z++uNF`ydZ)f4D;J}$XI^nh!t_$VxlOUf^BJ01C)*qKI z&7@yD?UWzTFD2|bJuHLpcFQojNv&`OelcNpe@JE|6j!cA5F`9OVSoYk#IrXOHtU#f zOF(*cEm@u*PQ-9*WK{N0yR(TxGC&NUFJ9{4xALmQw19j%#d>BI24Vg-tBwrw&3MNj zlWL7`-b<}(aI-P(QjNMI#ws>)QdDPFRHMJ>tje})W?X0iSIo1ztY}TtE(_!&ph)o7|KP0;bXd+`2J8-)^bDm{RTR5jQLe zdGs2~F~le_iM4RizO^>Mbgcy!?ti?2mys;axes78AMx&Fq|@z^>SgZY#jppF85R;5 z1UVgvd1&MEr8%f~D(Ml%!!75_g%w^*_8kR)G*9yVi2QNiQ_uUqgco(OSr|~nKiRLy zXy5Y8kDi645Y*FtZ#BtN0OIt37AClv_!$Gi-v=toHlqRl;qTZK+~yvwG0g0PPG6+} z`Ay=12(HKPh`euFU%1B`r`!${s!8nT8R#CuEsG^e1#_BlBL$R}|C#OKfkiZ@C%*K4 zrFTEhfajW5Zr|Y20^gNIUm;gU)YO(upP09thPHl*#8iqzZ|)qzXAl%!zmj;MrMrH$ z9TS-=9h@xK$~x<_fB>S7{fWLFN{oNZ@`-&kv#ka1)QmYuojmQiRIffkTrj_9~S4xk8P0CO! zVeT-({w68M57jMKSG4iPi_X=h?SotMZDXqRCKXeWM=aMZx*%kFIk_))uWOB zZG^<9Kx2?_n38|*HXJ@DiKa&q5tS1@$KoEjZd!{<)yOoDuw&CP^gha_dPf7ZM(fil zal$;@AABf@q;>0jBSQ^%;z_)QR^-dt~v)fi>|^*sd$elx~#7B$%9nL@}E+R3$ zgj+|Zm|P?AAsMrJ@Xj`KU{D995!{_}zj78WhWK_8Zns6)GxY@!Ym55LLET=jA>MU^`vi|u0cx%F|ln&iDQ1Y4pUZF(|rGSM72X(Pzh_f8>xUK z*MmAHGC)V)^@bPDt#v|A*wkFl8+ZF~-`}z>m<{)@_g(o0cK|>>(~rcvEL6-aW>pR4 z!Q|K`Kihb^ozVh5@}NmpyC*IT!c;mlUsG)N4#wmGyY(?Ig33`JtElC#xY9xR*|D+3nf4cCcTLg;aj2LIMHuiz-^2v6Sqy8lEeP1f zF9%7-YA%ZmM5oH#vvabB2>`%ByuceG$9!5CX~ChQzwA&Z>(3v-*gmi%rjaJl$RWs#gyPE z{;Fu!${U2_>h*vvJu0<|aRjZ0EEKe;Ld6#dV=>RgP)zYjbW5qSM=`9m+$Z7Vj+`;D zVtCX`r*iQyj|-9VAR@d(rOr<_>6ap5m$ICbB0~Xvi{~)k0bvny63l~K(MZWpxKnR) zblc>Wv%s%hp=z_|rxwQMZA8XTCgXkci|@wDD&`sXXGFp7sa|Tmh1j zP_FUz+$p5c`#{9n-}aZC3ds1vLW*cq%Hq}r6Yi19GxoLR=7>y4*py`JVJN=bwdI9N z!**>|zVR_xTq3BnJ3%rv27Q;EBNs1_aZ;p&CX6WwdFhReq7hgRk*-z&B6Cfqe7q^3 zi^*L*0DD+YYi@gEr171$sU1wJnvd-^4OJjM$@WWI<=|G7~W{yR- zJ>gezCPhGprKVKu7mI|E7A50PKP^i{r%G6YvVFL1(p&imKVn@*3s>!^Y#}R0=^`y3xu)&8I8FrVmL~=E`Ss$eEnih0NnjL*3 zWu=h3so*rzKIy1`?}x#U2ZDWKo*;_;4^QW^ZyKz9{-6%XMrdyjpZ&+C;w5 zdylT=PKBEWSsNJPv#MmJM_sg8$+VZzw(1_Tdi+kE8DbW~=|{kLLQ;>sr0&QEhB-4HV=K(HgSrNbhuDROYKIdead`nV5Wog{ps-7|~9(k2uzwns7* zc`W=zgF;6C&AKI=9aI%&^SQ8nb6-|TtNgIOIsLx0LPTKMDhBOJyoZQQTeUpO-5ks$ zt;TY`9|4~uNTp1}_vi4FUD_%v@=emtCLe9NW0PYvgB#A5S+|U=rB9Uhm7}g0C*B}g z?5g?9$EF>UUp_w0zh@2+k3<3&&EM8?gI_nKDowZP76hcx($h14wzHV_kf{C)@v)KC zB7MYjugyG(!47DS0vencL9cz?Syt!pQK{X|;7zULlgh33Ewtsmt6i^COs!ak+R^4j zPEgbqbUmZa^+l`F^yq{A{7OQ-y!+9Adb_I^Pl^ z$0a^}&%s#v?0YL-iZsuk)}OBVlT_V%@((E|Y^c?dy!-Ru5EIMHb)$q9ZHQj?-KR?X zP_=PBz@BmT)H)W;&^?~JN_X?YhZ8tZJ6(RMEp+{Gjg%vDm+yL&BGh|G!uvn5bk0XvV=5DzPdYpFTT%vLPe3_d7dJlYR{$yq z71#dFR5r$6e<03{#QK-pan3}TnDYT^9fByWha+*mS{=7Zb4#~r{K*2 zynSwmf51@4^a76H#g;+ z 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

hcD-c-fR>r;x_zMfi;B)sYxNGp)Ee~A zvJrlk5X@1hs$|o|NM(_<<7cRbM&`lNF1GuO(aM&VTUILPxbVK@tfC6T>FIZrdE$^l z2j=(vV96m>{Wn+s*fiANAc)RAQfD$Y5Z}kSjP%Up{EYb&-a|al*)4_!a3Le?x zrBk3OF^Na3WO^!0fhzJ}EC2#+blMS*dc4J_Wdt%-BRw}z?B?Uobx|TVrYATR6tkDd zz!Zjx&E=kkM!P(wPg@z?0kTLM_&J)V*orJ$Hda67&sUv5C#$nt#H0)%f~S2MY8H5} zonTX0Q-66AKSOQLIj#-^iA?pz!;_Iir|z#rzkt5TFo+WI7RzH_R=ANTn^d`YEv@F> z1rv!|R!?L>7kSPBoJLi#jpRMd+g!cZ_$kRJG{z%vxrim5iaHOgkyi#Zu@8y6@Uhc+ ztJbf{%jBel&*@F!igckUwG3MzPRJ1#k8cREC@V@$q`3h4>_(|rtWJUBGwm)tmOl2t z06o4t#UBy|ulisLw@qiE6B#mSqQH?XSF>RZ=Xu=l!|GZ~Mz@UE$BoRSuKk5DbOZVl z304tuS1RY&gXbVTl#~kNy*>;JA9Z4od1x}VQt3}Gg%62;#Z1-0Q2b--hFwfCo*9_B zJeTNifx6QF5M03z@;S5Vxt;ZU7mK3izam&|XN@3Qa7&TP@a1P63A#V=nMUAb@r_}kD9I*r5=8ST1F2mrqO|F;`M zYamM_tZmlC6Q?YHBT;QZ&V0$6jbblKCak+K+L@!nWAk@It+#z{(ptBju*lr zXilJQsswT(OC^@%&0MS2=iV=Cdk2h#7%_H#U-&fTt?bTzuqn;upXfAIAFPr+@?7tA zTggrcwbU3jrs`Ao$dL!C# zq3B`HtT|3Jwcz?srSfG-OjF%62+1|>t)dg-uy=u7q>H)G1kOV z)9*;_SrqrE2s34vEnpc=QY?+#*n#KSDQbLfc&&r3Fn+}giTrnFeV(`Svml8$LDjYm1+66!B+jDpH-G<0K z_Jezq9C*Kb1*nSL9Y(|8r} zNLts3G-)f6Qzq!N!FmR!Xm$Pt{jr;9{%Xu7j0s*C{g)G2Jst%Q8Z@e}NuNXyvlu(m z0*cX%%Pdi3KD>;%#lN9GA$}g#ThJ3`*nh>SMY;T?#9h?(nvXByIwvm-r-^u#i#m*T z@qk#^kDzx0l^VDGdbqCPIcc+6D?sz;OB@uQwP$2~@Qc?tiK$|rC0&LBWTchD_dE7w zXV;T@uV^&OD-RglAe>b@1EV0z$f=rR==K$o%P>dO=AwSr`AB}(=2o0{i8K0JAuw)r z;r!}Q^$r<|wq+u73zCcIlRomI-M!N78T48G0rR9s!jENa`hJb%silqzB7xbHBHI&} zBB=qx0U_riW?{{XFqLM$)H>F5(Q+uuv)N`D9}_xg)+F^8aB`M(IPoF!A-B~CTEM}s zv&IbItjV~sH;epKFGE^RDUng(feV-!k~GI1Y^2AInMEZzN6=Tz#BZgAOQ@gb<06

4GA@UarPsZBg#N@9%6I=C$Gr2U*o{HY6dg0vSp9 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 ax8veZ4_dEtk+er&F3HQNNY{c*L;eRu&~0A; literal 0 HcmV?d00001 diff --git a/login-workflow/example-vite/src/assets/react.svg b/login-workflow/example-vite/src/assets/react.svg new file mode 100644 index 00000000..6c87de9b --- /dev/null +++ b/login-workflow/example-vite/src/assets/react.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/login-workflow/example-vite/src/components/ChangePassword.tsx b/login-workflow/example-vite/src/components/ChangePassword.tsx new file mode 100644 index 00000000..ea145a38 --- /dev/null +++ b/login-workflow/example-vite/src/components/ChangePassword.tsx @@ -0,0 +1,25 @@ +import React from 'react'; +import { ChangePasswordDialog } from '@brightlayer-ui/react-auth-workflow'; +import { useApp } from '../contexts/AppContextProvider'; +import { LocalStorage } from '../store/local-storage'; +import { useNavigate } from 'react-router-dom'; + +export const ChangePassword = (): JSX.Element => { + const app = useApp(); + const navigate = useNavigate(); + const logOut = (): void => { + app.setShowChangePasswordDialog(false); + LocalStorage.clearAuthCredentials(); + app.onUserNotAuthenticated(); + navigate('/login'); + }; + + return ( + app.setShowChangePasswordDialog(false)} + onSubmit={(): void => app.setShowChangePasswordDialog(false)} + onFinish={(): void => logOut()} + /> + ); +}; diff --git a/login-workflow/example-vite/src/components/DebugComponent.tsx b/login-workflow/example-vite/src/components/DebugComponent.tsx new file mode 100644 index 00000000..cf457bc9 --- /dev/null +++ b/login-workflow/example-vite/src/components/DebugComponent.tsx @@ -0,0 +1,68 @@ +import { Box, Button, Typography } from '@mui/material'; +import { Link } from 'react-router-dom'; +import React, { useState } from 'react'; +import { routes } from '../navigation/Routing'; +import { LanguageSelector } from './LanguageSelector'; + +const LinksWrapperStyles = { + textAlign: 'center', + pb: 4, +}; + +export const DebugComponent = (): JSX.Element => { + const [debugMode, setDebugMode] = useState(false); + + return ( + + + {debugMode && DEBUG MODE} + + + {debugMode && ( + <> + {' '} + + + + [Test Invite Register] + + + + + [Test Reset Password Email] + + + + + + + + )} + + ); +}; diff --git a/login-workflow/example-vite/src/components/LanguageSelector.tsx b/login-workflow/example-vite/src/components/LanguageSelector.tsx new file mode 100644 index 00000000..14f57d48 --- /dev/null +++ b/login-workflow/example-vite/src/components/LanguageSelector.tsx @@ -0,0 +1,37 @@ +import React, { useState } from 'react'; +import { FormControl, InputLabel, MenuItem, Select, SelectChangeEvent, SelectProps } from '@mui/material'; +import i18n from '../translations/i18n'; +import { useApp } from '../contexts/AppContextProvider'; + +export const LanguageSelector = (props: SelectProps): JSX.Element => { + const supportedLanguages = ['en', 'fr', 'es', 'zh', 'pt']; + + const { language, setLanguage } = useApp(); + const [selectedLanguage, setSelectedLanguage] = useState(language); + + const changeAppLanguage = (event: SelectChangeEvent): void => { + const appLanguage = event.target.value; + setSelectedLanguage(appLanguage); + setLanguage(appLanguage); + void i18n.changeLanguage(appLanguage); + }; + + return ( + + {props.label && {props.label}} + + + ); +}; diff --git a/login-workflow/example-vite/src/components/index.ts b/login-workflow/example-vite/src/components/index.ts new file mode 100644 index 00000000..cb679c01 --- /dev/null +++ b/login-workflow/example-vite/src/components/index.ts @@ -0,0 +1,2 @@ +export * from './DebugComponent'; +export * from './LanguageSelector'; diff --git a/login-workflow/example-vite/src/constants/index.ts b/login-workflow/example-vite/src/constants/index.ts new file mode 100644 index 00000000..d5fb682a --- /dev/null +++ b/login-workflow/example-vite/src/constants/index.ts @@ -0,0 +1,3 @@ +export const USER_SETTINGS = 'user_settings'; +export const LOCAL_USER_DATA = 'user_data'; +export const REMEMBER_ME_DATA = 'remember_me_data'; diff --git a/login-workflow/example-vite/src/constants/sampleEula.ts b/login-workflow/example-vite/src/constants/sampleEula.ts new file mode 100644 index 00000000..2ce07147 --- /dev/null +++ b/login-workflow/example-vite/src/constants/sampleEula.ts @@ -0,0 +1 @@ +export const SAMPLE_EULA = `THIS EULA IS ONLY BETWEEN EATON CORPORATION (“EATON”) AND THE END USER TO WHICH THE EATON WEB APPLICATION (THE “APP”) IS PROVIDED (“YOU”). BY ACCESSING, OR USING THE APP, YOU AGREE TO BE BOUND BY THIS EULA. IF YOU DO NOT AGREE WITH THE EULA, THEN DO NOT USE THIS APP.\n\nSubject to your acceptance of this EULA, Eaton grants you, a limited, nonexclusive, nontransferable, revocable license to access and use the App via the Internet for your personal and noncommercial purposes and as permitted by the Terms of Use. Eaton is the licensor of the App. You may not modify, reverse engineer, decompile, or disassemble the App, in whole or in part, or create any derivative works from or sublicense any rights in the App, unless otherwise expressly authorized in writing by Eaton. You may not translate or otherwise attempt to create the source code from the App, or rent, lease, grant a security interest in, or otherwise transfer any rights to, copy, distribute, transmit, display, perform, reproduce, publish, license, or transfer the App, or remove or alter any trademark, logo, ©, patent or other proprietary notices in the App. The App is protected by © and other intellectual property laws and treaties. Unless expressly stated in this EULA, Eaton owns all title, © and other intellectual property and proprietary rights in and to the App, and the App is licensed and not sold. You acknowledge and agree that Eaton will have no liability to you for any intellectual property infringement or violation, or for violation of this EULA or any license, arising out of or resulting from the use of the App in combination with any other product or service not approved or supplied by Eaton, or modification of the App by you or for you. If you breach this EULA, Eaton may immediately terminate this EULA, whereupon you shall immediately cease using the App. By accepting this EULA, you will have the right pursuant to this EULA to access and use the App. By using this App you will be required to provide Eaton certain personal data in accordance with the Eaton Privacy Policy (“Privacy Policy”). This data includes, but is not limited to: (a) first and last name, (b) phone number, (c) email address, (d) shopping and/or product preferences and history, (e) purchase history, and (f) device data including, but not limited to, Internet Protocol address, location data, Operating System version, and language (“Personal Data”). If you register for the App through a social profile such as Facebook or Google+, tallyo may also process and store your social network profile, which may include, but is not limited to, additional Personal Data that you choose to make accessible to Eaton such as (x) friend or contact names, (y) date of birth, and (z) likes and dislikes. You hereby agree to allow Eaton and the App to access, store and use any information directly related to the App, including, without limitation, Personal Data. Eaton agrees to comply with all applicable privacy laws in connection with its collection, storage and use of Personal Data. The Privacy Policy is incorporated herein by reference All rights not expressly granted to you are retained by Eaton. You must comply with applicable third party terms of agreement when using the App. In the event of a breach of this EULA by Eaton, Eaton's entire liability and your exclusive remedy shall be repair or replacement of the App, except that such remedy will not be available if any problem with the App arises from your violation of this EULA, accident, abuse, misapplication, abnormal or unauthorized access or use, or introduction of a virus or malicious code by a person other than Eaton. Eaton or its suppliers are solely responsible for providing maintenance and support services with respect to the App (Support Services). Support Services are governed by the policies and programs described in the Eaton-provided materials or as required under applicable law. Any software code provided to you as part of the Support Services is part of the App and subject to this EULA. You agree that access to and use of the App will not be provided by you or any employee or agent of you to any citizen of a country to which access or use thereof is barred, or to which exports or shipments are barred, by the US government, and that you will not ship, transfer or export the App into any country or use it in any manner prohibited by the United States Export Administration Act or any other export laws, restrictions or regulations (Export Laws). You represent and warrant that you are not located in or a citizen of a country that is subject to a US government embargo, that you are not listed on any US government list of prohibited or restricted parties, and that you are not otherwise prohibited under the Export Laws from receiving access to or using the App. ACCESS TO AND USE OF THE APP IS PROVIDED “AS IS.” ALTHOUGH THE APP IS BELIEVED TO BE ACCURATE, IT IS FOR INFORMATIONAL PURPOSES ONLY. YOU ASSUME TOTAL RESPONSIBILITY AND RISK FOR USE OF THE APP. EATON DOES NOT GUARANTEE CONTINUOUS, UNINTERRUPTED OR SECURE ACCESS TO OR USE OF THE APP. NO WARRANTY OR CONDITION, EXPRESS OR IMPLIED, IS MADE WITH RESPECT TO THE APP, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE PARTIES AGREE THAT EATON IS NOT PROVIDING ANY WARRANTY OR OTHER ASSURANCE THAT THE APP IS FREE OF THE RIGHTFUL CLAIM OF ANY THIRD PARTY BY WAY OF INFRINGEMENT OR OTHERWISE. EATON SHALL NOT BE LIABLE TO YOU FOR SPECIAL, INCIDENTAL, CONSEQUENTIAL, EXEMPLARY OR OTHER DAMAGES RESULTING FROM ACCESS TO OR USE OF THE APP, HOWEVER CAUSED. IN NO EVENT SHALL EATON’S TOTAL LIABILITY ARISING IN CONNECTION WITH OR UNDER THIS EULA EXCEED THE TOTAL FEES ACTUALLY PAID TO EATON BY YOU UNDER THIS EULA. This EULA will be construed in accordance with the substantive laws of the State of Ohio, without regard to its principles of conflicts of law. This EULA contains the entire understanding between you and Eaton regarding its subject matter and supersedes all prior agreements between you and Eaton (oral or written) regarding such subject matter. This EULA may be modified from time to time by Eaton. Any waiver of any provision must be in writing. If any provision of this EULA is found illegal or unenforceable, the remaining provisions will remain in full force and effect. `; diff --git a/login-workflow/example-vite/src/contexts/AppContextProvider.tsx b/login-workflow/example-vite/src/contexts/AppContextProvider.tsx new file mode 100644 index 00000000..05d58a97 --- /dev/null +++ b/login-workflow/example-vite/src/contexts/AppContextProvider.tsx @@ -0,0 +1,29 @@ +import { createContext, useContext } from 'react'; + +export type LoginData = { + email: string; + rememberMe: boolean; +}; + +export type AppContextType = { + isAuthenticated: boolean; + loginData: LoginData; + onUserAuthenticated: (args: { email: string; userId: string; rememberMe: boolean }) => void; + onUserNotAuthenticated: (clearRememberMe?: boolean, overrideRememberMeEmail?: string) => void; + language: string; + setLanguage: (language: string) => void; + setLoginData: (args: LoginData) => void; + showChangePasswordDialog: boolean; + setShowChangePasswordDialog: (arg: boolean) => void; +}; + +export const AppContext = createContext(null); + +export const useApp = (): AppContextType => { + const context = useContext(AppContext); + + if (context === null) { + throw new Error('useApp must be used within a AppContextProvider'); + } + return context; +}; diff --git a/login-workflow/example-vite/src/index.css b/login-workflow/example-vite/src/index.css new file mode 100644 index 00000000..f4a11262 --- /dev/null +++ b/login-workflow/example-vite/src/index.css @@ -0,0 +1,7 @@ +html, +body, +#root { + height: 100%; + margin: 0; + padding: 0; +} \ No newline at end of file diff --git a/login-workflow/example-vite/src/main.tsx b/login-workflow/example-vite/src/main.tsx new file mode 100644 index 00000000..1a571beb --- /dev/null +++ b/login-workflow/example-vite/src/main.tsx @@ -0,0 +1,18 @@ +import { ThemeProvider, createTheme, StyledEngineProvider } from '@mui/material/styles'; +import React from 'react'; +import { App } from './App'; +import CssBaseline from '@mui/material/CssBaseline'; +import * as BLUIThemes from '@brightlayer-ui/react-themes'; +import { createRoot } from 'react-dom/client'; + +createRoot(document.getElementById('root')!).render( + // Enable Strict Mode for more error checking + + + + + + + + +); diff --git a/login-workflow/example-vite/src/navigation/AppRouter.tsx b/login-workflow/example-vite/src/navigation/AppRouter.tsx new file mode 100644 index 00000000..3d384b4b --- /dev/null +++ b/login-workflow/example-vite/src/navigation/AppRouter.tsx @@ -0,0 +1,124 @@ +import React from 'react'; +import { + AuthContextProvider, + ContactSupportScreen, + ReactRouterAuthGuard, + ReactRouterGuestGuard, + ForgotPasswordScreen, + RegistrationContextProvider, + ResetPasswordScreen, + RegistrationWorkflow, +} from '@brightlayer-ui/react-auth-workflow'; +import { useApp } from '../contexts/AppContextProvider'; +import { useNavigate } from 'react-router'; +import { ProjectAuthUIActions } from '../actions/AuthUIActions'; +import { Navigate, Outlet, Route, Routes } from 'react-router-dom'; +import { Login } from '../screens/Login'; +import { ProjectRegistrationUIActions } from '../actions/RegistrationUIActions'; +import { routes } from './Routing'; +import { ExampleHome } from '../screens/ExampleHome'; +import i18nAppInstance from '../translations/i18n'; +import { ChangePassword } from '../components/ChangePassword'; + +export const AppRouter: React.FC = () => { + const navigate = useNavigate(); + const app = useApp(); + const { email, rememberMe } = app.loginData; + + return ( + + {/* AUTH ROUTES */} + + + + } + > + + + + } + /> + + + + } + /> + + + + } + /> + + + + } + /> + {/* USER APPLICATION ROUTES */} + + + {app.showChangePasswordDialog && } + + } + > + + + + } + /> + } /> + + + + + } + /> + + {/* REGISTRATION ROUTES */} + + + + } + > + } /> + } /> + + + ); +}; diff --git a/login-workflow/example-vite/src/navigation/Routing.tsx b/login-workflow/example-vite/src/navigation/Routing.tsx new file mode 100644 index 00000000..c2b5f703 --- /dev/null +++ b/login-workflow/example-vite/src/navigation/Routing.tsx @@ -0,0 +1,10 @@ +import { RouteConfig } from '@brightlayer-ui/react-auth-workflow'; + +export const routes: RouteConfig = { + LOGIN: '/login', + REGISTER_INVITE: '/register-by-invite?code=DEBUG_VALIDATION_CODE_DEADBEEF&email=example@example.com', + REGISTER_SELF: '/self-registration', + FORGOT_PASSWORD: '/forgot-password', + RESET_PASSWORD: '/reset-password', + SUPPORT: '/contact-support', +}; diff --git a/login-workflow/example-vite/src/react-app-env.d.ts b/login-workflow/example-vite/src/react-app-env.d.ts new file mode 100644 index 00000000..6431bc5f --- /dev/null +++ b/login-workflow/example-vite/src/react-app-env.d.ts @@ -0,0 +1 @@ +/// diff --git a/login-workflow/example-vite/src/screens/ExampleHome.tsx b/login-workflow/example-vite/src/screens/ExampleHome.tsx new file mode 100644 index 00000000..ff45e7cd --- /dev/null +++ b/login-workflow/example-vite/src/screens/ExampleHome.tsx @@ -0,0 +1,176 @@ +import React, { useState } from 'react'; +import { LocalStorage } from '../store/local-storage'; +import { useApp } from '../contexts/AppContextProvider'; +import { + DrawerLayout, + Drawer, + DrawerBody, + DrawerNavGroup, + DrawerNavItem, + DrawerHeader, + Spacer, + UserMenu, + EmptyState, +} from '@brightlayer-ui/react-components'; +import Box from '@mui/material/Box'; +import Event from '@mui/icons-material/Event'; +import Dashboard from '@mui/icons-material/Dashboard'; +import Notifications from '@mui/icons-material/Notifications'; +import Menu from '@mui/icons-material/Menu'; +import AccountBox from '@mui/icons-material/AccountBox'; +import ExitToApp from '@mui/icons-material/ExitToApp'; +import Avatar from '@mui/material/Avatar'; +import AppBar from '@mui/material/AppBar'; +import Toolbar from '@mui/material/Toolbar'; +import LockIcon from '@mui/icons-material/Lock'; +import Typography from '@mui/material/Typography'; +import { useTheme } from '@mui/material/styles'; +import { useTranslation } from 'react-i18next'; +import { useNavigate } from 'react-router-dom'; +import * as Colors from '@brightlayer-ui/colors'; +import FormControl from '@mui/material/FormControl'; +import { MenuItem, Select, SelectChangeEvent } from '@mui/material'; +import i18n from '../translations/i18n'; + +export const ExampleHome: React.FC = () => { + const app = useApp(); + const supportedLanguages = ['en', 'fr', 'es', 'zh', 'pt']; + const { t } = useTranslation(); + const [open, setOpen] = useState(false); + const navigate = useNavigate(); + const theme = useTheme(); + + const containerStyles = { + width: '100%', + height: `calc(100vh - ${theme.spacing(8)})`, + display: 'flex', + padding: 0, + overflow: 'auto', + position: 'relative', + flexDirection: 'column', + alignItems: 'center', + justifyContent: 'center', + [theme.breakpoints.down('sm')]: { + height: `calc(100vh - ${theme.spacing(7)})`, + }, + }; + + const emptyStateContainerStyles = { + margin: 'auto', + display: 'flex', + zIndex: 4, + position: 'absolute', + alignItems: 'center', + justifyContent: 'center', + }; + + const logOut = (): void => { + LocalStorage.clearAuthCredentials(); + app.onUserNotAuthenticated(); + navigate('/login'); + }; + + const changeAppLanguage = (event: SelectChangeEvent): void => { + const appLanguage = event.target.value; + app.setLanguage(appLanguage); + void i18n.changeLanguage(appLanguage); + }; + + return ( + <> + + } + onClick={(): void => setOpen(!open)} + /> + + + } + itemID="1" + /> + } + itemID="2" + /> + + + + } + > + + + + {`${t('TOOLBAR_MENU.HOME_PAGE')}`} + + + + + + + AV} + menuGroups={[ + { + items: [ + { + icon: , + title: `${t('USER_MENU.MY_ACCOUNT')}`, + onClick: (): void => {}, + }, + { + icon: , + title: `${t('USER_MENU.CHANGE_PASSWORD')}`, + onClick: (): any => { + app.setShowChangePasswordDialog(true); + }, + }, + { + icon: , + title: `${t('USER_MENU.LOG_OUT')}`, + onClick: (): void => { + logOut(); + }, + }, + ], + }, + ]} + /> + + + + + } + title={`${t('TOOLBAR_MENU.HOME_PAGE')}`} + description={`${t('PAGE_DETAILS.AUTHORISED_MESSAGE')}`} + /> + + + + ); +}; diff --git a/login-workflow/example-vite/src/screens/Login.tsx b/login-workflow/example-vite/src/screens/Login.tsx new file mode 100644 index 00000000..9f3b31fe --- /dev/null +++ b/login-workflow/example-vite/src/screens/Login.tsx @@ -0,0 +1,19 @@ +import React from 'react'; +import { LoginScreen } from '@brightlayer-ui/react-auth-workflow'; +import EatonLogo from '../assets/images/eaton_stacked_logo.png'; +import { DebugComponent } from '../components/DebugComponent'; + +export const Login = (): JSX.Element => ( + // Everything on the login screen should work out of the box without having to specify ANY overrides for props here + } + header={} + errorDisplayConfig={{ + mode: 'message-box', + messageBoxConfig: { + dismissible: true, + position: 'top', + }, + }} + /> +); diff --git a/login-workflow/example-vite/src/screens/index.ts b/login-workflow/example-vite/src/screens/index.ts new file mode 100644 index 00000000..cdcdf750 --- /dev/null +++ b/login-workflow/example-vite/src/screens/index.ts @@ -0,0 +1,2 @@ +export * from './ExampleHome'; +export * from './Login'; diff --git a/login-workflow/example-vite/src/serviceWorker.ts b/login-workflow/example-vite/src/serviceWorker.ts new file mode 100644 index 00000000..2b012e10 --- /dev/null +++ b/login-workflow/example-vite/src/serviceWorker.ts @@ -0,0 +1,140 @@ +/* eslint-disable */ +// This optional code is used to register a service worker. +// register() is not called by default. + +// This lets the app load faster on subsequent visits in production, and gives +// it offline capabilities. However, it also means that developers (and users) +// will only see deployed updates on subsequent visits to a page, after all the +// existing tabs open on the page have been closed, since previously cached +// resources are updated in the background. + +// To learn more about the benefits of this model and instructions on how to +// opt-in, read https://bit.ly/CRA-PWA + +const isLocalhost = Boolean( + window.location.hostname === 'localhost' || + // [::1] is the IPv6 localhost address. + window.location.hostname === '[::1]' || + // 127.0.0.0/8 are considered localhost for IPv4. + window.location.hostname.match(/^127(?:\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){3}$/) +); + +type Config = { + onSuccess?: (registration: ServiceWorkerRegistration) => void; + onUpdate?: (registration: ServiceWorkerRegistration) => void; +}; + +export function register(config?: Config) { + if (process.env.NODE_ENV === 'production' && 'serviceWorker' in navigator) { + // The URL constructor is available in all browsers that support SW. + const publicUrl = new URL(process.env.PUBLIC_URL, window.location.href); + if (publicUrl.origin !== window.location.origin) { + // Our service worker won't work if PUBLIC_URL is on a different origin + // from what our page is served on. This might happen if a CDN is used to + // serve assets; see https://github.com/facebook/create-react-app/issues/2374 + return; + } + + window.addEventListener('load', () => { + const swUrl = `${process.env.PUBLIC_URL}/service-worker.js`; + + if (isLocalhost) { + // This is running on localhost. Let's check if a service worker still exists or not. + checkValidServiceWorker(swUrl, config); + + // Add some additional logging to localhost, pointing developers to the + // service worker/PWA documentation. + navigator.serviceWorker.ready.then(() => { + console.log( + 'This web app is being served cache-first by a service ' + + 'worker. To learn more, visit https://bit.ly/CRA-PWA' + ); + }); + } else { + // Is not localhost. Just register service worker + registerValidSW(swUrl, config); + } + }); + } +} + +function registerValidSW(swUrl: string, config?: Config) { + navigator.serviceWorker + .register(swUrl) + .then((registration) => { + registration.onupdatefound = () => { + const installingWorker = registration.installing; + if (installingWorker == null) { + return; + } + installingWorker.onstatechange = () => { + if (installingWorker.state === 'installed') { + if (navigator.serviceWorker.controller) { + // At this point, the updated precached content has been fetched, + // but the previous service worker will still serve the older + // content until all client tabs are closed. + console.log( + 'New content is available and will be used when all ' + + 'tabs for this page are closed. See https://bit.ly/CRA-PWA.' + ); + + // Execute callback + if (config && config.onUpdate) { + config.onUpdate(registration); + } + } else { + // At this point, everything has been precached. + // It's the perfect time to display a + // "Content is cached for offline use." message. + console.log('Content is cached for offline use.'); + + // Execute callback + if (config && config.onSuccess) { + config.onSuccess(registration); + } + } + } + }; + }; + }) + .catch((error) => { + console.error('Error during service worker registration:', error); + }); +} + +function checkValidServiceWorker(swUrl: string, config?: Config) { + // Check if the service worker can be found. If it can't reload the page. + fetch(swUrl, { + headers: { 'Service-Worker': 'script' }, + }) + .then((response) => { + // Ensure service worker exists, and that we really are getting a JS file. + const contentType = response.headers.get('content-type'); + if (response.status === 404 || (contentType != null && contentType.indexOf('javascript') === -1)) { + // No service worker found. Probably a different app. Reload the page. + navigator.serviceWorker.ready.then((registration) => { + registration.unregister().then(() => { + window.location.reload(); + }); + }); + } else { + // Service worker found. Proceed as normal. + registerValidSW(swUrl, config); + } + }) + .catch(() => { + console.log('No internet connection found. App is running in offline mode.'); + }); +} + +export function unregister() { + if ('serviceWorker' in navigator) { + navigator.serviceWorker.ready + .then((registration) => { + registration.unregister(); + }) + .catch((error) => { + console.error(error.message); + }); + } +} diff --git a/login-workflow/example-vite/src/setupTests.ts b/login-workflow/example-vite/src/setupTests.ts new file mode 100644 index 00000000..74b1a275 --- /dev/null +++ b/login-workflow/example-vite/src/setupTests.ts @@ -0,0 +1,5 @@ +// jest-dom adds custom jest matchers for asserting on DOM nodes. +// allows you to do things like: +// expect(element).toHaveTextContent(/react/i) +// learn more: https://github.com/testing-library/jest-dom +import '@testing-library/jest-dom/extend-expect'; diff --git a/login-workflow/example-vite/src/store/local-storage.ts b/login-workflow/example-vite/src/store/local-storage.ts new file mode 100644 index 00000000..022f06d6 --- /dev/null +++ b/login-workflow/example-vite/src/store/local-storage.ts @@ -0,0 +1,53 @@ +import { LOCAL_USER_DATA, REMEMBER_ME_DATA } from '../constants'; + +type AuthData = { + userId: string | undefined; + email: string | undefined; + rememberMeData: { user: string; rememberMe: boolean }; +}; + +async function readAuthData(): Promise { + const jsonUserData = window.localStorage.getItem(LOCAL_USER_DATA) || '{}'; + const userData = (await JSON.parse(jsonUserData)) as { + user?: string; + userId?: string; + }; + const jsonRememberMeData = window.localStorage.getItem(REMEMBER_ME_DATA) || '{}'; + const rememberMeData = (await JSON.parse(jsonRememberMeData)) as { + user: string; + rememberMe: boolean; + }; + return { + userId: userData.userId, + email: userData.user, + rememberMeData: rememberMeData, + }; +} + +function saveAuthCredentials(user: string, userId: string): void { + const userData = { + user: user, + userId: userId, + }; + window.localStorage.setItem(LOCAL_USER_DATA, JSON.stringify(userData)); +} +function saveRememberMeData(user: string, rememberMe: boolean): void { + const RememberMeData = { + user: rememberMe ? user : '', + rememberMe: rememberMe, + }; + window.localStorage.setItem(REMEMBER_ME_DATA, JSON.stringify(RememberMeData)); +} +function clearAuthCredentials(): void { + window.localStorage.removeItem(LOCAL_USER_DATA); +} +function clearRememberMeData(): void { + window.localStorage.removeItem(REMEMBER_ME_DATA); +} +export const LocalStorage = { + readAuthData, + saveAuthCredentials, + saveRememberMeData, + clearAuthCredentials, + clearRememberMeData, +}; diff --git a/login-workflow/example-vite/src/translations/dictionary/chinese.ts b/login-workflow/example-vite/src/translations/dictionary/chinese.ts new file mode 100644 index 00000000..c51612f0 --- /dev/null +++ b/login-workflow/example-vite/src/translations/dictionary/chinese.ts @@ -0,0 +1,23 @@ +import { AppTranslationsFile } from './types'; + +const resources: AppTranslationsFile = { + translation: { + DRAWER_MENU: { + TITLE: '標題', + DASHBOARD: '儀表板', + LOCATIONS: '地點', + }, + TOOLBAR_MENU: { + HOME_PAGE: '主頁', + }, + PAGE_DETAILS: { + AUTHORISED_MESSAGE: '授權留言', + }, + USER_MENU: { + LOG_OUT: '登出', + CHANGE_PASSWORD: '更改密碼', + MY_ACCOUNT: '我的賬戶', + }, + }, +}; +export default resources; diff --git a/login-workflow/example-vite/src/translations/dictionary/english.ts b/login-workflow/example-vite/src/translations/dictionary/english.ts new file mode 100644 index 00000000..88fbb7aa --- /dev/null +++ b/login-workflow/example-vite/src/translations/dictionary/english.ts @@ -0,0 +1,23 @@ +import { AppTranslationsFile } from './types'; + +const resources: AppTranslationsFile = { + translation: { + DRAWER_MENU: { + TITLE: 'Title', + DASHBOARD: 'Dashboard', + LOCATIONS: 'Locations', + }, + TOOLBAR_MENU: { + HOME_PAGE: 'Home Page', + }, + PAGE_DETAILS: { + AUTHORISED_MESSAGE: 'Authorised Message', + }, + USER_MENU: { + LOG_OUT: 'Log out', + CHANGE_PASSWORD: 'Change Password', + MY_ACCOUNT: 'My Account', + }, + }, +}; +export default resources; diff --git a/login-workflow/example-vite/src/translations/dictionary/french.ts b/login-workflow/example-vite/src/translations/dictionary/french.ts new file mode 100644 index 00000000..493bf2fa --- /dev/null +++ b/login-workflow/example-vite/src/translations/dictionary/french.ts @@ -0,0 +1,23 @@ +import { AppTranslationsFile } from './types'; + +const resources: AppTranslationsFile = { + translation: { + DRAWER_MENU: { + TITLE: 'Titre', + DASHBOARD: 'Tableau de bord', + LOCATIONS: 'Emplacements', + }, + TOOLBAR_MENU: { + HOME_PAGE: `Page d'accueil`, + }, + PAGE_DETAILS: { + AUTHORISED_MESSAGE: 'Authorised Message', + }, + USER_MENU: { + LOG_OUT: 'Se déconnecter', + CHANGE_PASSWORD: 'changer le mot de passe', + MY_ACCOUNT: 'Mon compte', + }, + }, +}; +export default resources; diff --git a/login-workflow/example-vite/src/translations/dictionary/index.ts b/login-workflow/example-vite/src/translations/dictionary/index.ts new file mode 100644 index 00000000..b2f372ca --- /dev/null +++ b/login-workflow/example-vite/src/translations/dictionary/index.ts @@ -0,0 +1,19 @@ +import english from './english'; +import french from './french'; +import spanish from './spanish'; +import chinese from './chinese'; +import portuguese from './portuguese'; + +export { default as english } from './english'; +export { default as french } from './french'; +export { default as spanish } from './spanish'; +export { default as chinese } from './chinese'; +export { default as portuguese } from './portuguese'; + +export const AppDictionaries = { + english: english, + french: french, + spanish: spanish, + chinese: chinese, + portuguese: portuguese, +}; diff --git a/login-workflow/example-vite/src/translations/dictionary/portuguese.ts b/login-workflow/example-vite/src/translations/dictionary/portuguese.ts new file mode 100644 index 00000000..7c82d715 --- /dev/null +++ b/login-workflow/example-vite/src/translations/dictionary/portuguese.ts @@ -0,0 +1,23 @@ +import { AppTranslationsFile } from './types'; + +const resources: AppTranslationsFile = { + translation: { + DRAWER_MENU: { + TITLE: 'Título', + DASHBOARD: 'Painel', + LOCATIONS: 'Localizações', + }, + TOOLBAR_MENU: { + HOME_PAGE: 'Pagina inicial', + }, + PAGE_DETAILS: { + AUTHORISED_MESSAGE: 'Mensagem Autorizada', + }, + USER_MENU: { + LOG_OUT: 'Sair', + CHANGE_PASSWORD: 'alterar a senha', + MY_ACCOUNT: 'Minha conta', + }, + }, +}; +export default resources; diff --git a/login-workflow/example-vite/src/translations/dictionary/spanish.ts b/login-workflow/example-vite/src/translations/dictionary/spanish.ts new file mode 100644 index 00000000..adb1f968 --- /dev/null +++ b/login-workflow/example-vite/src/translations/dictionary/spanish.ts @@ -0,0 +1,23 @@ +import { AppTranslationsFile } from './types'; + +const resources: AppTranslationsFile = { + translation: { + DRAWER_MENU: { + TITLE: 'Título', + DASHBOARD: 'Panel', + LOCATIONS: 'Ubicaciones', + }, + TOOLBAR_MENU: { + HOME_PAGE: 'Página de inicio', + }, + PAGE_DETAILS: { + AUTHORISED_MESSAGE: 'Mensaje autorizado', + }, + USER_MENU: { + LOG_OUT: 'Cerrar sesión', + CHANGE_PASSWORD: 'cambiar la contraseña', + MY_ACCOUNT: 'Mi cuenta', + }, + }, +}; +export default resources; diff --git a/login-workflow/example-vite/src/translations/dictionary/types.ts b/login-workflow/example-vite/src/translations/dictionary/types.ts new file mode 100644 index 00000000..756f9d4c --- /dev/null +++ b/login-workflow/example-vite/src/translations/dictionary/types.ts @@ -0,0 +1,21 @@ +export type AppTranslations = { + DRAWER_MENU: { + TITLE: string; + DASHBOARD: string; + LOCATIONS: string; + }; + TOOLBAR_MENU: { + HOME_PAGE: string; + }; + PAGE_DETAILS: { + AUTHORISED_MESSAGE: string; + }; + USER_MENU: { + LOG_OUT: string; + CHANGE_PASSWORD: string; + MY_ACCOUNT: string; + }; +}; +export type AppTranslationsFile = { + translation: AppTranslations; +}; diff --git a/login-workflow/example-vite/src/translations/i18n.ts b/login-workflow/example-vite/src/translations/i18n.ts new file mode 100644 index 00000000..bd510ef2 --- /dev/null +++ b/login-workflow/example-vite/src/translations/i18n.ts @@ -0,0 +1,59 @@ +import i18next from 'i18next'; +import { AppDictionaries } from './dictionary'; +import { initReactI18next } from 'react-i18next'; +import LanguageDetector from 'i18next-browser-languagedetector'; + +void i18next + .use(initReactI18next) // passes i18n down to react-i18next + .use(LanguageDetector) // allows us to infer the language from browser language selection + .init( + { + fallbackLng: 'en', + ns: ['app'], + defaultNS: 'app', + load: 'languageOnly', + detection: { + order: ['querystring', 'localStorage', 'navigator'], + caches: ['localStorage'], + lookupLocalStorage: 'app-i18nextLng', + lookupQuerystring: 'lng', + }, + react: { useSuspense: false }, + interpolation: { escapeValue: false }, + resources: { + en: { + app: { + ...AppDictionaries.english.translation, + }, + }, + fr: { + app: { + ...AppDictionaries.french.translation, + }, + }, + es: { + app: { + ...AppDictionaries.spanish.translation, + }, + }, + zh: { + app: { + ...AppDictionaries.chinese.translation, + }, + }, + pt: { + app: { + ...AppDictionaries.portuguese.translation, + }, + }, + }, + }, + // We must provide a function as second parameter, otherwise i18next errors + // eslint-disable-next-line @typescript-eslint/no-unused-vars + (err, _t) => { + // eslint-disable-next-line no-console + if (err) return console.log(err); + } + ); + +export default i18next; diff --git a/login-workflow/example-vite/src/vite-env.d.ts b/login-workflow/example-vite/src/vite-env.d.ts new file mode 100644 index 00000000..11f02fe2 --- /dev/null +++ b/login-workflow/example-vite/src/vite-env.d.ts @@ -0,0 +1 @@ +/// diff --git a/login-workflow/example-vite/tsconfig.json b/login-workflow/example-vite/tsconfig.json new file mode 100644 index 00000000..a7fc6fbf --- /dev/null +++ b/login-workflow/example-vite/tsconfig.json @@ -0,0 +1,25 @@ +{ + "compilerOptions": { + "target": "ES2020", + "useDefineForClassFields": true, + "lib": ["ES2020", "DOM", "DOM.Iterable"], + "module": "ESNext", + "skipLibCheck": true, + + /* Bundler mode */ + "moduleResolution": "bundler", + "allowImportingTsExtensions": true, + "resolveJsonModule": true, + "isolatedModules": true, + "noEmit": true, + "jsx": "react-jsx", + + /* Linting */ + "strict": true, + "noUnusedLocals": true, + "noUnusedParameters": true, + "noFallthroughCasesInSwitch": true + }, + "include": ["src"], + "references": [{ "path": "./tsconfig.node.json" }] +} diff --git a/login-workflow/example-vite/tsconfig.node.json b/login-workflow/example-vite/tsconfig.node.json new file mode 100644 index 00000000..42872c59 --- /dev/null +++ b/login-workflow/example-vite/tsconfig.node.json @@ -0,0 +1,10 @@ +{ + "compilerOptions": { + "composite": true, + "skipLibCheck": true, + "module": "ESNext", + "moduleResolution": "bundler", + "allowSyntheticDefaultImports": true + }, + "include": ["vite.config.ts"] +} diff --git a/login-workflow/example-vite/vite.config.ts b/login-workflow/example-vite/vite.config.ts new file mode 100644 index 00000000..5a33944a --- /dev/null +++ b/login-workflow/example-vite/vite.config.ts @@ -0,0 +1,7 @@ +import { defineConfig } from 'vite' +import react from '@vitejs/plugin-react' + +// https://vitejs.dev/config/ +export default defineConfig({ + plugins: [react()], +}) diff --git a/login-workflow/example-vite/yarn.lock b/login-workflow/example-vite/yarn.lock new file mode 100644 index 00000000..b090e23d --- /dev/null +++ b/login-workflow/example-vite/yarn.lock @@ -0,0 +1,11445 @@ +# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. +# yarn lockfile v1 + + +"@aashutoshrathi/word-wrap@^1.2.3": + version "1.2.6" + resolved "https://registry.yarnpkg.com/@aashutoshrathi/word-wrap/-/word-wrap-1.2.6.tgz#bd9154aec9983f77b3a034ecaa015c2e4201f6cf" + integrity sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA== + +"@adobe/css-tools@^4.3.2": + version "4.3.3" + resolved "https://registry.yarnpkg.com/@adobe/css-tools/-/css-tools-4.3.3.tgz#90749bde8b89cd41764224f5aac29cd4138f75ff" + integrity sha512-rE0Pygv0sEZ4vBWHlAgJLGDU7Pm8xoO6p3wsEceb7GYAjScrOHpEo8KK/eVkAcnSM+slAEtXjA2JpdjLp4fJQQ== + +"@alloc/quick-lru@^5.2.0": + version "5.2.0" + resolved "https://registry.yarnpkg.com/@alloc/quick-lru/-/quick-lru-5.2.0.tgz#7bf68b20c0a350f936915fcae06f58e32007ce30" + integrity sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw== + +"@ampproject/remapping@^2.2.0": + version "2.2.1" + resolved "https://registry.yarnpkg.com/@ampproject/remapping/-/remapping-2.2.1.tgz#99e8e11851128b8702cd57c33684f1d0f260b630" + integrity sha512-lFMjJTrFL3j7L9yBxwYfCq2k6qqwHyzuUl/XBnif78PWTJYyL/dfowQHWE3sp6U6ZzqWiiIZnpTMO96zhkjwtg== + dependencies: + "@jridgewell/gen-mapping" "^0.3.0" + "@jridgewell/trace-mapping" "^0.3.9" + +"@apideck/better-ajv-errors@^0.3.1": + version "0.3.6" + resolved "https://registry.yarnpkg.com/@apideck/better-ajv-errors/-/better-ajv-errors-0.3.6.tgz#957d4c28e886a64a8141f7522783be65733ff097" + integrity sha512-P+ZygBLZtkp0qqOAJJVX4oX/sFo5JR3eBWwwuqHHhK0GIgQOKWrAfiAaWX0aArHkRWHMuggFEgAZNxVPwPZYaA== + dependencies: + json-schema "^0.4.0" + jsonpointer "^5.0.0" + leven "^3.1.0" + +"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.10.4", "@babel/code-frame@^7.12.13", "@babel/code-frame@^7.16.0", "@babel/code-frame@^7.23.5", "@babel/code-frame@^7.8.3": + version "7.23.5" + resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.23.5.tgz#9009b69a8c602293476ad598ff53e4562e15c244" + integrity sha512-CgH3s1a96LipHCmSUmYFPwY7MNx8C3avkq7i4Wl3cfa662ldtUe4VM1TPXX70pfmrlWTb6jLqTYrZyT2ZTJBgA== + dependencies: + "@babel/highlight" "^7.23.4" + chalk "^2.4.2" + +"@babel/compat-data@^7.22.6", "@babel/compat-data@^7.23.3", "@babel/compat-data@^7.23.5": + version "7.23.5" + resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.23.5.tgz#ffb878728bb6bdcb6f4510aa51b1be9afb8cfd98" + integrity sha512-uU27kfDRlhfKl+w1U6vp16IuvSLtjAxdArVXPa9BvLkrr7CYIsxH5adpHObeAGY/41+syctUWOZ140a2Rvkgjw== + +"@babel/core@^7.1.0", "@babel/core@^7.11.1", "@babel/core@^7.11.6", "@babel/core@^7.12.3", "@babel/core@^7.16.0", "@babel/core@^7.23.5", "@babel/core@^7.7.2", "@babel/core@^7.8.0": + version "7.23.9" + resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.23.9.tgz#b028820718000f267870822fec434820e9b1e4d1" + integrity sha512-5q0175NOjddqpvvzU+kDiSOAk4PfdO6FvwCWoQ6RO7rTzEe8vlo+4HVfcnAREhD4npMs0e9uZypjTwzZPCf/cw== + dependencies: + "@ampproject/remapping" "^2.2.0" + "@babel/code-frame" "^7.23.5" + "@babel/generator" "^7.23.6" + "@babel/helper-compilation-targets" "^7.23.6" + "@babel/helper-module-transforms" "^7.23.3" + "@babel/helpers" "^7.23.9" + "@babel/parser" "^7.23.9" + "@babel/template" "^7.23.9" + "@babel/traverse" "^7.23.9" + "@babel/types" "^7.23.9" + convert-source-map "^2.0.0" + debug "^4.1.0" + gensync "^1.0.0-beta.2" + json5 "^2.2.3" + semver "^6.3.1" + +"@babel/eslint-parser@^7.16.3": + version "7.23.9" + resolved "https://registry.yarnpkg.com/@babel/eslint-parser/-/eslint-parser-7.23.9.tgz#052c13b39144e21fdd1e03fc9b67e98976a1ebfc" + integrity sha512-xPndlO7qxiJbn0ATvfXQBjCS7qApc9xmKHArgI/FTEFxXas5dnjC/VqM37lfZun9dclRYcn+YQAr6uDFy0bB2g== + dependencies: + "@nicolo-ribaudo/eslint-scope-5-internals" "5.1.1-v1" + eslint-visitor-keys "^2.1.0" + semver "^6.3.1" + +"@babel/generator@^7.23.6", "@babel/generator@^7.7.2": + version "7.23.6" + resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.23.6.tgz#9e1fca4811c77a10580d17d26b57b036133f3c2e" + integrity sha512-qrSfCYxYQB5owCmGLbl8XRpX1ytXlpueOb0N0UmQwA073KZxejgQTzAmJezxvpwQD9uGtK2shHdi55QT+MbjIw== + dependencies: + "@babel/types" "^7.23.6" + "@jridgewell/gen-mapping" "^0.3.2" + "@jridgewell/trace-mapping" "^0.3.17" + jsesc "^2.5.1" + +"@babel/helper-annotate-as-pure@^7.22.5": + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.22.5.tgz#e7f06737b197d580a01edf75d97e2c8be99d3882" + integrity sha512-LvBTxu8bQSQkcyKOU+a1btnNFQ1dMAd0R6PyW3arXes06F6QLWLIrd681bxRPIXlrMGR3XYnW9JyML7dP3qgxg== + dependencies: + "@babel/types" "^7.22.5" + +"@babel/helper-builder-binary-assignment-operator-visitor@^7.22.15": + version "7.22.15" + resolved "https://registry.yarnpkg.com/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.22.15.tgz#5426b109cf3ad47b91120f8328d8ab1be8b0b956" + integrity sha512-QkBXwGgaoC2GtGZRoma6kv7Szfv06khvhFav67ZExau2RaXzy8MpHSMO2PNoP2XtmQphJQRHFfg77Bq731Yizw== + dependencies: + "@babel/types" "^7.22.15" + +"@babel/helper-compilation-targets@^7.22.15", "@babel/helper-compilation-targets@^7.22.6", "@babel/helper-compilation-targets@^7.23.6": + version "7.23.6" + resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.23.6.tgz#4d79069b16cbcf1461289eccfbbd81501ae39991" + integrity sha512-9JB548GZoQVmzrFgp8o7KxdgkTGm6xs9DW0o/Pim72UDjzr5ObUQ6ZzYPqA+g9OTS2bBQoctLJrky0RDCAWRgQ== + dependencies: + "@babel/compat-data" "^7.23.5" + "@babel/helper-validator-option" "^7.23.5" + browserslist "^4.22.2" + lru-cache "^5.1.1" + semver "^6.3.1" + +"@babel/helper-create-class-features-plugin@^7.18.6", "@babel/helper-create-class-features-plugin@^7.22.15", "@babel/helper-create-class-features-plugin@^7.23.6", "@babel/helper-create-class-features-plugin@^7.23.9": + version "7.23.9" + resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.23.9.tgz#fddfdf51fca28f23d16b9e3935a4732690acfad6" + integrity sha512-B2L9neXTIyPQoXDm+NtovPvG6VOLWnaXu3BIeVDWwdKFgG30oNa6CqVGiJPDWQwIAK49t9gnQI9c6K6RzabiKw== + dependencies: + "@babel/helper-annotate-as-pure" "^7.22.5" + "@babel/helper-environment-visitor" "^7.22.20" + "@babel/helper-function-name" "^7.23.0" + "@babel/helper-member-expression-to-functions" "^7.23.0" + "@babel/helper-optimise-call-expression" "^7.22.5" + "@babel/helper-replace-supers" "^7.22.20" + "@babel/helper-skip-transparent-expression-wrappers" "^7.22.5" + "@babel/helper-split-export-declaration" "^7.22.6" + semver "^6.3.1" + +"@babel/helper-create-regexp-features-plugin@^7.18.6", "@babel/helper-create-regexp-features-plugin@^7.22.15", "@babel/helper-create-regexp-features-plugin@^7.22.5": + version "7.22.15" + resolved "https://registry.yarnpkg.com/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.22.15.tgz#5ee90093914ea09639b01c711db0d6775e558be1" + integrity sha512-29FkPLFjn4TPEa3RE7GpW+qbE8tlsu3jntNYNfcGsc49LphF1PQIiD+vMZ1z1xVOKt+93khA9tc2JBs3kBjA7w== + dependencies: + "@babel/helper-annotate-as-pure" "^7.22.5" + regexpu-core "^5.3.1" + semver "^6.3.1" + +"@babel/helper-define-polyfill-provider@^0.5.0": + version "0.5.0" + resolved "https://registry.yarnpkg.com/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.5.0.tgz#465805b7361f461e86c680f1de21eaf88c25901b" + integrity sha512-NovQquuQLAQ5HuyjCz7WQP9MjRj7dx++yspwiyUiGl9ZyadHRSql1HZh5ogRd8W8w6YM6EQ/NTB8rgjLt5W65Q== + dependencies: + "@babel/helper-compilation-targets" "^7.22.6" + "@babel/helper-plugin-utils" "^7.22.5" + debug "^4.1.1" + lodash.debounce "^4.0.8" + resolve "^1.14.2" + +"@babel/helper-environment-visitor@^7.22.20": + version "7.22.20" + resolved "https://registry.yarnpkg.com/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.20.tgz#96159db61d34a29dba454c959f5ae4a649ba9167" + integrity sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA== + +"@babel/helper-function-name@^7.22.5", "@babel/helper-function-name@^7.23.0": + version "7.23.0" + resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.23.0.tgz#1f9a3cdbd5b2698a670c30d2735f9af95ed52759" + integrity sha512-OErEqsrxjZTJciZ4Oo+eoZqeW9UIiOcuYKRJA4ZAgV9myA+pOXhhmpfNCKjEH/auVfEYVFJ6y1Tc4r0eIApqiw== + dependencies: + "@babel/template" "^7.22.15" + "@babel/types" "^7.23.0" + +"@babel/helper-hoist-variables@^7.22.5": + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.22.5.tgz#c01a007dac05c085914e8fb652b339db50d823bb" + integrity sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw== + dependencies: + "@babel/types" "^7.22.5" + +"@babel/helper-member-expression-to-functions@^7.22.15", "@babel/helper-member-expression-to-functions@^7.23.0": + version "7.23.0" + resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.23.0.tgz#9263e88cc5e41d39ec18c9a3e0eced59a3e7d366" + integrity sha512-6gfrPwh7OuT6gZyJZvd6WbTfrqAo7vm4xCzAXOusKqq/vWdKXphTpj5klHKNmRUU6/QRGlBsyU9mAIPaWHlqJA== + dependencies: + "@babel/types" "^7.23.0" + +"@babel/helper-module-imports@^7.10.4", "@babel/helper-module-imports@^7.16.7", "@babel/helper-module-imports@^7.22.15": + version "7.22.15" + resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.22.15.tgz#16146307acdc40cc00c3b2c647713076464bdbf0" + integrity sha512-0pYVBnDKZO2fnSPCrgM/6WMc7eS20Fbok+0r88fp+YtWVLZrp4CkafFGIp+W0VKw4a22sgebPT99y+FDNMdP4w== + dependencies: + "@babel/types" "^7.22.15" + +"@babel/helper-module-transforms@^7.23.3": + version "7.23.3" + resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.23.3.tgz#d7d12c3c5d30af5b3c0fcab2a6d5217773e2d0f1" + integrity sha512-7bBs4ED9OmswdfDzpz4MpWgSrV7FXlc3zIagvLFjS5H+Mk7Snr21vQ6QwrsoCGMfNC4e4LQPdoULEt4ykz0SRQ== + dependencies: + "@babel/helper-environment-visitor" "^7.22.20" + "@babel/helper-module-imports" "^7.22.15" + "@babel/helper-simple-access" "^7.22.5" + "@babel/helper-split-export-declaration" "^7.22.6" + "@babel/helper-validator-identifier" "^7.22.20" + +"@babel/helper-optimise-call-expression@^7.22.5": + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.22.5.tgz#f21531a9ccbff644fdd156b4077c16ff0c3f609e" + integrity sha512-HBwaojN0xFRx4yIvpwGqxiV2tUfl7401jlok564NgB9EHS1y6QT17FmKWm4ztqjeVdXLuC4fSvHc5ePpQjoTbw== + dependencies: + "@babel/types" "^7.22.5" + +"@babel/helper-plugin-utils@^7.0.0", "@babel/helper-plugin-utils@^7.10.4", "@babel/helper-plugin-utils@^7.12.13", "@babel/helper-plugin-utils@^7.14.5", "@babel/helper-plugin-utils@^7.18.6", "@babel/helper-plugin-utils@^7.20.2", "@babel/helper-plugin-utils@^7.22.5", "@babel/helper-plugin-utils@^7.8.0", "@babel/helper-plugin-utils@^7.8.3": + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.22.5.tgz#dd7ee3735e8a313b9f7b05a773d892e88e6d7295" + integrity sha512-uLls06UVKgFG9QD4OeFYLEGteMIAa5kpTPcFL28yuCIIzsf6ZyKZMllKVOCZFhiZ5ptnwX4mtKdWCBE/uT4amg== + +"@babel/helper-remap-async-to-generator@^7.22.20": + version "7.22.20" + resolved "https://registry.yarnpkg.com/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.22.20.tgz#7b68e1cb4fa964d2996fd063723fb48eca8498e0" + integrity sha512-pBGyV4uBqOns+0UvhsTO8qgl8hO89PmiDYv+/COyp1aeMcmfrfruz+/nCMFiYyFF/Knn0yfrC85ZzNFjembFTw== + dependencies: + "@babel/helper-annotate-as-pure" "^7.22.5" + "@babel/helper-environment-visitor" "^7.22.20" + "@babel/helper-wrap-function" "^7.22.20" + +"@babel/helper-replace-supers@^7.22.20": + version "7.22.20" + resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.22.20.tgz#e37d367123ca98fe455a9887734ed2e16eb7a793" + integrity sha512-qsW0In3dbwQUbK8kejJ4R7IHVGwHJlV6lpG6UA7a9hSa2YEiAib+N1T2kr6PEeUT+Fl7najmSOS6SmAwCHK6Tw== + dependencies: + "@babel/helper-environment-visitor" "^7.22.20" + "@babel/helper-member-expression-to-functions" "^7.22.15" + "@babel/helper-optimise-call-expression" "^7.22.5" + +"@babel/helper-simple-access@^7.22.5": + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.22.5.tgz#4938357dc7d782b80ed6dbb03a0fba3d22b1d5de" + integrity sha512-n0H99E/K+Bika3++WNL17POvo4rKWZ7lZEp1Q+fStVbUi8nxPQEBOlTmCOxW/0JsS56SKKQ+ojAe2pHKJHN35w== + dependencies: + "@babel/types" "^7.22.5" + +"@babel/helper-skip-transparent-expression-wrappers@^7.20.0", "@babel/helper-skip-transparent-expression-wrappers@^7.22.5": + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.22.5.tgz#007f15240b5751c537c40e77abb4e89eeaaa8847" + integrity sha512-tK14r66JZKiC43p8Ki33yLBVJKlQDFoA8GYN67lWCDCqoL6EMMSuM9b+Iff2jHaM/RRFYl7K+iiru7hbRqNx8Q== + dependencies: + "@babel/types" "^7.22.5" + +"@babel/helper-split-export-declaration@^7.22.6": + version "7.22.6" + resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.22.6.tgz#322c61b7310c0997fe4c323955667f18fcefb91c" + integrity sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g== + dependencies: + "@babel/types" "^7.22.5" + +"@babel/helper-string-parser@^7.23.4": + version "7.23.4" + resolved "https://registry.yarnpkg.com/@babel/helper-string-parser/-/helper-string-parser-7.23.4.tgz#9478c707febcbbe1ddb38a3d91a2e054ae622d83" + integrity sha512-803gmbQdqwdf4olxrX4AJyFBV/RTr3rSmOj0rKwesmzlfhYNDEs+/iOcznzpNWlJlIlTJC2QfPFcHB6DlzdVLQ== + +"@babel/helper-validator-identifier@^7.22.20": + version "7.22.20" + resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.20.tgz#c4ae002c61d2879e724581d96665583dbc1dc0e0" + integrity sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A== + +"@babel/helper-validator-option@^7.22.15", "@babel/helper-validator-option@^7.23.5": + version "7.23.5" + resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.23.5.tgz#907a3fbd4523426285365d1206c423c4c5520307" + integrity sha512-85ttAOMLsr53VgXkTbkx8oA6YTfT4q7/HzXSLEYmjcSTJPMPQtvq1BD79Byep5xMUYbGRzEpDsjUf3dyp54IKw== + +"@babel/helper-wrap-function@^7.22.20": + version "7.22.20" + resolved "https://registry.yarnpkg.com/@babel/helper-wrap-function/-/helper-wrap-function-7.22.20.tgz#15352b0b9bfb10fc9c76f79f6342c00e3411a569" + integrity sha512-pms/UwkOpnQe/PDAEdV/d7dVCoBbB+R4FvYoHGZz+4VPcg7RtYy2KP7S2lbuWM6FCSgob5wshfGESbC/hzNXZw== + dependencies: + "@babel/helper-function-name" "^7.22.5" + "@babel/template" "^7.22.15" + "@babel/types" "^7.22.19" + +"@babel/helpers@^7.23.9": + version "7.23.9" + resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.23.9.tgz#c3e20bbe7f7a7e10cb9b178384b4affdf5995c7d" + integrity sha512-87ICKgU5t5SzOT7sBMfCOZQ2rHjRU+Pcb9BoILMYz600W6DkVRLFBPwQ18gwUVvggqXivaUakpnxWQGbpywbBQ== + dependencies: + "@babel/template" "^7.23.9" + "@babel/traverse" "^7.23.9" + "@babel/types" "^7.23.9" + +"@babel/highlight@^7.23.4": + version "7.23.4" + resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.23.4.tgz#edaadf4d8232e1a961432db785091207ead0621b" + integrity sha512-acGdbYSfp2WheJoJm/EBBBLh/ID8KDc64ISZ9DYtBmC8/Q204PZJLHyzeB5qMzJ5trcOkybd78M4x2KWsUq++A== + dependencies: + "@babel/helper-validator-identifier" "^7.22.20" + chalk "^2.4.2" + js-tokens "^4.0.0" + +"@babel/parser@^7.1.0", "@babel/parser@^7.14.7", "@babel/parser@^7.20.7", "@babel/parser@^7.23.9": + version "7.23.9" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.23.9.tgz#7b903b6149b0f8fa7ad564af646c4c38a77fc44b" + integrity sha512-9tcKgqKbs3xGJ+NtKF2ndOBBLVwPjl1SHxPQkd36r3Dlirw3xWUeGaTbqr7uGZcTaxkVNwc+03SVP7aCdWrTlA== + +"@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@^7.23.3": + version "7.23.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.23.3.tgz#5cd1c87ba9380d0afb78469292c954fee5d2411a" + integrity sha512-iRkKcCqb7iGnq9+3G6rZ+Ciz5VywC4XNRHe57lKM+jOeYAoR0lVqdeeDRfh0tQcTfw/+vBhHn926FmQhLtlFLQ== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@^7.23.3": + version "7.23.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.23.3.tgz#f6652bb16b94f8f9c20c50941e16e9756898dc5d" + integrity sha512-WwlxbfMNdVEpQjZmK5mhm7oSwD3dS6eU+Iwsi4Knl9wAletWem7kaRsGOG+8UEbRyqxY4SS5zvtfXwX+jMxUwQ== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + "@babel/helper-skip-transparent-expression-wrappers" "^7.22.5" + "@babel/plugin-transform-optional-chaining" "^7.23.3" + +"@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@^7.23.7": + version "7.23.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly/-/plugin-bugfix-v8-static-class-fields-redefine-readonly-7.23.7.tgz#516462a95d10a9618f197d39ad291a9b47ae1d7b" + integrity sha512-LlRT7HgaifEpQA1ZgLVOIJZZFVPWN5iReq/7/JixwBtwcoeVGDBD53ZV28rrsLYOZs1Y/EHhA8N/Z6aazHR8cw== + dependencies: + "@babel/helper-environment-visitor" "^7.22.20" + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-proposal-class-properties@^7.16.0": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.18.6.tgz#b110f59741895f7ec21a6fff696ec46265c446a3" + integrity sha512-cumfXOF0+nzZrrN8Rf0t7M+tF6sZc7vhQwYQck9q1/5w2OExlD+b4v4RpMJFaV1Z7WcDRgO6FqvxqxGlwo+RHQ== + dependencies: + "@babel/helper-create-class-features-plugin" "^7.18.6" + "@babel/helper-plugin-utils" "^7.18.6" + +"@babel/plugin-proposal-decorators@^7.16.4": + version "7.23.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-decorators/-/plugin-proposal-decorators-7.23.9.tgz#126d947d62ee72022ec46813983c6dd861456fa3" + integrity sha512-hJhBCb0+NnTWybvWq2WpbCYDOcflSbx0t+BYP65e5R9GVnukiDTi+on5bFkk4p7QGuv190H6KfNiV9Knf/3cZA== + dependencies: + "@babel/helper-create-class-features-plugin" "^7.23.9" + "@babel/helper-plugin-utils" "^7.22.5" + "@babel/plugin-syntax-decorators" "^7.23.3" + +"@babel/plugin-proposal-nullish-coalescing-operator@^7.16.0": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.18.6.tgz#fdd940a99a740e577d6c753ab6fbb43fdb9467e1" + integrity sha512-wQxQzxYeJqHcfppzBDnm1yAY0jSRkUXR2z8RePZYrKwMKgMlE8+Z6LUno+bd6LvbGh8Gltvy74+9pIYkr+XkKA== + dependencies: + "@babel/helper-plugin-utils" "^7.18.6" + "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3" + +"@babel/plugin-proposal-numeric-separator@^7.16.0": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.18.6.tgz#899b14fbafe87f053d2c5ff05b36029c62e13c75" + integrity sha512-ozlZFogPqoLm8WBr5Z8UckIoE4YQ5KESVcNudyXOR8uqIkliTEgJ3RoketfG6pmzLdeZF0H/wjE9/cCEitBl7Q== + dependencies: + "@babel/helper-plugin-utils" "^7.18.6" + "@babel/plugin-syntax-numeric-separator" "^7.10.4" + +"@babel/plugin-proposal-optional-chaining@^7.16.0": + version "7.21.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.21.0.tgz#886f5c8978deb7d30f678b2e24346b287234d3ea" + integrity sha512-p4zeefM72gpmEe2fkUr/OnOXpWEf8nAgk7ZYVqqfFiyIG7oFfVZcCrU64hWn5xp4tQ9LkV4bTIa5rD0KANpKNA== + dependencies: + "@babel/helper-plugin-utils" "^7.20.2" + "@babel/helper-skip-transparent-expression-wrappers" "^7.20.0" + "@babel/plugin-syntax-optional-chaining" "^7.8.3" + +"@babel/plugin-proposal-private-methods@^7.16.0": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.18.6.tgz#5209de7d213457548a98436fa2882f52f4be6bea" + integrity sha512-nutsvktDItsNn4rpGItSNV2sz1XwS+nfU0Rg8aCx3W3NOKVzdMjJRu0O5OkgDp3ZGICSTbgRpxZoWsxoKRvbeA== + dependencies: + "@babel/helper-create-class-features-plugin" "^7.18.6" + "@babel/helper-plugin-utils" "^7.18.6" + +"@babel/plugin-proposal-private-property-in-object@7.21.0-placeholder-for-preset-env.2": + version "7.21.0-placeholder-for-preset-env.2" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.21.0-placeholder-for-preset-env.2.tgz#7844f9289546efa9febac2de4cfe358a050bd703" + integrity sha512-SOSkfJDddaM7mak6cPEpswyTRnuRltl429hMraQEglW+OkovnCzsiszTmsrlY//qLFjCpQDFRvjdm2wA5pPm9w== + +"@babel/plugin-syntax-async-generators@^7.8.4": + version "7.8.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz#a983fb1aeb2ec3f6ed042a210f640e90e786fe0d" + integrity sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-bigint@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-bigint/-/plugin-syntax-bigint-7.8.3.tgz#4c9a6f669f5d0cdf1b90a1671e9a146be5300cea" + integrity sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-class-properties@^7.12.13", "@babel/plugin-syntax-class-properties@^7.8.3": + version "7.12.13" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz#b5c987274c4a3a82b89714796931a6b53544ae10" + integrity sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA== + dependencies: + "@babel/helper-plugin-utils" "^7.12.13" + +"@babel/plugin-syntax-class-static-block@^7.14.5": + version "7.14.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz#195df89b146b4b78b3bf897fd7a257c84659d406" + integrity sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw== + dependencies: + "@babel/helper-plugin-utils" "^7.14.5" + +"@babel/plugin-syntax-decorators@^7.23.3": + version "7.23.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-decorators/-/plugin-syntax-decorators-7.23.3.tgz#a1d351d6c25bfdcf2e16f99b039101bc0ffcb0ca" + integrity sha512-cf7Niq4/+/juY67E0PbgH0TDhLQ5J7zS8C/Q5FFx+DWyrRa9sUQdTXkjqKu8zGvuqr7vw1muKiukseihU+PJDA== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-syntax-dynamic-import@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz#62bf98b2da3cd21d626154fc96ee5b3cb68eacb3" + integrity sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-export-namespace-from@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.8.3.tgz#028964a9ba80dbc094c915c487ad7c4e7a66465a" + integrity sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + +"@babel/plugin-syntax-flow@^7.23.3": + version "7.23.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-flow/-/plugin-syntax-flow-7.23.3.tgz#084564e0f3cc21ea6c70c44cff984a1c0509729a" + integrity sha512-YZiAIpkJAwQXBJLIQbRFayR5c+gJ35Vcz3bg954k7cd73zqjvhacJuL9RbrzPz8qPmZdgqP6EUKwy0PCNhaaPA== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-syntax-import-assertions@^7.23.3": + version "7.23.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.23.3.tgz#9c05a7f592982aff1a2768260ad84bcd3f0c77fc" + integrity sha512-lPgDSU+SJLK3xmFDTV2ZRQAiM7UuUjGidwBywFavObCiZc1BeAAcMtHJKUya92hPHO+at63JJPLygilZard8jw== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-syntax-import-attributes@^7.23.3": + version "7.23.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.23.3.tgz#992aee922cf04512461d7dae3ff6951b90a2dc06" + integrity sha512-pawnE0P9g10xgoP7yKr6CK63K2FMsTE+FZidZO/1PwRdzmAPVs+HS1mAURUsgaoxammTJvULUdIkEK0gOcU2tA== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-syntax-import-meta@^7.10.4", "@babel/plugin-syntax-import-meta@^7.8.3": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz#ee601348c370fa334d2207be158777496521fd51" + integrity sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-syntax-json-strings@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz#01ca21b668cd8218c9e640cb6dd88c5412b2c96a" + integrity sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-jsx@^7.23.3", "@babel/plugin-syntax-jsx@^7.7.2": + version "7.23.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.23.3.tgz#8f2e4f8a9b5f9aa16067e142c1ac9cd9f810f473" + integrity sha512-EB2MELswq55OHUoRZLGg/zC7QWUKfNLpE57m/S2yr1uEneIgsTgrSzXP3NXEsMkVn76OlaVVnzN+ugObuYGwhg== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-syntax-logical-assignment-operators@^7.10.4", "@babel/plugin-syntax-logical-assignment-operators@^7.8.3": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz#ca91ef46303530448b906652bac2e9fe9941f699" + integrity sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-syntax-nullish-coalescing-operator@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz#167ed70368886081f74b5c36c65a88c03b66d1a9" + integrity sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-numeric-separator@^7.10.4", "@babel/plugin-syntax-numeric-separator@^7.8.3": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz#b9b070b3e33570cd9fd07ba7fa91c0dd37b9af97" + integrity sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-syntax-object-rest-spread@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz#60e225edcbd98a640332a2e72dd3e66f1af55871" + integrity sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-optional-catch-binding@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz#6111a265bcfb020eb9efd0fdfd7d26402b9ed6c1" + integrity sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-optional-chaining@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz#4f69c2ab95167e0180cd5336613f8c5788f7d48a" + integrity sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-private-property-in-object@^7.14.5": + version "7.14.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz#0dc6671ec0ea22b6e94a1114f857970cd39de1ad" + integrity sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg== + dependencies: + "@babel/helper-plugin-utils" "^7.14.5" + +"@babel/plugin-syntax-top-level-await@^7.14.5", "@babel/plugin-syntax-top-level-await@^7.8.3": + version "7.14.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz#c1cfdadc35a646240001f06138247b741c34d94c" + integrity sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw== + dependencies: + "@babel/helper-plugin-utils" "^7.14.5" + +"@babel/plugin-syntax-typescript@^7.23.3", "@babel/plugin-syntax-typescript@^7.7.2": + version "7.23.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.23.3.tgz#24f460c85dbbc983cd2b9c4994178bcc01df958f" + integrity sha512-9EiNjVJOMwCO+43TqoTrgQ8jMwcAd0sWyXi9RPfIsLTj4R2MADDDQXELhffaUx/uJv2AYcxBgPwH6j4TIA4ytQ== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-syntax-unicode-sets-regex@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-unicode-sets-regex/-/plugin-syntax-unicode-sets-regex-7.18.6.tgz#d49a3b3e6b52e5be6740022317580234a6a47357" + integrity sha512-727YkEAPwSIQTv5im8QHz3upqp92JTWhidIC81Tdx4VJYIte/VndKf1qKrfnnhPLiPghStWfvC/iFaMCQu7Nqg== + dependencies: + "@babel/helper-create-regexp-features-plugin" "^7.18.6" + "@babel/helper-plugin-utils" "^7.18.6" + +"@babel/plugin-transform-arrow-functions@^7.23.3": + version "7.23.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.23.3.tgz#94c6dcfd731af90f27a79509f9ab7fb2120fc38b" + integrity sha512-NzQcQrzaQPkaEwoTm4Mhyl8jI1huEL/WWIEvudjTCMJ9aBZNpsJbMASx7EQECtQQPS/DcnFpo0FIh3LvEO9cxQ== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-transform-async-generator-functions@^7.23.9": + version "7.23.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.23.9.tgz#9adaeb66fc9634a586c5df139c6240d41ed801ce" + integrity sha512-8Q3veQEDGe14dTYuwagbRtwxQDnytyg1JFu4/HwEMETeofocrB0U0ejBJIXoeG/t2oXZ8kzCyI0ZZfbT80VFNQ== + dependencies: + "@babel/helper-environment-visitor" "^7.22.20" + "@babel/helper-plugin-utils" "^7.22.5" + "@babel/helper-remap-async-to-generator" "^7.22.20" + "@babel/plugin-syntax-async-generators" "^7.8.4" + +"@babel/plugin-transform-async-to-generator@^7.23.3": + version "7.23.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.23.3.tgz#d1f513c7a8a506d43f47df2bf25f9254b0b051fa" + integrity sha512-A7LFsKi4U4fomjqXJlZg/u0ft/n8/7n7lpffUP/ZULx/DtV9SGlNKZolHH6PE8Xl1ngCc0M11OaeZptXVkfKSw== + dependencies: + "@babel/helper-module-imports" "^7.22.15" + "@babel/helper-plugin-utils" "^7.22.5" + "@babel/helper-remap-async-to-generator" "^7.22.20" + +"@babel/plugin-transform-block-scoped-functions@^7.23.3": + version "7.23.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.23.3.tgz#fe1177d715fb569663095e04f3598525d98e8c77" + integrity sha512-vI+0sIaPIO6CNuM9Kk5VmXcMVRiOpDh7w2zZt9GXzmE/9KD70CUEVhvPR/etAeNK/FAEkhxQtXOzVF3EuRL41A== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-transform-block-scoping@^7.23.4": + version "7.23.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.23.4.tgz#b2d38589531c6c80fbe25e6b58e763622d2d3cf5" + integrity sha512-0QqbP6B6HOh7/8iNR4CQU2Th/bbRtBp4KS9vcaZd1fZ0wSh5Fyssg0UCIHwxh+ka+pNDREbVLQnHCMHKZfPwfw== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-transform-class-properties@^7.23.3": + version "7.23.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-class-properties/-/plugin-transform-class-properties-7.23.3.tgz#35c377db11ca92a785a718b6aa4e3ed1eb65dc48" + integrity sha512-uM+AN8yCIjDPccsKGlw271xjJtGii+xQIF/uMPS8H15L12jZTsLfF4o5vNO7d/oUguOyfdikHGc/yi9ge4SGIg== + dependencies: + "@babel/helper-create-class-features-plugin" "^7.22.15" + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-transform-class-static-block@^7.23.4": + version "7.23.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.23.4.tgz#2a202c8787a8964dd11dfcedf994d36bfc844ab5" + integrity sha512-nsWu/1M+ggti1SOALj3hfx5FXzAY06fwPJsUZD4/A5e1bWi46VUIWtD+kOX6/IdhXGsXBWllLFDSnqSCdUNydQ== + dependencies: + "@babel/helper-create-class-features-plugin" "^7.22.15" + "@babel/helper-plugin-utils" "^7.22.5" + "@babel/plugin-syntax-class-static-block" "^7.14.5" + +"@babel/plugin-transform-classes@^7.23.8": + version "7.23.8" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.23.8.tgz#d08ae096c240347badd68cdf1b6d1624a6435d92" + integrity sha512-yAYslGsY1bX6Knmg46RjiCiNSwJKv2IUC8qOdYKqMMr0491SXFhcHqOdRDeCRohOOIzwN/90C6mQ9qAKgrP7dg== + dependencies: + "@babel/helper-annotate-as-pure" "^7.22.5" + "@babel/helper-compilation-targets" "^7.23.6" + "@babel/helper-environment-visitor" "^7.22.20" + "@babel/helper-function-name" "^7.23.0" + "@babel/helper-plugin-utils" "^7.22.5" + "@babel/helper-replace-supers" "^7.22.20" + "@babel/helper-split-export-declaration" "^7.22.6" + globals "^11.1.0" + +"@babel/plugin-transform-computed-properties@^7.23.3": + version "7.23.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.23.3.tgz#652e69561fcc9d2b50ba4f7ac7f60dcf65e86474" + integrity sha512-dTj83UVTLw/+nbiHqQSFdwO9CbTtwq1DsDqm3CUEtDrZNET5rT5E6bIdTlOftDTDLMYxvxHNEYO4B9SLl8SLZw== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + "@babel/template" "^7.22.15" + +"@babel/plugin-transform-destructuring@^7.23.3": + version "7.23.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.23.3.tgz#8c9ee68228b12ae3dff986e56ed1ba4f3c446311" + integrity sha512-n225npDqjDIr967cMScVKHXJs7rout1q+tt50inyBCPkyZ8KxeI6d+GIbSBTT/w/9WdlWDOej3V9HE5Lgk57gw== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-transform-dotall-regex@^7.23.3": + version "7.23.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.23.3.tgz#3f7af6054882ede89c378d0cf889b854a993da50" + integrity sha512-vgnFYDHAKzFaTVp+mneDsIEbnJ2Np/9ng9iviHw3P/KVcgONxpNULEW/51Z/BaFojG2GI2GwwXck5uV1+1NOYQ== + dependencies: + "@babel/helper-create-regexp-features-plugin" "^7.22.15" + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-transform-duplicate-keys@^7.23.3": + version "7.23.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.23.3.tgz#664706ca0a5dfe8d066537f99032fc1dc8b720ce" + integrity sha512-RrqQ+BQmU3Oyav3J+7/myfvRCq7Tbz+kKLLshUmMwNlDHExbGL7ARhajvoBJEvc+fCguPPu887N+3RRXBVKZUA== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-transform-dynamic-import@^7.23.4": + version "7.23.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dynamic-import/-/plugin-transform-dynamic-import-7.23.4.tgz#c7629e7254011ac3630d47d7f34ddd40ca535143" + integrity sha512-V6jIbLhdJK86MaLh4Jpghi8ho5fGzt3imHOBu/x0jlBaPYqDoWz4RDXjmMOfnh+JWNaQleEAByZLV0QzBT4YQQ== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + "@babel/plugin-syntax-dynamic-import" "^7.8.3" + +"@babel/plugin-transform-exponentiation-operator@^7.23.3": + version "7.23.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.23.3.tgz#ea0d978f6b9232ba4722f3dbecdd18f450babd18" + integrity sha512-5fhCsl1odX96u7ILKHBj4/Y8vipoqwsJMh4csSA8qFfxrZDEA4Ssku2DyNvMJSmZNOEBT750LfFPbtrnTP90BQ== + dependencies: + "@babel/helper-builder-binary-assignment-operator-visitor" "^7.22.15" + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-transform-export-namespace-from@^7.23.4": + version "7.23.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-export-namespace-from/-/plugin-transform-export-namespace-from-7.23.4.tgz#084c7b25e9a5c8271e987a08cf85807b80283191" + integrity sha512-GzuSBcKkx62dGzZI1WVgTWvkkz84FZO5TC5T8dl/Tht/rAla6Dg/Mz9Yhypg+ezVACf/rgDuQt3kbWEv7LdUDQ== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + "@babel/plugin-syntax-export-namespace-from" "^7.8.3" + +"@babel/plugin-transform-flow-strip-types@^7.16.0": + version "7.23.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-flow-strip-types/-/plugin-transform-flow-strip-types-7.23.3.tgz#cfa7ca159cc3306fab526fc67091556b51af26ff" + integrity sha512-26/pQTf9nQSNVJCrLB1IkHUKyPxR+lMrH2QDPG89+Znu9rAMbtrybdbWeE9bb7gzjmE5iXHEY+e0HUwM6Co93Q== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + "@babel/plugin-syntax-flow" "^7.23.3" + +"@babel/plugin-transform-for-of@^7.23.6": + version "7.23.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.23.6.tgz#81c37e24171b37b370ba6aaffa7ac86bcb46f94e" + integrity sha512-aYH4ytZ0qSuBbpfhuofbg/e96oQ7U2w1Aw/UQmKT+1l39uEhUPoFS3fHevDc1G0OvewyDudfMKY1OulczHzWIw== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + "@babel/helper-skip-transparent-expression-wrappers" "^7.22.5" + +"@babel/plugin-transform-function-name@^7.23.3": + version "7.23.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.23.3.tgz#8f424fcd862bf84cb9a1a6b42bc2f47ed630f8dc" + integrity sha512-I1QXp1LxIvt8yLaib49dRW5Okt7Q4oaxao6tFVKS/anCdEOMtYwWVKoiOA1p34GOWIZjUK0E+zCp7+l1pfQyiw== + dependencies: + "@babel/helper-compilation-targets" "^7.22.15" + "@babel/helper-function-name" "^7.23.0" + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-transform-json-strings@^7.23.4": + version "7.23.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-json-strings/-/plugin-transform-json-strings-7.23.4.tgz#a871d9b6bd171976efad2e43e694c961ffa3714d" + integrity sha512-81nTOqM1dMwZ/aRXQ59zVubN9wHGqk6UtqRK+/q+ciXmRy8fSolhGVvG09HHRGo4l6fr/c4ZhXUQH0uFW7PZbg== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + "@babel/plugin-syntax-json-strings" "^7.8.3" + +"@babel/plugin-transform-literals@^7.23.3": + version "7.23.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-literals/-/plugin-transform-literals-7.23.3.tgz#8214665f00506ead73de157eba233e7381f3beb4" + integrity sha512-wZ0PIXRxnwZvl9AYpqNUxpZ5BiTGrYt7kueGQ+N5FiQ7RCOD4cm8iShd6S6ggfVIWaJf2EMk8eRzAh52RfP4rQ== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-transform-logical-assignment-operators@^7.23.4": + version "7.23.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.23.4.tgz#e599f82c51d55fac725f62ce55d3a0886279ecb5" + integrity sha512-Mc/ALf1rmZTP4JKKEhUwiORU+vcfarFVLfcFiolKUo6sewoxSEgl36ak5t+4WamRsNr6nzjZXQjM35WsU+9vbg== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + "@babel/plugin-syntax-logical-assignment-operators" "^7.10.4" + +"@babel/plugin-transform-member-expression-literals@^7.23.3": + version "7.23.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.23.3.tgz#e37b3f0502289f477ac0e776b05a833d853cabcc" + integrity sha512-sC3LdDBDi5x96LA+Ytekz2ZPk8i/Ck+DEuDbRAll5rknJ5XRTSaPKEYwomLcs1AA8wg9b3KjIQRsnApj+q51Ag== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-transform-modules-amd@^7.23.3": + version "7.23.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.23.3.tgz#e19b55436a1416829df0a1afc495deedfae17f7d" + integrity sha512-vJYQGxeKM4t8hYCKVBlZX/gtIY2I7mRGFNcm85sgXGMTBcoV3QdVtdpbcWEbzbfUIUZKwvgFT82mRvaQIebZzw== + dependencies: + "@babel/helper-module-transforms" "^7.23.3" + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-transform-modules-commonjs@^7.23.3": + version "7.23.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.23.3.tgz#661ae831b9577e52be57dd8356b734f9700b53b4" + integrity sha512-aVS0F65LKsdNOtcz6FRCpE4OgsP2OFnW46qNxNIX9h3wuzaNcSQsJysuMwqSibC98HPrf2vCgtxKNwS0DAlgcA== + dependencies: + "@babel/helper-module-transforms" "^7.23.3" + "@babel/helper-plugin-utils" "^7.22.5" + "@babel/helper-simple-access" "^7.22.5" + +"@babel/plugin-transform-modules-systemjs@^7.23.9": + version "7.23.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.23.9.tgz#105d3ed46e4a21d257f83a2f9e2ee4203ceda6be" + integrity sha512-KDlPRM6sLo4o1FkiSlXoAa8edLXFsKKIda779fbLrvmeuc3itnjCtaO6RrtoaANsIJANj+Vk1zqbZIMhkCAHVw== + dependencies: + "@babel/helper-hoist-variables" "^7.22.5" + "@babel/helper-module-transforms" "^7.23.3" + "@babel/helper-plugin-utils" "^7.22.5" + "@babel/helper-validator-identifier" "^7.22.20" + +"@babel/plugin-transform-modules-umd@^7.23.3": + version "7.23.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.23.3.tgz#5d4395fccd071dfefe6585a4411aa7d6b7d769e9" + integrity sha512-zHsy9iXX2nIsCBFPud3jKn1IRPWg3Ing1qOZgeKV39m1ZgIdpJqvlWVeiHBZC6ITRG0MfskhYe9cLgntfSFPIg== + dependencies: + "@babel/helper-module-transforms" "^7.23.3" + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-transform-named-capturing-groups-regex@^7.22.5": + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.22.5.tgz#67fe18ee8ce02d57c855185e27e3dc959b2e991f" + integrity sha512-YgLLKmS3aUBhHaxp5hi1WJTgOUb/NCuDHzGT9z9WTt3YG+CPRhJs6nprbStx6DnWM4dh6gt7SU3sZodbZ08adQ== + dependencies: + "@babel/helper-create-regexp-features-plugin" "^7.22.5" + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-transform-new-target@^7.23.3": + version "7.23.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.23.3.tgz#5491bb78ed6ac87e990957cea367eab781c4d980" + integrity sha512-YJ3xKqtJMAT5/TIZnpAR3I+K+WaDowYbN3xyxI8zxx/Gsypwf9B9h0VB+1Nh6ACAAPRS5NSRje0uVv5i79HYGQ== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-transform-nullish-coalescing-operator@^7.23.4": + version "7.23.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.23.4.tgz#45556aad123fc6e52189ea749e33ce090637346e" + integrity sha512-jHE9EVVqHKAQx+VePv5LLGHjmHSJR76vawFPTdlxR/LVJPfOEGxREQwQfjuZEOPTwG92X3LINSh3M40Rv4zpVA== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3" + +"@babel/plugin-transform-numeric-separator@^7.23.4": + version "7.23.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-7.23.4.tgz#03d08e3691e405804ecdd19dd278a40cca531f29" + integrity sha512-mps6auzgwjRrwKEZA05cOwuDc9FAzoyFS4ZsG/8F43bTLf/TgkJg7QXOrPO1JO599iA3qgK9MXdMGOEC8O1h6Q== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + "@babel/plugin-syntax-numeric-separator" "^7.10.4" + +"@babel/plugin-transform-object-rest-spread@^7.23.4": + version "7.23.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.23.4.tgz#2b9c2d26bf62710460bdc0d1730d4f1048361b83" + integrity sha512-9x9K1YyeQVw0iOXJlIzwm8ltobIIv7j2iLyP2jIhEbqPRQ7ScNgwQufU2I0Gq11VjyG4gI4yMXt2VFags+1N3g== + dependencies: + "@babel/compat-data" "^7.23.3" + "@babel/helper-compilation-targets" "^7.22.15" + "@babel/helper-plugin-utils" "^7.22.5" + "@babel/plugin-syntax-object-rest-spread" "^7.8.3" + "@babel/plugin-transform-parameters" "^7.23.3" + +"@babel/plugin-transform-object-super@^7.23.3": + version "7.23.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.23.3.tgz#81fdb636dcb306dd2e4e8fd80db5b2362ed2ebcd" + integrity sha512-BwQ8q0x2JG+3lxCVFohg+KbQM7plfpBwThdW9A6TMtWwLsbDA01Ek2Zb/AgDN39BiZsExm4qrXxjk+P1/fzGrA== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + "@babel/helper-replace-supers" "^7.22.20" + +"@babel/plugin-transform-optional-catch-binding@^7.23.4": + version "7.23.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-optional-catch-binding/-/plugin-transform-optional-catch-binding-7.23.4.tgz#318066de6dacce7d92fa244ae475aa8d91778017" + integrity sha512-XIq8t0rJPHf6Wvmbn9nFxU6ao4c7WhghTR5WyV8SrJfUFzyxhCm4nhC+iAp3HFhbAKLfYpgzhJ6t4XCtVwqO5A== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + "@babel/plugin-syntax-optional-catch-binding" "^7.8.3" + +"@babel/plugin-transform-optional-chaining@^7.23.3", "@babel/plugin-transform-optional-chaining@^7.23.4": + version "7.23.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.23.4.tgz#6acf61203bdfc4de9d4e52e64490aeb3e52bd017" + integrity sha512-ZU8y5zWOfjM5vZ+asjgAPwDaBjJzgufjES89Rs4Lpq63O300R/kOz30WCLo6BxxX6QVEilwSlpClnG5cZaikTA== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + "@babel/helper-skip-transparent-expression-wrappers" "^7.22.5" + "@babel/plugin-syntax-optional-chaining" "^7.8.3" + +"@babel/plugin-transform-parameters@^7.23.3": + version "7.23.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.23.3.tgz#83ef5d1baf4b1072fa6e54b2b0999a7b2527e2af" + integrity sha512-09lMt6UsUb3/34BbECKVbVwrT9bO6lILWln237z7sLaWnMsTi7Yc9fhX5DLpkJzAGfaReXI22wP41SZmnAA3Vw== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-transform-private-methods@^7.23.3": + version "7.23.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-private-methods/-/plugin-transform-private-methods-7.23.3.tgz#b2d7a3c97e278bfe59137a978d53b2c2e038c0e4" + integrity sha512-UzqRcRtWsDMTLrRWFvUBDwmw06tCQH9Rl1uAjfh6ijMSmGYQ+fpdB+cnqRC8EMh5tuuxSv0/TejGL+7vyj+50g== + dependencies: + "@babel/helper-create-class-features-plugin" "^7.22.15" + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-transform-private-property-in-object@^7.23.4": + version "7.23.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.23.4.tgz#3ec711d05d6608fd173d9b8de39872d8dbf68bf5" + integrity sha512-9G3K1YqTq3F4Vt88Djx1UZ79PDyj+yKRnUy7cZGSMe+a7jkwD259uKKuUzQlPkGam7R+8RJwh5z4xO27fA1o2A== + dependencies: + "@babel/helper-annotate-as-pure" "^7.22.5" + "@babel/helper-create-class-features-plugin" "^7.22.15" + "@babel/helper-plugin-utils" "^7.22.5" + "@babel/plugin-syntax-private-property-in-object" "^7.14.5" + +"@babel/plugin-transform-property-literals@^7.23.3": + version "7.23.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.23.3.tgz#54518f14ac4755d22b92162e4a852d308a560875" + integrity sha512-jR3Jn3y7cZp4oEWPFAlRsSWjxKe4PZILGBSd4nis1TsC5qeSpb+nrtihJuDhNI7QHiVbUaiXa0X2RZY3/TI6Nw== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-transform-react-constant-elements@^7.12.1": + version "7.23.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-constant-elements/-/plugin-transform-react-constant-elements-7.23.3.tgz#5efc001d07ef0f7da0d73c3a86c132f73d28e43c" + integrity sha512-zP0QKq/p6O42OL94udMgSfKXyse4RyJ0JqbQ34zDAONWjyrEsghYEyTSK5FIpmXmCpB55SHokL1cRRKHv8L2Qw== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-transform-react-display-name@^7.16.0", "@babel/plugin-transform-react-display-name@^7.23.3": + version "7.23.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.23.3.tgz#70529f034dd1e561045ad3c8152a267f0d7b6200" + integrity sha512-GnvhtVfA2OAtzdX58FJxU19rhoGeQzyVndw3GgtdECQvQFXPEZIOVULHVZGAYmOgmqjXpVpfocAbSjh99V/Fqw== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-transform-react-jsx-development@^7.22.5": + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx-development/-/plugin-transform-react-jsx-development-7.22.5.tgz#e716b6edbef972a92165cd69d92f1255f7e73e87" + integrity sha512-bDhuzwWMuInwCYeDeMzyi7TaBgRQei6DqxhbyniL7/VG4RSS7HtSL2QbY4eESy1KJqlWt8g3xeEBGPuo+XqC8A== + dependencies: + "@babel/plugin-transform-react-jsx" "^7.22.5" + +"@babel/plugin-transform-react-jsx-self@^7.23.3": + version "7.23.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.23.3.tgz#ed3e7dadde046cce761a8e3cf003a13d1a7972d9" + integrity sha512-qXRvbeKDSfwnlJnanVRp0SfuWE5DQhwQr5xtLBzp56Wabyo+4CMosF6Kfp+eOD/4FYpql64XVJ2W0pVLlJZxOQ== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-transform-react-jsx-source@^7.23.3": + version "7.23.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.23.3.tgz#03527006bdc8775247a78643c51d4e715fe39a3e" + integrity sha512-91RS0MDnAWDNvGC6Wio5XYkyWI39FMFO+JK9+4AlgaTH+yWwVTsw7/sn6LK0lH7c5F+TFkpv/3LfCJ1Ydwof/g== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-transform-react-jsx@^7.22.15", "@babel/plugin-transform-react-jsx@^7.22.5": + version "7.23.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.23.4.tgz#393f99185110cea87184ea47bcb4a7b0c2e39312" + integrity sha512-5xOpoPguCZCRbo/JeHlloSkTA8Bld1J/E1/kLfD1nsuiW1m8tduTA1ERCgIZokDflX/IBzKcqR3l7VlRgiIfHA== + dependencies: + "@babel/helper-annotate-as-pure" "^7.22.5" + "@babel/helper-module-imports" "^7.22.15" + "@babel/helper-plugin-utils" "^7.22.5" + "@babel/plugin-syntax-jsx" "^7.23.3" + "@babel/types" "^7.23.4" + +"@babel/plugin-transform-react-pure-annotations@^7.23.3": + version "7.23.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-pure-annotations/-/plugin-transform-react-pure-annotations-7.23.3.tgz#fabedbdb8ee40edf5da96f3ecfc6958e3783b93c" + integrity sha512-qMFdSS+TUhB7Q/3HVPnEdYJDQIk57jkntAwSuz9xfSE4n+3I+vHYCli3HoHawN1Z3RfCz/y1zXA/JXjG6cVImQ== + dependencies: + "@babel/helper-annotate-as-pure" "^7.22.5" + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-transform-regenerator@^7.23.3": + version "7.23.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.23.3.tgz#141afd4a2057298602069fce7f2dc5173e6c561c" + integrity sha512-KP+75h0KghBMcVpuKisx3XTu9Ncut8Q8TuvGO4IhY+9D5DFEckQefOuIsB/gQ2tG71lCke4NMrtIPS8pOj18BQ== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + regenerator-transform "^0.15.2" + +"@babel/plugin-transform-reserved-words@^7.23.3": + version "7.23.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.23.3.tgz#4130dcee12bd3dd5705c587947eb715da12efac8" + integrity sha512-QnNTazY54YqgGxwIexMZva9gqbPa15t/x9VS+0fsEFWplwVpXYZivtgl43Z1vMpc1bdPP2PP8siFeVcnFvA3Cg== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-transform-runtime@^7.16.4": + version "7.23.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.23.9.tgz#2c64d0680fc8e09e1dfe8fd5c646fe72abd82004" + integrity sha512-A7clW3a0aSjm3ONU9o2HAILSegJCYlEZmOhmBRReVtIpY/Z/p7yIZ+wR41Z+UipwdGuqwtID/V/dOdZXjwi9gQ== + dependencies: + "@babel/helper-module-imports" "^7.22.15" + "@babel/helper-plugin-utils" "^7.22.5" + babel-plugin-polyfill-corejs2 "^0.4.8" + babel-plugin-polyfill-corejs3 "^0.9.0" + babel-plugin-polyfill-regenerator "^0.5.5" + semver "^6.3.1" + +"@babel/plugin-transform-shorthand-properties@^7.23.3": + version "7.23.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.23.3.tgz#97d82a39b0e0c24f8a981568a8ed851745f59210" + integrity sha512-ED2fgqZLmexWiN+YNFX26fx4gh5qHDhn1O2gvEhreLW2iI63Sqm4llRLCXALKrCnbN4Jy0VcMQZl/SAzqug/jg== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-transform-spread@^7.23.3": + version "7.23.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-spread/-/plugin-transform-spread-7.23.3.tgz#41d17aacb12bde55168403c6f2d6bdca563d362c" + integrity sha512-VvfVYlrlBVu+77xVTOAoxQ6mZbnIq5FM0aGBSFEcIh03qHf+zNqA4DC/3XMUozTg7bZV3e3mZQ0i13VB6v5yUg== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + "@babel/helper-skip-transparent-expression-wrappers" "^7.22.5" + +"@babel/plugin-transform-sticky-regex@^7.23.3": + version "7.23.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.23.3.tgz#dec45588ab4a723cb579c609b294a3d1bd22ff04" + integrity sha512-HZOyN9g+rtvnOU3Yh7kSxXrKbzgrm5X4GncPY1QOquu7epga5MxKHVpYu2hvQnry/H+JjckSYRb93iNfsioAGg== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-transform-template-literals@^7.23.3": + version "7.23.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.23.3.tgz#5f0f028eb14e50b5d0f76be57f90045757539d07" + integrity sha512-Flok06AYNp7GV2oJPZZcP9vZdszev6vPBkHLwxwSpaIqx75wn6mUd3UFWsSsA0l8nXAKkyCmL/sR02m8RYGeHg== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-transform-typeof-symbol@^7.23.3": + version "7.23.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.23.3.tgz#9dfab97acc87495c0c449014eb9c547d8966bca4" + integrity sha512-4t15ViVnaFdrPC74be1gXBSMzXk3B4Us9lP7uLRQHTFpV5Dvt33pn+2MyyNxmN3VTTm3oTrZVMUmuw3oBnQ2oQ== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-transform-typescript@^7.23.3": + version "7.23.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.23.6.tgz#aa36a94e5da8d94339ae3a4e22d40ed287feb34c" + integrity sha512-6cBG5mBvUu4VUD04OHKnYzbuHNP8huDsD3EDqqpIpsswTDoqHCjLoHb6+QgsV1WsT2nipRqCPgxD3LXnEO7XfA== + dependencies: + "@babel/helper-annotate-as-pure" "^7.22.5" + "@babel/helper-create-class-features-plugin" "^7.23.6" + "@babel/helper-plugin-utils" "^7.22.5" + "@babel/plugin-syntax-typescript" "^7.23.3" + +"@babel/plugin-transform-unicode-escapes@^7.23.3": + version "7.23.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.23.3.tgz#1f66d16cab01fab98d784867d24f70c1ca65b925" + integrity sha512-OMCUx/bU6ChE3r4+ZdylEqAjaQgHAgipgW8nsCfu5pGqDcFytVd91AwRvUJSBZDz0exPGgnjoqhgRYLRjFZc9Q== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-transform-unicode-property-regex@^7.23.3": + version "7.23.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-property-regex/-/plugin-transform-unicode-property-regex-7.23.3.tgz#19e234129e5ffa7205010feec0d94c251083d7ad" + integrity sha512-KcLIm+pDZkWZQAFJ9pdfmh89EwVfmNovFBcXko8szpBeF8z68kWIPeKlmSOkT9BXJxs2C0uk+5LxoxIv62MROA== + dependencies: + "@babel/helper-create-regexp-features-plugin" "^7.22.15" + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-transform-unicode-regex@^7.23.3": + version "7.23.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.23.3.tgz#26897708d8f42654ca4ce1b73e96140fbad879dc" + integrity sha512-wMHpNA4x2cIA32b/ci3AfwNgheiva2W0WUKWTK7vBHBhDKfPsc5cFGNWm69WBqpwd86u1qwZ9PWevKqm1A3yAw== + dependencies: + "@babel/helper-create-regexp-features-plugin" "^7.22.15" + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-transform-unicode-sets-regex@^7.23.3": + version "7.23.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-sets-regex/-/plugin-transform-unicode-sets-regex-7.23.3.tgz#4fb6f0a719c2c5859d11f6b55a050cc987f3799e" + integrity sha512-W7lliA/v9bNR83Qc3q1ip9CQMZ09CcHDbHfbLRDNuAhn1Mvkr1ZNF7hPmztMQvtTGVLJ9m8IZqWsTkXOml8dbw== + dependencies: + "@babel/helper-create-regexp-features-plugin" "^7.22.15" + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/preset-env@^7.11.0", "@babel/preset-env@^7.12.1", "@babel/preset-env@^7.16.4": + version "7.23.9" + resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.23.9.tgz#beace3b7994560ed6bf78e4ae2073dff45387669" + integrity sha512-3kBGTNBBk9DQiPoXYS0g0BYlwTQYUTifqgKTjxUwEUkduRT2QOa0FPGBJ+NROQhGyYO5BuTJwGvBnqKDykac6A== + dependencies: + "@babel/compat-data" "^7.23.5" + "@babel/helper-compilation-targets" "^7.23.6" + "@babel/helper-plugin-utils" "^7.22.5" + "@babel/helper-validator-option" "^7.23.5" + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression" "^7.23.3" + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining" "^7.23.3" + "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly" "^7.23.7" + "@babel/plugin-proposal-private-property-in-object" "7.21.0-placeholder-for-preset-env.2" + "@babel/plugin-syntax-async-generators" "^7.8.4" + "@babel/plugin-syntax-class-properties" "^7.12.13" + "@babel/plugin-syntax-class-static-block" "^7.14.5" + "@babel/plugin-syntax-dynamic-import" "^7.8.3" + "@babel/plugin-syntax-export-namespace-from" "^7.8.3" + "@babel/plugin-syntax-import-assertions" "^7.23.3" + "@babel/plugin-syntax-import-attributes" "^7.23.3" + "@babel/plugin-syntax-import-meta" "^7.10.4" + "@babel/plugin-syntax-json-strings" "^7.8.3" + "@babel/plugin-syntax-logical-assignment-operators" "^7.10.4" + "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3" + "@babel/plugin-syntax-numeric-separator" "^7.10.4" + "@babel/plugin-syntax-object-rest-spread" "^7.8.3" + "@babel/plugin-syntax-optional-catch-binding" "^7.8.3" + "@babel/plugin-syntax-optional-chaining" "^7.8.3" + "@babel/plugin-syntax-private-property-in-object" "^7.14.5" + "@babel/plugin-syntax-top-level-await" "^7.14.5" + "@babel/plugin-syntax-unicode-sets-regex" "^7.18.6" + "@babel/plugin-transform-arrow-functions" "^7.23.3" + "@babel/plugin-transform-async-generator-functions" "^7.23.9" + "@babel/plugin-transform-async-to-generator" "^7.23.3" + "@babel/plugin-transform-block-scoped-functions" "^7.23.3" + "@babel/plugin-transform-block-scoping" "^7.23.4" + "@babel/plugin-transform-class-properties" "^7.23.3" + "@babel/plugin-transform-class-static-block" "^7.23.4" + "@babel/plugin-transform-classes" "^7.23.8" + "@babel/plugin-transform-computed-properties" "^7.23.3" + "@babel/plugin-transform-destructuring" "^7.23.3" + "@babel/plugin-transform-dotall-regex" "^7.23.3" + "@babel/plugin-transform-duplicate-keys" "^7.23.3" + "@babel/plugin-transform-dynamic-import" "^7.23.4" + "@babel/plugin-transform-exponentiation-operator" "^7.23.3" + "@babel/plugin-transform-export-namespace-from" "^7.23.4" + "@babel/plugin-transform-for-of" "^7.23.6" + "@babel/plugin-transform-function-name" "^7.23.3" + "@babel/plugin-transform-json-strings" "^7.23.4" + "@babel/plugin-transform-literals" "^7.23.3" + "@babel/plugin-transform-logical-assignment-operators" "^7.23.4" + "@babel/plugin-transform-member-expression-literals" "^7.23.3" + "@babel/plugin-transform-modules-amd" "^7.23.3" + "@babel/plugin-transform-modules-commonjs" "^7.23.3" + "@babel/plugin-transform-modules-systemjs" "^7.23.9" + "@babel/plugin-transform-modules-umd" "^7.23.3" + "@babel/plugin-transform-named-capturing-groups-regex" "^7.22.5" + "@babel/plugin-transform-new-target" "^7.23.3" + "@babel/plugin-transform-nullish-coalescing-operator" "^7.23.4" + "@babel/plugin-transform-numeric-separator" "^7.23.4" + "@babel/plugin-transform-object-rest-spread" "^7.23.4" + "@babel/plugin-transform-object-super" "^7.23.3" + "@babel/plugin-transform-optional-catch-binding" "^7.23.4" + "@babel/plugin-transform-optional-chaining" "^7.23.4" + "@babel/plugin-transform-parameters" "^7.23.3" + "@babel/plugin-transform-private-methods" "^7.23.3" + "@babel/plugin-transform-private-property-in-object" "^7.23.4" + "@babel/plugin-transform-property-literals" "^7.23.3" + "@babel/plugin-transform-regenerator" "^7.23.3" + "@babel/plugin-transform-reserved-words" "^7.23.3" + "@babel/plugin-transform-shorthand-properties" "^7.23.3" + "@babel/plugin-transform-spread" "^7.23.3" + "@babel/plugin-transform-sticky-regex" "^7.23.3" + "@babel/plugin-transform-template-literals" "^7.23.3" + "@babel/plugin-transform-typeof-symbol" "^7.23.3" + "@babel/plugin-transform-unicode-escapes" "^7.23.3" + "@babel/plugin-transform-unicode-property-regex" "^7.23.3" + "@babel/plugin-transform-unicode-regex" "^7.23.3" + "@babel/plugin-transform-unicode-sets-regex" "^7.23.3" + "@babel/preset-modules" "0.1.6-no-external-plugins" + babel-plugin-polyfill-corejs2 "^0.4.8" + babel-plugin-polyfill-corejs3 "^0.9.0" + babel-plugin-polyfill-regenerator "^0.5.5" + core-js-compat "^3.31.0" + semver "^6.3.1" + +"@babel/preset-modules@0.1.6-no-external-plugins": + version "0.1.6-no-external-plugins" + resolved "https://registry.yarnpkg.com/@babel/preset-modules/-/preset-modules-0.1.6-no-external-plugins.tgz#ccb88a2c49c817236861fee7826080573b8a923a" + integrity sha512-HrcgcIESLm9aIR842yhJ5RWan/gebQUJ6E/E5+rf0y9o6oj7w0Br+sWuL6kEQ/o/AdfvR1Je9jG18/gnpwjEyA== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/types" "^7.4.4" + esutils "^2.0.2" + +"@babel/preset-react@^7.12.5", "@babel/preset-react@^7.16.0": + version "7.23.3" + resolved "https://registry.yarnpkg.com/@babel/preset-react/-/preset-react-7.23.3.tgz#f73ca07e7590f977db07eb54dbe46538cc015709" + integrity sha512-tbkHOS9axH6Ysf2OUEqoSZ6T3Fa2SrNH6WTWSPBboxKzdxNc9qOICeLXkNG0ZEwbQ1HY8liwOce4aN/Ceyuq6w== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + "@babel/helper-validator-option" "^7.22.15" + "@babel/plugin-transform-react-display-name" "^7.23.3" + "@babel/plugin-transform-react-jsx" "^7.22.15" + "@babel/plugin-transform-react-jsx-development" "^7.22.5" + "@babel/plugin-transform-react-pure-annotations" "^7.23.3" + +"@babel/preset-typescript@^7.16.0": + version "7.23.3" + resolved "https://registry.yarnpkg.com/@babel/preset-typescript/-/preset-typescript-7.23.3.tgz#14534b34ed5b6d435aa05f1ae1c5e7adcc01d913" + integrity sha512-17oIGVlqz6CchO9RFYn5U6ZpWRZIngayYCtrPRSgANSwC2V1Jb+iP74nVxzzXJte8b8BYxrL1yY96xfhTBrNNQ== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + "@babel/helper-validator-option" "^7.22.15" + "@babel/plugin-syntax-jsx" "^7.23.3" + "@babel/plugin-transform-modules-commonjs" "^7.23.3" + "@babel/plugin-transform-typescript" "^7.23.3" + +"@babel/regjsgen@^0.8.0": + version "0.8.0" + resolved "https://registry.yarnpkg.com/@babel/regjsgen/-/regjsgen-0.8.0.tgz#f0ba69b075e1f05fb2825b7fad991e7adbb18310" + integrity sha512-x/rqGMdzj+fWZvCOYForTghzbtqPDZ5gPwaoNGHdgDfF2QA/XZbCBp4Moo5scrkAMPhB7z26XM/AaHuIJdgauA== + +"@babel/runtime@^7.11.2", "@babel/runtime@^7.12.5", "@babel/runtime@^7.16.3", "@babel/runtime@^7.18.3", "@babel/runtime@^7.19.0", "@babel/runtime@^7.22.5", "@babel/runtime@^7.23.2", "@babel/runtime@^7.23.8", "@babel/runtime@^7.5.5", "@babel/runtime@^7.8.4", "@babel/runtime@^7.8.7", "@babel/runtime@^7.9.2": + version "7.23.9" + resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.23.9.tgz#47791a15e4603bb5f905bc0753801cf21d6345f7" + integrity sha512-0CX6F+BI2s9dkUqr08KFrAIZgNFj75rdBU/DjCyYLIaV/quFjkk6T+EJ2LkZHyZTbEV4L5p97mNkUsHl2wLFAw== + dependencies: + regenerator-runtime "^0.14.0" + +"@babel/template@^7.22.15", "@babel/template@^7.23.9", "@babel/template@^7.3.3": + version "7.23.9" + resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.23.9.tgz#f881d0487cba2828d3259dcb9ef5005a9731011a" + integrity sha512-+xrD2BWLpvHKNmX2QbpdpsBaWnRxahMwJjO+KZk2JOElj5nSmKezyS1B4u+QbHMTX69t4ukm6hh9lsYQ7GHCKA== + dependencies: + "@babel/code-frame" "^7.23.5" + "@babel/parser" "^7.23.9" + "@babel/types" "^7.23.9" + +"@babel/traverse@^7.23.9", "@babel/traverse@^7.7.2": + version "7.23.9" + resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.23.9.tgz#2f9d6aead6b564669394c5ce0f9302bb65b9d950" + integrity sha512-I/4UJ9vs90OkBtY6iiiTORVMyIhJ4kAVmsKo9KFc8UOxMeUfi2hvtIBsET5u9GizXE6/GFSuKCTNfgCswuEjRg== + dependencies: + "@babel/code-frame" "^7.23.5" + "@babel/generator" "^7.23.6" + "@babel/helper-environment-visitor" "^7.22.20" + "@babel/helper-function-name" "^7.23.0" + "@babel/helper-hoist-variables" "^7.22.5" + "@babel/helper-split-export-declaration" "^7.22.6" + "@babel/parser" "^7.23.9" + "@babel/types" "^7.23.9" + debug "^4.3.1" + globals "^11.1.0" + +"@babel/types@^7.0.0", "@babel/types@^7.12.6", "@babel/types@^7.20.7", "@babel/types@^7.22.15", "@babel/types@^7.22.19", "@babel/types@^7.22.5", "@babel/types@^7.23.0", "@babel/types@^7.23.4", "@babel/types@^7.23.6", "@babel/types@^7.23.9", "@babel/types@^7.3.3", "@babel/types@^7.4.4": + version "7.23.9" + resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.23.9.tgz#1dd7b59a9a2b5c87f8b41e52770b5ecbf492e002" + integrity sha512-dQjSq/7HaSjRM43FFGnv5keM2HsxpmyV1PfaSVm0nzzjwwTmjOe6J4bC8e3+pTEIgHaHj+1ZlLThRJ2auc/w1Q== + dependencies: + "@babel/helper-string-parser" "^7.23.4" + "@babel/helper-validator-identifier" "^7.22.20" + to-fast-properties "^2.0.0" + +"@bcoe/v8-coverage@^0.2.3": + version "0.2.3" + resolved "https://registry.yarnpkg.com/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz#75a2e8b51cb758a7553d6804a5932d7aace75c39" + integrity sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw== + +"@brightlayer-ui/colors@^3.0.0", "@brightlayer-ui/colors@^3.0.1", "@brightlayer-ui/colors@^3.1.1": + version "3.1.1" + resolved "https://registry.yarnpkg.com/@brightlayer-ui/colors/-/colors-3.1.1.tgz#7bc86498e30172c410ba4c3237149b16a2eed4c6" + integrity sha512-fV10E5JDuVGDQ0gCY3pEfDwUo1+lvDFC5pmOAAGpN7YDramS6ggUpJ/LmYavKAudw7FNcaJnPi7tsQWJjvv/7w== + dependencies: + "@brightlayer-ui/types" "^2.0.0" + +"@brightlayer-ui/eslint-config@^3.0.1": + version "3.0.1" + resolved "https://registry.yarnpkg.com/@brightlayer-ui/eslint-config/-/eslint-config-3.0.1.tgz#a2c0332366375a0ed33d98a4c366f40c0d1e907b" + integrity sha512-Oysfov3klmqidenOo8+ZFwfxEmyBDpKaB58pi/4dy5aJLMb4vDUfatf2rFrKmYJI9BOAXoIrBuSA+MKYCIp3AQ== + dependencies: + "@typescript-eslint/parser" "^5.9.0" + eslint-config-prettier ">= 8.0.0" + optionalDependencies: + eslint-plugin-react "^7.28.0" + +"@brightlayer-ui/icons-mui@^3.3.0": + version "3.5.0" + resolved "https://registry.yarnpkg.com/@brightlayer-ui/icons-mui/-/icons-mui-3.5.0.tgz#f2eaab9328180aab28b8b6157bd8bdfb72783d60" + integrity sha512-mGN7f+d6Ia40JaQ0faqFMRi5sWWLOmquOEzR26n3jyz5Qhs4Ufs6Nnq6DZGlyABz2hDq2eSQf9cZlgauu4tBxQ== + +"@brightlayer-ui/prettier-config@^1.0.3": + version "1.0.3" + resolved "https://registry.yarnpkg.com/@brightlayer-ui/prettier-config/-/prettier-config-1.0.3.tgz#e40a7ae7435c6fd5118acbf249080e0aa81e93af" + integrity sha512-EYm3+V7Qd+oYEF+8FadsXAZqXryEHHbGnrV1BMp9selhABjceqUqXPVE4Sn3SKWQdBNJ3En2A3EzgrzRbvRTaw== + +"@brightlayer-ui/react-auth-workflow@^4.0.2": + version "4.0.2" + resolved "https://registry.yarnpkg.com/@brightlayer-ui/react-auth-workflow/-/react-auth-workflow-4.0.2.tgz#0b22100776b8facbb70d762d7d0135cdddeb6907" + integrity sha512-JzdRLGTCeAjN3J53V0vPQEeZbnwNJCJcA+6LwA2vNR2lATMSrU4vAykIRtiJm/0qcMJEuSbwTrOlfqFyY9nV7w== + dependencies: + dompurify "^2.2.9" + i18next-browser-languagedetector "^6.1.0" + optionalDependencies: + react-router-dom "^6.8.0" + +"@brightlayer-ui/react-components@^6.1.2": + version "6.3.0" + resolved "https://registry.yarnpkg.com/@brightlayer-ui/react-components/-/react-components-6.3.0.tgz#59d03ac9f0dbbb9b56f3e639068d6463c8c70738" + integrity sha512-EQc2PfQ/jxMUzppA4Wykxp1jfN6VCvJveAGvGluCbuXf6tPrFeeAGsUfunA/IcqUnD9whidPw+E7iGaI1+dhTQ== + dependencies: + "@brightlayer-ui/colors" "^3.1.1" + "@emotion/css" "^11.10.5" + "@seznam/compose-react-refs" "^1.0.6" + color "^4.2.3" + +"@brightlayer-ui/react-themes@^7.1.0": + version "7.2.0" + resolved "https://registry.yarnpkg.com/@brightlayer-ui/react-themes/-/react-themes-7.2.0.tgz#03985faba940dc3d94e2eb0d22a0e8f6a7a2b738" + integrity sha512-maNTWF4gck4nTUnh86p/7wFn6qQrdNgKYv+/XVGBR/fYceUcjeik5yFdJ9AlHzOFBp+WrsqnG+qr7yC6Q1iKQQ== + dependencies: + "@brightlayer-ui/colors" "^3.0.0" + "@fontsource/open-sans" "^5.0.3" + color "^4.2.3" + +"@brightlayer-ui/types@^2.0.0": + version "2.0.0" + resolved "https://registry.yarnpkg.com/@brightlayer-ui/types/-/types-2.0.0.tgz#d8adc0cdb96c164943adbad6e74043128a8b4112" + integrity sha512-DTCVwND6YC9qrkQl7pkFlN6QxDReJHtjuAiFU9HkXJN368vlw+fzHQ5/j4sB1sZl2eNwOgccv5ecl2XrlolOCw== + +"@csstools/normalize.css@*": + version "12.1.1" + resolved "https://registry.yarnpkg.com/@csstools/normalize.css/-/normalize.css-12.1.1.tgz#f0ad221b7280f3fc814689786fd9ee092776ef8f" + integrity sha512-YAYeJ+Xqh7fUou1d1j9XHl44BmsuThiTr4iNrgCQ3J27IbhXsxXDGZ1cXv8Qvs99d4rBbLiSKy3+WZiet32PcQ== + +"@csstools/postcss-cascade-layers@^1.1.1": + version "1.1.1" + resolved "https://registry.yarnpkg.com/@csstools/postcss-cascade-layers/-/postcss-cascade-layers-1.1.1.tgz#8a997edf97d34071dd2e37ea6022447dd9e795ad" + integrity sha512-+KdYrpKC5TgomQr2DlZF4lDEpHcoxnj5IGddYYfBWJAKfj1JtuHUIqMa+E1pJJ+z3kvDViWMqyqPlG4Ja7amQA== + dependencies: + "@csstools/selector-specificity" "^2.0.2" + postcss-selector-parser "^6.0.10" + +"@csstools/postcss-color-function@^1.1.1": + version "1.1.1" + resolved "https://registry.yarnpkg.com/@csstools/postcss-color-function/-/postcss-color-function-1.1.1.tgz#2bd36ab34f82d0497cfacdc9b18d34b5e6f64b6b" + integrity sha512-Bc0f62WmHdtRDjf5f3e2STwRAl89N2CLb+9iAwzrv4L2hncrbDwnQD9PCq0gtAt7pOI2leIV08HIBUd4jxD8cw== + dependencies: + "@csstools/postcss-progressive-custom-properties" "^1.1.0" + postcss-value-parser "^4.2.0" + +"@csstools/postcss-font-format-keywords@^1.0.1": + version "1.0.1" + resolved "https://registry.yarnpkg.com/@csstools/postcss-font-format-keywords/-/postcss-font-format-keywords-1.0.1.tgz#677b34e9e88ae997a67283311657973150e8b16a" + integrity sha512-ZgrlzuUAjXIOc2JueK0X5sZDjCtgimVp/O5CEqTcs5ShWBa6smhWYbS0x5cVc/+rycTDbjjzoP0KTDnUneZGOg== + dependencies: + postcss-value-parser "^4.2.0" + +"@csstools/postcss-hwb-function@^1.0.2": + version "1.0.2" + resolved "https://registry.yarnpkg.com/@csstools/postcss-hwb-function/-/postcss-hwb-function-1.0.2.tgz#ab54a9fce0ac102c754854769962f2422ae8aa8b" + integrity sha512-YHdEru4o3Rsbjmu6vHy4UKOXZD+Rn2zmkAmLRfPet6+Jz4Ojw8cbWxe1n42VaXQhD3CQUXXTooIy8OkVbUcL+w== + dependencies: + postcss-value-parser "^4.2.0" + +"@csstools/postcss-ic-unit@^1.0.1": + version "1.0.1" + resolved "https://registry.yarnpkg.com/@csstools/postcss-ic-unit/-/postcss-ic-unit-1.0.1.tgz#28237d812a124d1a16a5acc5c3832b040b303e58" + integrity sha512-Ot1rcwRAaRHNKC9tAqoqNZhjdYBzKk1POgWfhN4uCOE47ebGcLRqXjKkApVDpjifL6u2/55ekkpnFcp+s/OZUw== + dependencies: + "@csstools/postcss-progressive-custom-properties" "^1.1.0" + postcss-value-parser "^4.2.0" + +"@csstools/postcss-is-pseudo-class@^2.0.7": + version "2.0.7" + resolved "https://registry.yarnpkg.com/@csstools/postcss-is-pseudo-class/-/postcss-is-pseudo-class-2.0.7.tgz#846ae6c0d5a1eaa878fce352c544f9c295509cd1" + integrity sha512-7JPeVVZHd+jxYdULl87lvjgvWldYu+Bc62s9vD/ED6/QTGjy0jy0US/f6BG53sVMTBJ1lzKZFpYmofBN9eaRiA== + dependencies: + "@csstools/selector-specificity" "^2.0.0" + postcss-selector-parser "^6.0.10" + +"@csstools/postcss-nested-calc@^1.0.0": + version "1.0.0" + resolved "https://registry.yarnpkg.com/@csstools/postcss-nested-calc/-/postcss-nested-calc-1.0.0.tgz#d7e9d1d0d3d15cf5ac891b16028af2a1044d0c26" + integrity sha512-JCsQsw1wjYwv1bJmgjKSoZNvf7R6+wuHDAbi5f/7MbFhl2d/+v+TvBTU4BJH3G1X1H87dHl0mh6TfYogbT/dJQ== + dependencies: + postcss-value-parser "^4.2.0" + +"@csstools/postcss-normalize-display-values@^1.0.1": + version "1.0.1" + resolved "https://registry.yarnpkg.com/@csstools/postcss-normalize-display-values/-/postcss-normalize-display-values-1.0.1.tgz#15da54a36e867b3ac5163ee12c1d7f82d4d612c3" + integrity sha512-jcOanIbv55OFKQ3sYeFD/T0Ti7AMXc9nM1hZWu8m/2722gOTxFg7xYu4RDLJLeZmPUVQlGzo4jhzvTUq3x4ZUw== + dependencies: + postcss-value-parser "^4.2.0" + +"@csstools/postcss-oklab-function@^1.1.1": + version "1.1.1" + resolved "https://registry.yarnpkg.com/@csstools/postcss-oklab-function/-/postcss-oklab-function-1.1.1.tgz#88cee0fbc8d6df27079ebd2fa016ee261eecf844" + integrity sha512-nJpJgsdA3dA9y5pgyb/UfEzE7W5Ka7u0CX0/HIMVBNWzWemdcTH3XwANECU6anWv/ao4vVNLTMxhiPNZsTK6iA== + dependencies: + "@csstools/postcss-progressive-custom-properties" "^1.1.0" + postcss-value-parser "^4.2.0" + +"@csstools/postcss-progressive-custom-properties@^1.1.0", "@csstools/postcss-progressive-custom-properties@^1.3.0": + version "1.3.0" + resolved "https://registry.yarnpkg.com/@csstools/postcss-progressive-custom-properties/-/postcss-progressive-custom-properties-1.3.0.tgz#542292558384361776b45c85226b9a3a34f276fa" + integrity sha512-ASA9W1aIy5ygskZYuWams4BzafD12ULvSypmaLJT2jvQ8G0M3I8PRQhC0h7mG0Z3LI05+agZjqSR9+K9yaQQjA== + dependencies: + postcss-value-parser "^4.2.0" + +"@csstools/postcss-stepped-value-functions@^1.0.1": + version "1.0.1" + resolved "https://registry.yarnpkg.com/@csstools/postcss-stepped-value-functions/-/postcss-stepped-value-functions-1.0.1.tgz#f8772c3681cc2befed695e2b0b1d68e22f08c4f4" + integrity sha512-dz0LNoo3ijpTOQqEJLY8nyaapl6umbmDcgj4AD0lgVQ572b2eqA1iGZYTTWhrcrHztWDDRAX2DGYyw2VBjvCvQ== + dependencies: + postcss-value-parser "^4.2.0" + +"@csstools/postcss-text-decoration-shorthand@^1.0.0": + version "1.0.0" + resolved "https://registry.yarnpkg.com/@csstools/postcss-text-decoration-shorthand/-/postcss-text-decoration-shorthand-1.0.0.tgz#ea96cfbc87d921eca914d3ad29340d9bcc4c953f" + integrity sha512-c1XwKJ2eMIWrzQenN0XbcfzckOLLJiczqy+YvfGmzoVXd7pT9FfObiSEfzs84bpE/VqfpEuAZ9tCRbZkZxxbdw== + dependencies: + postcss-value-parser "^4.2.0" + +"@csstools/postcss-trigonometric-functions@^1.0.2": + version "1.0.2" + resolved "https://registry.yarnpkg.com/@csstools/postcss-trigonometric-functions/-/postcss-trigonometric-functions-1.0.2.tgz#94d3e4774c36d35dcdc88ce091336cb770d32756" + integrity sha512-woKaLO///4bb+zZC2s80l+7cm07M7268MsyG3M0ActXXEFi6SuhvriQYcb58iiKGbjwwIU7n45iRLEHypB47Og== + dependencies: + postcss-value-parser "^4.2.0" + +"@csstools/postcss-unset-value@^1.0.2": + version "1.0.2" + resolved "https://registry.yarnpkg.com/@csstools/postcss-unset-value/-/postcss-unset-value-1.0.2.tgz#c99bb70e2cdc7312948d1eb41df2412330b81f77" + integrity sha512-c8J4roPBILnelAsdLr4XOAR/GsTm0GJi4XpcfvoWk3U6KiTCqiFYc63KhRMQQX35jYMp4Ao8Ij9+IZRgMfJp1g== + +"@csstools/selector-specificity@^2.0.0", "@csstools/selector-specificity@^2.0.2": + version "2.2.0" + resolved "https://registry.yarnpkg.com/@csstools/selector-specificity/-/selector-specificity-2.2.0.tgz#2cbcf822bf3764c9658c4d2e568bd0c0cb748016" + integrity sha512-+OJ9konv95ClSTOJCmMZqpd5+YGsB2S+x6w3E1oaM8UuR5j8nTNHYSz8c9BEPGDOCMQYIEEGlVPj/VY64iTbGw== + +"@emotion/babel-plugin@^11.11.0": + version "11.11.0" + resolved "https://registry.yarnpkg.com/@emotion/babel-plugin/-/babel-plugin-11.11.0.tgz#c2d872b6a7767a9d176d007f5b31f7d504bb5d6c" + integrity sha512-m4HEDZleaaCH+XgDDsPF15Ht6wTLsgDTeR3WYj9Q/k76JtWhrJjcP4+/XlG8LGT/Rol9qUfOIztXeA84ATpqPQ== + dependencies: + "@babel/helper-module-imports" "^7.16.7" + "@babel/runtime" "^7.18.3" + "@emotion/hash" "^0.9.1" + "@emotion/memoize" "^0.8.1" + "@emotion/serialize" "^1.1.2" + babel-plugin-macros "^3.1.0" + convert-source-map "^1.5.0" + escape-string-regexp "^4.0.0" + find-root "^1.1.0" + source-map "^0.5.7" + stylis "4.2.0" + +"@emotion/cache@^11.11.0": + version "11.11.0" + resolved "https://registry.yarnpkg.com/@emotion/cache/-/cache-11.11.0.tgz#809b33ee6b1cb1a625fef7a45bc568ccd9b8f3ff" + integrity sha512-P34z9ssTCBi3e9EI1ZsWpNHcfY1r09ZO0rZbRO2ob3ZQMnFI35jB536qoXbkdesr5EUhYi22anuEJuyxifaqAQ== + dependencies: + "@emotion/memoize" "^0.8.1" + "@emotion/sheet" "^1.2.2" + "@emotion/utils" "^1.2.1" + "@emotion/weak-memoize" "^0.3.1" + stylis "4.2.0" + +"@emotion/css@^11.10.5", "@emotion/css@^11.11.2": + version "11.11.2" + resolved "https://registry.yarnpkg.com/@emotion/css/-/css-11.11.2.tgz#e5fa081d0c6e335352e1bc2b05953b61832dca5a" + integrity sha512-VJxe1ucoMYMS7DkiMdC2T7PWNbrEI0a39YRiyDvK2qq4lXwjRbVP/z4lpG+odCsRzadlR+1ywwrTzhdm5HNdew== + dependencies: + "@emotion/babel-plugin" "^11.11.0" + "@emotion/cache" "^11.11.0" + "@emotion/serialize" "^1.1.2" + "@emotion/sheet" "^1.2.2" + "@emotion/utils" "^1.2.1" + +"@emotion/hash@^0.9.1": + version "0.9.1" + resolved "https://registry.yarnpkg.com/@emotion/hash/-/hash-0.9.1.tgz#4ffb0055f7ef676ebc3a5a91fb621393294e2f43" + integrity sha512-gJB6HLm5rYwSLI6PQa+X1t5CFGrv1J1TWG+sOyMCeKz2ojaj6Fnl/rZEspogG+cvqbt4AE/2eIyD2QfLKTBNlQ== + +"@emotion/is-prop-valid@^1.2.1": + version "1.2.1" + resolved "https://registry.yarnpkg.com/@emotion/is-prop-valid/-/is-prop-valid-1.2.1.tgz#23116cf1ed18bfeac910ec6436561ecb1a3885cc" + integrity sha512-61Mf7Ufx4aDxx1xlDeOm8aFFigGHE4z+0sKCa+IHCeZKiyP9RLD0Mmx7m8b9/Cf37f7NAvQOOJAbQQGVr5uERw== + dependencies: + "@emotion/memoize" "^0.8.1" + +"@emotion/memoize@^0.8.1": + version "0.8.1" + resolved "https://registry.yarnpkg.com/@emotion/memoize/-/memoize-0.8.1.tgz#c1ddb040429c6d21d38cc945fe75c818cfb68e17" + integrity sha512-W2P2c/VRW1/1tLox0mVUalvnWXxavmv/Oum2aPsRcoDJuob75FC3Y8FbpfLwUegRcxINtGUMPq0tFCvYNTBXNA== + +"@emotion/react@^11.7.1": + version "11.11.3" + resolved "https://registry.yarnpkg.com/@emotion/react/-/react-11.11.3.tgz#96b855dc40a2a55f52a72f518a41db4f69c31a25" + integrity sha512-Cnn0kuq4DoONOMcnoVsTOR8E+AdnKFf//6kUWc4LCdnxj31pZWn7rIULd6Y7/Js1PiPHzn7SKCM9vB/jBni8eA== + dependencies: + "@babel/runtime" "^7.18.3" + "@emotion/babel-plugin" "^11.11.0" + "@emotion/cache" "^11.11.0" + "@emotion/serialize" "^1.1.3" + "@emotion/use-insertion-effect-with-fallbacks" "^1.0.1" + "@emotion/utils" "^1.2.1" + "@emotion/weak-memoize" "^0.3.1" + hoist-non-react-statics "^3.3.1" + +"@emotion/serialize@^1.1.2", "@emotion/serialize@^1.1.3": + version "1.1.3" + resolved "https://registry.yarnpkg.com/@emotion/serialize/-/serialize-1.1.3.tgz#84b77bfcfe3b7bb47d326602f640ccfcacd5ffb0" + integrity sha512-iD4D6QVZFDhcbH0RAG1uVu1CwVLMWUkCvAqqlewO/rxf8+87yIBAlt4+AxMiiKPLs5hFc0owNk/sLLAOROw3cA== + dependencies: + "@emotion/hash" "^0.9.1" + "@emotion/memoize" "^0.8.1" + "@emotion/unitless" "^0.8.1" + "@emotion/utils" "^1.2.1" + csstype "^3.0.2" + +"@emotion/sheet@^1.2.2": + version "1.2.2" + resolved "https://registry.yarnpkg.com/@emotion/sheet/-/sheet-1.2.2.tgz#d58e788ee27267a14342303e1abb3d508b6d0fec" + integrity sha512-0QBtGvaqtWi+nx6doRwDdBIzhNdZrXUppvTM4dtZZWEGTXL/XE/yJxLMGlDT1Gt+UHH5IX1n+jkXyytE/av7OA== + +"@emotion/styled@^11.10.8": + version "11.11.0" + resolved "https://registry.yarnpkg.com/@emotion/styled/-/styled-11.11.0.tgz#26b75e1b5a1b7a629d7c0a8b708fbf5a9cdce346" + integrity sha512-hM5Nnvu9P3midq5aaXj4I+lnSfNi7Pmd4EWk1fOZ3pxookaQTNew6bp4JaCBYM4HVFZF9g7UjJmsUmC2JlxOng== + dependencies: + "@babel/runtime" "^7.18.3" + "@emotion/babel-plugin" "^11.11.0" + "@emotion/is-prop-valid" "^1.2.1" + "@emotion/serialize" "^1.1.2" + "@emotion/use-insertion-effect-with-fallbacks" "^1.0.1" + "@emotion/utils" "^1.2.1" + +"@emotion/unitless@^0.8.1": + version "0.8.1" + resolved "https://registry.yarnpkg.com/@emotion/unitless/-/unitless-0.8.1.tgz#182b5a4704ef8ad91bde93f7a860a88fd92c79a3" + integrity sha512-KOEGMu6dmJZtpadb476IsZBclKvILjopjUii3V+7MnXIQCYh8W3NgNcgwo21n9LXZX6EDIKvqfjYxXebDwxKmQ== + +"@emotion/use-insertion-effect-with-fallbacks@^1.0.1": + version "1.0.1" + resolved "https://registry.yarnpkg.com/@emotion/use-insertion-effect-with-fallbacks/-/use-insertion-effect-with-fallbacks-1.0.1.tgz#08de79f54eb3406f9daaf77c76e35313da963963" + integrity sha512-jT/qyKZ9rzLErtrjGgdkMBn2OP8wl0G3sQlBb3YPryvKHsjvINUhVaPFfP+fpBcOkmrVOVEEHQFJ7nbj2TH2gw== + +"@emotion/utils@^1.2.1": + version "1.2.1" + resolved "https://registry.yarnpkg.com/@emotion/utils/-/utils-1.2.1.tgz#bbab58465738d31ae4cb3dbb6fc00a5991f755e4" + integrity sha512-Y2tGf3I+XVnajdItskUCn6LX+VUDmP6lTL4fcqsXAv43dnlbZiuW4MWQW38rW/BVWSE7Q/7+XQocmpnRYILUmg== + +"@emotion/weak-memoize@^0.3.1": + version "0.3.1" + resolved "https://registry.yarnpkg.com/@emotion/weak-memoize/-/weak-memoize-0.3.1.tgz#d0fce5d07b0620caa282b5131c297bb60f9d87e6" + integrity sha512-EsBwpc7hBUJWAsNPBmJy4hxWx12v6bshQsldrVmjxJoc3isbxhOrF2IcCpaXxfvq03NwkI7sbsOLXbYuqF/8Ww== + +"@esbuild/aix-ppc64@0.19.12": + version "0.19.12" + resolved "https://registry.yarnpkg.com/@esbuild/aix-ppc64/-/aix-ppc64-0.19.12.tgz#d1bc06aedb6936b3b6d313bf809a5a40387d2b7f" + integrity sha512-bmoCYyWdEL3wDQIVbcyzRyeKLgk2WtWLTWz1ZIAZF/EGbNOwSA6ew3PftJ1PqMiOOGu0OyFMzG53L0zqIpPeNA== + +"@esbuild/android-arm64@0.19.12": + version "0.19.12" + resolved "https://registry.yarnpkg.com/@esbuild/android-arm64/-/android-arm64-0.19.12.tgz#7ad65a36cfdb7e0d429c353e00f680d737c2aed4" + integrity sha512-P0UVNGIienjZv3f5zq0DP3Nt2IE/3plFzuaS96vihvD0Hd6H/q4WXUGpCxD/E8YrSXfNyRPbpTq+T8ZQioSuPA== + +"@esbuild/android-arm@0.19.12": + version "0.19.12" + resolved "https://registry.yarnpkg.com/@esbuild/android-arm/-/android-arm-0.19.12.tgz#b0c26536f37776162ca8bde25e42040c203f2824" + integrity sha512-qg/Lj1mu3CdQlDEEiWrlC4eaPZ1KztwGJ9B6J+/6G+/4ewxJg7gqj8eVYWvao1bXrqGiW2rsBZFSX3q2lcW05w== + +"@esbuild/android-x64@0.19.12": + version "0.19.12" + resolved "https://registry.yarnpkg.com/@esbuild/android-x64/-/android-x64-0.19.12.tgz#cb13e2211282012194d89bf3bfe7721273473b3d" + integrity sha512-3k7ZoUW6Q6YqhdhIaq/WZ7HwBpnFBlW905Fa4s4qWJyiNOgT1dOqDiVAQFwBH7gBRZr17gLrlFCRzF6jFh7Kew== + +"@esbuild/darwin-arm64@0.19.12": + version "0.19.12" + resolved "https://registry.yarnpkg.com/@esbuild/darwin-arm64/-/darwin-arm64-0.19.12.tgz#cbee41e988020d4b516e9d9e44dd29200996275e" + integrity sha512-B6IeSgZgtEzGC42jsI+YYu9Z3HKRxp8ZT3cqhvliEHovq8HSX2YX8lNocDn79gCKJXOSaEot9MVYky7AKjCs8g== + +"@esbuild/darwin-x64@0.19.12": + version "0.19.12" + resolved "https://registry.yarnpkg.com/@esbuild/darwin-x64/-/darwin-x64-0.19.12.tgz#e37d9633246d52aecf491ee916ece709f9d5f4cd" + integrity sha512-hKoVkKzFiToTgn+41qGhsUJXFlIjxI/jSYeZf3ugemDYZldIXIxhvwN6erJGlX4t5h417iFuheZ7l+YVn05N3A== + +"@esbuild/freebsd-arm64@0.19.12": + version "0.19.12" + resolved "https://registry.yarnpkg.com/@esbuild/freebsd-arm64/-/freebsd-arm64-0.19.12.tgz#1ee4d8b682ed363b08af74d1ea2b2b4dbba76487" + integrity sha512-4aRvFIXmwAcDBw9AueDQ2YnGmz5L6obe5kmPT8Vd+/+x/JMVKCgdcRwH6APrbpNXsPz+K653Qg8HB/oXvXVukA== + +"@esbuild/freebsd-x64@0.19.12": + version "0.19.12" + resolved "https://registry.yarnpkg.com/@esbuild/freebsd-x64/-/freebsd-x64-0.19.12.tgz#37a693553d42ff77cd7126764b535fb6cc28a11c" + integrity sha512-EYoXZ4d8xtBoVN7CEwWY2IN4ho76xjYXqSXMNccFSx2lgqOG/1TBPW0yPx1bJZk94qu3tX0fycJeeQsKovA8gg== + +"@esbuild/linux-arm64@0.19.12": + version "0.19.12" + resolved "https://registry.yarnpkg.com/@esbuild/linux-arm64/-/linux-arm64-0.19.12.tgz#be9b145985ec6c57470e0e051d887b09dddb2d4b" + integrity sha512-EoTjyYyLuVPfdPLsGVVVC8a0p1BFFvtpQDB/YLEhaXyf/5bczaGeN15QkR+O4S5LeJ92Tqotve7i1jn35qwvdA== + +"@esbuild/linux-arm@0.19.12": + version "0.19.12" + resolved "https://registry.yarnpkg.com/@esbuild/linux-arm/-/linux-arm-0.19.12.tgz#207ecd982a8db95f7b5279207d0ff2331acf5eef" + integrity sha512-J5jPms//KhSNv+LO1S1TX1UWp1ucM6N6XuL6ITdKWElCu8wXP72l9MM0zDTzzeikVyqFE6U8YAV9/tFyj0ti+w== + +"@esbuild/linux-ia32@0.19.12": + version "0.19.12" + resolved "https://registry.yarnpkg.com/@esbuild/linux-ia32/-/linux-ia32-0.19.12.tgz#d0d86b5ca1562523dc284a6723293a52d5860601" + integrity sha512-Thsa42rrP1+UIGaWz47uydHSBOgTUnwBwNq59khgIwktK6x60Hivfbux9iNR0eHCHzOLjLMLfUMLCypBkZXMHA== + +"@esbuild/linux-loong64@0.19.12": + version "0.19.12" + resolved "https://registry.yarnpkg.com/@esbuild/linux-loong64/-/linux-loong64-0.19.12.tgz#9a37f87fec4b8408e682b528391fa22afd952299" + integrity sha512-LiXdXA0s3IqRRjm6rV6XaWATScKAXjI4R4LoDlvO7+yQqFdlr1Bax62sRwkVvRIrwXxvtYEHHI4dm50jAXkuAA== + +"@esbuild/linux-mips64el@0.19.12": + version "0.19.12" + resolved "https://registry.yarnpkg.com/@esbuild/linux-mips64el/-/linux-mips64el-0.19.12.tgz#4ddebd4e6eeba20b509d8e74c8e30d8ace0b89ec" + integrity sha512-fEnAuj5VGTanfJ07ff0gOA6IPsvrVHLVb6Lyd1g2/ed67oU1eFzL0r9WL7ZzscD+/N6i3dWumGE1Un4f7Amf+w== + +"@esbuild/linux-ppc64@0.19.12": + version "0.19.12" + resolved "https://registry.yarnpkg.com/@esbuild/linux-ppc64/-/linux-ppc64-0.19.12.tgz#adb67dadb73656849f63cd522f5ecb351dd8dee8" + integrity sha512-nYJA2/QPimDQOh1rKWedNOe3Gfc8PabU7HT3iXWtNUbRzXS9+vgB0Fjaqr//XNbd82mCxHzik2qotuI89cfixg== + +"@esbuild/linux-riscv64@0.19.12": + version "0.19.12" + resolved "https://registry.yarnpkg.com/@esbuild/linux-riscv64/-/linux-riscv64-0.19.12.tgz#11bc0698bf0a2abf8727f1c7ace2112612c15adf" + integrity sha512-2MueBrlPQCw5dVJJpQdUYgeqIzDQgw3QtiAHUC4RBz9FXPrskyyU3VI1hw7C0BSKB9OduwSJ79FTCqtGMWqJHg== + +"@esbuild/linux-s390x@0.19.12": + version "0.19.12" + resolved "https://registry.yarnpkg.com/@esbuild/linux-s390x/-/linux-s390x-0.19.12.tgz#e86fb8ffba7c5c92ba91fc3b27ed5a70196c3cc8" + integrity sha512-+Pil1Nv3Umes4m3AZKqA2anfhJiVmNCYkPchwFJNEJN5QxmTs1uzyy4TvmDrCRNT2ApwSari7ZIgrPeUx4UZDg== + +"@esbuild/linux-x64@0.19.12": + version "0.19.12" + resolved "https://registry.yarnpkg.com/@esbuild/linux-x64/-/linux-x64-0.19.12.tgz#5f37cfdc705aea687dfe5dfbec086a05acfe9c78" + integrity sha512-B71g1QpxfwBvNrfyJdVDexenDIt1CiDN1TIXLbhOw0KhJzE78KIFGX6OJ9MrtC0oOqMWf+0xop4qEU8JrJTwCg== + +"@esbuild/netbsd-x64@0.19.12": + version "0.19.12" + resolved "https://registry.yarnpkg.com/@esbuild/netbsd-x64/-/netbsd-x64-0.19.12.tgz#29da566a75324e0d0dd7e47519ba2f7ef168657b" + integrity sha512-3ltjQ7n1owJgFbuC61Oj++XhtzmymoCihNFgT84UAmJnxJfm4sYCiSLTXZtE00VWYpPMYc+ZQmB6xbSdVh0JWA== + +"@esbuild/openbsd-x64@0.19.12": + version "0.19.12" + resolved "https://registry.yarnpkg.com/@esbuild/openbsd-x64/-/openbsd-x64-0.19.12.tgz#306c0acbdb5a99c95be98bdd1d47c916e7dc3ff0" + integrity sha512-RbrfTB9SWsr0kWmb9srfF+L933uMDdu9BIzdA7os2t0TXhCRjrQyCeOt6wVxr79CKD4c+p+YhCj31HBkYcXebw== + +"@esbuild/sunos-x64@0.19.12": + version "0.19.12" + resolved "https://registry.yarnpkg.com/@esbuild/sunos-x64/-/sunos-x64-0.19.12.tgz#0933eaab9af8b9b2c930236f62aae3fc593faf30" + integrity sha512-HKjJwRrW8uWtCQnQOz9qcU3mUZhTUQvi56Q8DPTLLB+DawoiQdjsYq+j+D3s9I8VFtDr+F9CjgXKKC4ss89IeA== + +"@esbuild/win32-arm64@0.19.12": + version "0.19.12" + resolved "https://registry.yarnpkg.com/@esbuild/win32-arm64/-/win32-arm64-0.19.12.tgz#773bdbaa1971b36db2f6560088639ccd1e6773ae" + integrity sha512-URgtR1dJnmGvX864pn1B2YUYNzjmXkuJOIqG2HdU62MVS4EHpU2946OZoTMnRUHklGtJdJZ33QfzdjGACXhn1A== + +"@esbuild/win32-ia32@0.19.12": + version "0.19.12" + resolved "https://registry.yarnpkg.com/@esbuild/win32-ia32/-/win32-ia32-0.19.12.tgz#000516cad06354cc84a73f0943a4aa690ef6fd67" + integrity sha512-+ZOE6pUkMOJfmxmBZElNOx72NKpIa/HFOMGzu8fqzQJ5kgf6aTGrcJaFsNiVMH4JKpMipyK+7k0n2UXN7a8YKQ== + +"@esbuild/win32-x64@0.19.12": + version "0.19.12" + resolved "https://registry.yarnpkg.com/@esbuild/win32-x64/-/win32-x64-0.19.12.tgz#c57c8afbb4054a3ab8317591a0b7320360b444ae" + integrity sha512-T1QyPSDCyMXaO3pzBkF96E8xMkiRYbUEZADd29SyPGabqxMViNoii+NcK7eWJAEoU6RZyEm5lVSIjTmcdoB9HA== + +"@eslint-community/eslint-utils@^4.2.0", "@eslint-community/eslint-utils@^4.4.0": + version "4.4.0" + resolved "https://registry.yarnpkg.com/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz#a23514e8fb9af1269d5f7788aa556798d61c6b59" + integrity sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA== + dependencies: + eslint-visitor-keys "^3.3.0" + +"@eslint-community/regexpp@^4.4.0", "@eslint-community/regexpp@^4.5.1", "@eslint-community/regexpp@^4.6.1": + version "4.10.0" + resolved "https://registry.yarnpkg.com/@eslint-community/regexpp/-/regexpp-4.10.0.tgz#548f6de556857c8bb73bbee70c35dc82a2e74d63" + integrity sha512-Cu96Sd2By9mCNTx2iyKOmq10v22jUVQv0lQnlGNy16oE9589yE+QADPbrMGCkA51cKZSg3Pu/aTJVTGfL/qjUA== + +"@eslint/eslintrc@^2.1.4": + version "2.1.4" + resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-2.1.4.tgz#388a269f0f25c1b6adc317b5a2c55714894c70ad" + integrity sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ== + dependencies: + ajv "^6.12.4" + debug "^4.3.2" + espree "^9.6.0" + globals "^13.19.0" + ignore "^5.2.0" + import-fresh "^3.2.1" + js-yaml "^4.1.0" + minimatch "^3.1.2" + strip-json-comments "^3.1.1" + +"@eslint/js@8.56.0": + version "8.56.0" + resolved "https://registry.yarnpkg.com/@eslint/js/-/js-8.56.0.tgz#ef20350fec605a7f7035a01764731b2de0f3782b" + integrity sha512-gMsVel9D7f2HLkBma9VbtzZRehRogVRfbr++f06nL2vnCGCNlzOD+/MUov/F4p8myyAHspEhVobgjpX64q5m6A== + +"@floating-ui/core@^1.6.0": + version "1.6.0" + resolved "https://registry.yarnpkg.com/@floating-ui/core/-/core-1.6.0.tgz#fa41b87812a16bf123122bf945946bae3fdf7fc1" + integrity sha512-PcF++MykgmTj3CIyOQbKA/hDzOAiqI3mhuoN44WRCopIs1sgoDoU4oty4Jtqaj/y3oDU6fnVSm4QG0a3t5i0+g== + dependencies: + "@floating-ui/utils" "^0.2.1" + +"@floating-ui/dom@^1.6.1": + version "1.6.1" + resolved "https://registry.yarnpkg.com/@floating-ui/dom/-/dom-1.6.1.tgz#d552e8444f77f2d88534372369b3771dc3a2fa5d" + integrity sha512-iA8qE43/H5iGozC3W0YSnVSW42Vh522yyM1gj+BqRwVsTNOyr231PsXDaV04yT39PsO0QL2QpbI/M0ZaLUQgRQ== + dependencies: + "@floating-ui/core" "^1.6.0" + "@floating-ui/utils" "^0.2.1" + +"@floating-ui/react-dom@^2.0.6": + version "2.0.8" + resolved "https://registry.yarnpkg.com/@floating-ui/react-dom/-/react-dom-2.0.8.tgz#afc24f9756d1b433e1fe0d047c24bd4d9cefaa5d" + integrity sha512-HOdqOt3R3OGeTKidaLvJKcgg75S6tibQ3Tif4eyd91QnIJWr0NLvoXFpJA/j8HqkFSL68GDca9AuyWEHlhyClw== + dependencies: + "@floating-ui/dom" "^1.6.1" + +"@floating-ui/utils@^0.2.1": + version "0.2.1" + resolved "https://registry.yarnpkg.com/@floating-ui/utils/-/utils-0.2.1.tgz#16308cea045f0fc777b6ff20a9f25474dd8293d2" + integrity sha512-9TANp6GPoMtYzQdt54kfAyMmz1+osLlXdg2ENroU7zzrtflTLrrC/lgrIfaSe+Wu0b89GKccT7vxXA0MoAIO+Q== + +"@fontsource/open-sans@^5.0.3": + version "5.0.22" + resolved "https://registry.yarnpkg.com/@fontsource/open-sans/-/open-sans-5.0.22.tgz#ff5d4de6301e58a1da79acfc838eca71a631f663" + integrity sha512-lN3A4prlcVPgLjlgwY+oMPalpyXPM/6DwaLr6LjqkjytjGIZTLBbInL+zTfcemSyMtTQklreETepGjjmtzlRHA== + +"@humanwhocodes/config-array@^0.11.13": + version "0.11.14" + resolved "https://registry.yarnpkg.com/@humanwhocodes/config-array/-/config-array-0.11.14.tgz#d78e481a039f7566ecc9660b4ea7fe6b1fec442b" + integrity sha512-3T8LkOmg45BV5FICb15QQMsyUSWrQ8AygVfC7ZG32zOalnqrilm018ZVCw0eapXux8FtA33q8PSRSstjee3jSg== + dependencies: + "@humanwhocodes/object-schema" "^2.0.2" + debug "^4.3.1" + minimatch "^3.0.5" + +"@humanwhocodes/module-importer@^1.0.1": + version "1.0.1" + resolved "https://registry.yarnpkg.com/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz#af5b2691a22b44be847b0ca81641c5fb6ad0172c" + integrity sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA== + +"@humanwhocodes/object-schema@^2.0.2": + version "2.0.2" + resolved "https://registry.yarnpkg.com/@humanwhocodes/object-schema/-/object-schema-2.0.2.tgz#d9fae00a2d5cb40f92cfe64b47ad749fbc38f917" + integrity sha512-6EwiSjwWYP7pTckG6I5eyFANjPhmPjUX9JRLUSfNPC7FX7zK9gyZAfUEaECL6ALTpGX5AjnBq3C9XmVWPitNpw== + +"@isaacs/cliui@^8.0.2": + version "8.0.2" + resolved "https://registry.yarnpkg.com/@isaacs/cliui/-/cliui-8.0.2.tgz#b37667b7bc181c168782259bab42474fbf52b550" + integrity sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA== + dependencies: + string-width "^5.1.2" + string-width-cjs "npm:string-width@^4.2.0" + strip-ansi "^7.0.1" + strip-ansi-cjs "npm:strip-ansi@^6.0.1" + wrap-ansi "^8.1.0" + wrap-ansi-cjs "npm:wrap-ansi@^7.0.0" + +"@istanbuljs/load-nyc-config@^1.0.0": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz#fd3db1d59ecf7cf121e80650bb86712f9b55eced" + integrity sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ== + dependencies: + camelcase "^5.3.1" + find-up "^4.1.0" + get-package-type "^0.1.0" + js-yaml "^3.13.1" + resolve-from "^5.0.0" + +"@istanbuljs/schema@^0.1.2": + version "0.1.3" + resolved "https://registry.yarnpkg.com/@istanbuljs/schema/-/schema-0.1.3.tgz#e45e384e4b8ec16bce2fd903af78450f6bf7ec98" + integrity sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA== + +"@jest/console@^27.5.1": + version "27.5.1" + resolved "https://registry.yarnpkg.com/@jest/console/-/console-27.5.1.tgz#260fe7239602fe5130a94f1aa386eff54b014bba" + integrity sha512-kZ/tNpS3NXn0mlXXXPNuDZnb4c0oZ20r4K5eemM2k30ZC3G0T02nXUvyhf5YdbXWHPEJLc9qGLxEZ216MdL+Zg== + dependencies: + "@jest/types" "^27.5.1" + "@types/node" "*" + chalk "^4.0.0" + jest-message-util "^27.5.1" + jest-util "^27.5.1" + slash "^3.0.0" + +"@jest/console@^28.1.3": + version "28.1.3" + resolved "https://registry.yarnpkg.com/@jest/console/-/console-28.1.3.tgz#2030606ec03a18c31803b8a36382762e447655df" + integrity sha512-QPAkP5EwKdK/bxIr6C1I4Vs0rm2nHiANzj/Z5X2JQkrZo6IqvC4ldZ9K95tF0HdidhA8Bo6egxSzUFPYKcEXLw== + dependencies: + "@jest/types" "^28.1.3" + "@types/node" "*" + chalk "^4.0.0" + jest-message-util "^28.1.3" + jest-util "^28.1.3" + slash "^3.0.0" + +"@jest/console@^29.7.0": + version "29.7.0" + resolved "https://registry.yarnpkg.com/@jest/console/-/console-29.7.0.tgz#cd4822dbdb84529265c5a2bdb529a3c9cc950ffc" + integrity sha512-5Ni4CU7XHQi32IJ398EEP4RrB8eV09sXP2ROqD4bksHrnTree52PsxvX8tpL8LvTZ3pFzXyPbNQReSN41CAhOg== + dependencies: + "@jest/types" "^29.6.3" + "@types/node" "*" + chalk "^4.0.0" + jest-message-util "^29.7.0" + jest-util "^29.7.0" + slash "^3.0.0" + +"@jest/core@^27.5.1": + version "27.5.1" + resolved "https://registry.yarnpkg.com/@jest/core/-/core-27.5.1.tgz#267ac5f704e09dc52de2922cbf3af9edcd64b626" + integrity sha512-AK6/UTrvQD0Cd24NSqmIA6rKsu0tKIxfiCducZvqxYdmMisOYAsdItspT+fQDQYARPf8XgjAFZi0ogW2agH5nQ== + dependencies: + "@jest/console" "^27.5.1" + "@jest/reporters" "^27.5.1" + "@jest/test-result" "^27.5.1" + "@jest/transform" "^27.5.1" + "@jest/types" "^27.5.1" + "@types/node" "*" + ansi-escapes "^4.2.1" + chalk "^4.0.0" + emittery "^0.8.1" + exit "^0.1.2" + graceful-fs "^4.2.9" + jest-changed-files "^27.5.1" + jest-config "^27.5.1" + jest-haste-map "^27.5.1" + jest-message-util "^27.5.1" + jest-regex-util "^27.5.1" + jest-resolve "^27.5.1" + jest-resolve-dependencies "^27.5.1" + jest-runner "^27.5.1" + jest-runtime "^27.5.1" + jest-snapshot "^27.5.1" + jest-util "^27.5.1" + jest-validate "^27.5.1" + jest-watcher "^27.5.1" + micromatch "^4.0.4" + rimraf "^3.0.0" + slash "^3.0.0" + strip-ansi "^6.0.0" + +"@jest/core@^29.7.0": + version "29.7.0" + resolved "https://registry.yarnpkg.com/@jest/core/-/core-29.7.0.tgz#b6cccc239f30ff36609658c5a5e2291757ce448f" + integrity sha512-n7aeXWKMnGtDA48y8TLWJPJmLmmZ642Ceo78cYWEpiD7FzDgmNDV/GCVRorPABdXLJZ/9wzzgZAlHjXjxDHGsg== + dependencies: + "@jest/console" "^29.7.0" + "@jest/reporters" "^29.7.0" + "@jest/test-result" "^29.7.0" + "@jest/transform" "^29.7.0" + "@jest/types" "^29.6.3" + "@types/node" "*" + ansi-escapes "^4.2.1" + chalk "^4.0.0" + ci-info "^3.2.0" + exit "^0.1.2" + graceful-fs "^4.2.9" + jest-changed-files "^29.7.0" + jest-config "^29.7.0" + jest-haste-map "^29.7.0" + jest-message-util "^29.7.0" + jest-regex-util "^29.6.3" + jest-resolve "^29.7.0" + jest-resolve-dependencies "^29.7.0" + jest-runner "^29.7.0" + jest-runtime "^29.7.0" + jest-snapshot "^29.7.0" + jest-util "^29.7.0" + jest-validate "^29.7.0" + jest-watcher "^29.7.0" + micromatch "^4.0.4" + pretty-format "^29.7.0" + slash "^3.0.0" + strip-ansi "^6.0.0" + +"@jest/environment@^27.5.1": + version "27.5.1" + resolved "https://registry.yarnpkg.com/@jest/environment/-/environment-27.5.1.tgz#d7425820511fe7158abbecc010140c3fd3be9c74" + integrity sha512-/WQjhPJe3/ghaol/4Bq480JKXV/Rfw8nQdN7f41fM8VDHLcxKXou6QyXAh3EFr9/bVG3x74z1NWDkP87EiY8gA== + dependencies: + "@jest/fake-timers" "^27.5.1" + "@jest/types" "^27.5.1" + "@types/node" "*" + jest-mock "^27.5.1" + +"@jest/environment@^29.7.0": + version "29.7.0" + resolved "https://registry.yarnpkg.com/@jest/environment/-/environment-29.7.0.tgz#24d61f54ff1f786f3cd4073b4b94416383baf2a7" + integrity sha512-aQIfHDq33ExsN4jP1NWGXhxgQ/wixs60gDiKO+XVMd8Mn0NWPWgc34ZQDTb2jKaUWQ7MuwoitXAsN2XVXNMpAw== + dependencies: + "@jest/fake-timers" "^29.7.0" + "@jest/types" "^29.6.3" + "@types/node" "*" + jest-mock "^29.7.0" + +"@jest/expect-utils@^29.7.0": + version "29.7.0" + resolved "https://registry.yarnpkg.com/@jest/expect-utils/-/expect-utils-29.7.0.tgz#023efe5d26a8a70f21677d0a1afc0f0a44e3a1c6" + integrity sha512-GlsNBWiFQFCVi9QVSx7f5AgMeLxe9YCCs5PuP2O2LdjDAA8Jh9eX7lA1Jq/xdXw3Wb3hyvlFNfZIfcRetSzYcA== + dependencies: + jest-get-type "^29.6.3" + +"@jest/expect@^29.7.0": + version "29.7.0" + resolved "https://registry.yarnpkg.com/@jest/expect/-/expect-29.7.0.tgz#76a3edb0cb753b70dfbfe23283510d3d45432bf2" + integrity sha512-8uMeAMycttpva3P1lBHB8VciS9V0XAr3GymPpipdyQXbBcuhkLQOSe8E/p92RyAdToS6ZD1tFkX+CkhoECE0dQ== + dependencies: + expect "^29.7.0" + jest-snapshot "^29.7.0" + +"@jest/fake-timers@^27.5.1": + version "27.5.1" + resolved "https://registry.yarnpkg.com/@jest/fake-timers/-/fake-timers-27.5.1.tgz#76979745ce0579c8a94a4678af7a748eda8ada74" + integrity sha512-/aPowoolwa07k7/oM3aASneNeBGCmGQsc3ugN4u6s4C/+s5M64MFo/+djTdiwcbQlRfFElGuDXWzaWj6QgKObQ== + dependencies: + "@jest/types" "^27.5.1" + "@sinonjs/fake-timers" "^8.0.1" + "@types/node" "*" + jest-message-util "^27.5.1" + jest-mock "^27.5.1" + jest-util "^27.5.1" + +"@jest/fake-timers@^29.7.0": + version "29.7.0" + resolved "https://registry.yarnpkg.com/@jest/fake-timers/-/fake-timers-29.7.0.tgz#fd91bf1fffb16d7d0d24a426ab1a47a49881a565" + integrity sha512-q4DH1Ha4TTFPdxLsqDXK1d3+ioSL7yL5oCMJZgDYm6i+6CygW5E5xVr/D1HdsGxjt1ZWSfUAs9OxSB/BNelWrQ== + dependencies: + "@jest/types" "^29.6.3" + "@sinonjs/fake-timers" "^10.0.2" + "@types/node" "*" + jest-message-util "^29.7.0" + jest-mock "^29.7.0" + jest-util "^29.7.0" + +"@jest/globals@^27.5.1": + version "27.5.1" + resolved "https://registry.yarnpkg.com/@jest/globals/-/globals-27.5.1.tgz#7ac06ce57ab966566c7963431cef458434601b2b" + integrity sha512-ZEJNB41OBQQgGzgyInAv0UUfDDj3upmHydjieSxFvTRuZElrx7tXg/uVQ5hYVEwiXs3+aMsAeEc9X7xiSKCm4Q== + dependencies: + "@jest/environment" "^27.5.1" + "@jest/types" "^27.5.1" + expect "^27.5.1" + +"@jest/globals@^29.7.0": + version "29.7.0" + resolved "https://registry.yarnpkg.com/@jest/globals/-/globals-29.7.0.tgz#8d9290f9ec47ff772607fa864ca1d5a2efae1d4d" + integrity sha512-mpiz3dutLbkW2MNFubUGUEVLkTGiqW6yLVTA+JbP6fI6J5iL9Y0Nlg8k95pcF8ctKwCS7WVxteBs29hhfAotzQ== + dependencies: + "@jest/environment" "^29.7.0" + "@jest/expect" "^29.7.0" + "@jest/types" "^29.6.3" + jest-mock "^29.7.0" + +"@jest/reporters@^27.5.1": + version "27.5.1" + resolved "https://registry.yarnpkg.com/@jest/reporters/-/reporters-27.5.1.tgz#ceda7be96170b03c923c37987b64015812ffec04" + integrity sha512-cPXh9hWIlVJMQkVk84aIvXuBB4uQQmFqZiacloFuGiP3ah1sbCxCosidXFDfqG8+6fO1oR2dTJTlsOy4VFmUfw== + dependencies: + "@bcoe/v8-coverage" "^0.2.3" + "@jest/console" "^27.5.1" + "@jest/test-result" "^27.5.1" + "@jest/transform" "^27.5.1" + "@jest/types" "^27.5.1" + "@types/node" "*" + chalk "^4.0.0" + collect-v8-coverage "^1.0.0" + exit "^0.1.2" + glob "^7.1.2" + graceful-fs "^4.2.9" + istanbul-lib-coverage "^3.0.0" + istanbul-lib-instrument "^5.1.0" + istanbul-lib-report "^3.0.0" + istanbul-lib-source-maps "^4.0.0" + istanbul-reports "^3.1.3" + jest-haste-map "^27.5.1" + jest-resolve "^27.5.1" + jest-util "^27.5.1" + jest-worker "^27.5.1" + slash "^3.0.0" + source-map "^0.6.0" + string-length "^4.0.1" + terminal-link "^2.0.0" + v8-to-istanbul "^8.1.0" + +"@jest/reporters@^29.7.0": + version "29.7.0" + resolved "https://registry.yarnpkg.com/@jest/reporters/-/reporters-29.7.0.tgz#04b262ecb3b8faa83b0b3d321623972393e8f4c7" + integrity sha512-DApq0KJbJOEzAFYjHADNNxAE3KbhxQB1y5Kplb5Waqw6zVbuWatSnMjE5gs8FUgEPmNsnZA3NCWl9NG0ia04Pg== + dependencies: + "@bcoe/v8-coverage" "^0.2.3" + "@jest/console" "^29.7.0" + "@jest/test-result" "^29.7.0" + "@jest/transform" "^29.7.0" + "@jest/types" "^29.6.3" + "@jridgewell/trace-mapping" "^0.3.18" + "@types/node" "*" + chalk "^4.0.0" + collect-v8-coverage "^1.0.0" + exit "^0.1.2" + glob "^7.1.3" + graceful-fs "^4.2.9" + istanbul-lib-coverage "^3.0.0" + istanbul-lib-instrument "^6.0.0" + istanbul-lib-report "^3.0.0" + istanbul-lib-source-maps "^4.0.0" + istanbul-reports "^3.1.3" + jest-message-util "^29.7.0" + jest-util "^29.7.0" + jest-worker "^29.7.0" + slash "^3.0.0" + string-length "^4.0.1" + strip-ansi "^6.0.0" + v8-to-istanbul "^9.0.1" + +"@jest/schemas@^28.1.3": + version "28.1.3" + resolved "https://registry.yarnpkg.com/@jest/schemas/-/schemas-28.1.3.tgz#ad8b86a66f11f33619e3d7e1dcddd7f2d40ff905" + integrity sha512-/l/VWsdt/aBXgjshLWOFyFt3IVdYypu5y2Wn2rOO1un6nkqIn8SLXzgIMYXFyYsRWDyF5EthmKJMIdJvk08grg== + dependencies: + "@sinclair/typebox" "^0.24.1" + +"@jest/schemas@^29.6.3": + version "29.6.3" + resolved "https://registry.yarnpkg.com/@jest/schemas/-/schemas-29.6.3.tgz#430b5ce8a4e0044a7e3819663305a7b3091c8e03" + integrity sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA== + dependencies: + "@sinclair/typebox" "^0.27.8" + +"@jest/source-map@^27.5.1": + version "27.5.1" + resolved "https://registry.yarnpkg.com/@jest/source-map/-/source-map-27.5.1.tgz#6608391e465add4205eae073b55e7f279e04e8cf" + integrity sha512-y9NIHUYF3PJRlHk98NdC/N1gl88BL08aQQgu4k4ZopQkCw9t9cV8mtl3TV8b/YCB8XaVTFrmUTAJvjsntDireg== + dependencies: + callsites "^3.0.0" + graceful-fs "^4.2.9" + source-map "^0.6.0" + +"@jest/source-map@^29.6.3": + version "29.6.3" + resolved "https://registry.yarnpkg.com/@jest/source-map/-/source-map-29.6.3.tgz#d90ba772095cf37a34a5eb9413f1b562a08554c4" + integrity sha512-MHjT95QuipcPrpLM+8JMSzFx6eHp5Bm+4XeFDJlwsvVBjmKNiIAvasGK2fxz2WbGRlnvqehFbh07MMa7n3YJnw== + dependencies: + "@jridgewell/trace-mapping" "^0.3.18" + callsites "^3.0.0" + graceful-fs "^4.2.9" + +"@jest/test-result@^27.5.1": + version "27.5.1" + resolved "https://registry.yarnpkg.com/@jest/test-result/-/test-result-27.5.1.tgz#56a6585fa80f7cdab72b8c5fc2e871d03832f5bb" + integrity sha512-EW35l2RYFUcUQxFJz5Cv5MTOxlJIQs4I7gxzi2zVU7PJhOwfYq1MdC5nhSmYjX1gmMmLPvB3sIaC+BkcHRBfag== + dependencies: + "@jest/console" "^27.5.1" + "@jest/types" "^27.5.1" + "@types/istanbul-lib-coverage" "^2.0.0" + collect-v8-coverage "^1.0.0" + +"@jest/test-result@^28.1.3": + version "28.1.3" + resolved "https://registry.yarnpkg.com/@jest/test-result/-/test-result-28.1.3.tgz#5eae945fd9f4b8fcfce74d239e6f725b6bf076c5" + integrity sha512-kZAkxnSE+FqE8YjW8gNuoVkkC9I7S1qmenl8sGcDOLropASP+BkcGKwhXoyqQuGOGeYY0y/ixjrd/iERpEXHNg== + dependencies: + "@jest/console" "^28.1.3" + "@jest/types" "^28.1.3" + "@types/istanbul-lib-coverage" "^2.0.0" + collect-v8-coverage "^1.0.0" + +"@jest/test-result@^29.7.0": + version "29.7.0" + resolved "https://registry.yarnpkg.com/@jest/test-result/-/test-result-29.7.0.tgz#8db9a80aa1a097bb2262572686734baed9b1657c" + integrity sha512-Fdx+tv6x1zlkJPcWXmMDAG2HBnaR9XPSd5aDWQVsfrZmLVT3lU1cwyxLgRmXR9yrq4NBoEm9BMsfgFzTQAbJYA== + dependencies: + "@jest/console" "^29.7.0" + "@jest/types" "^29.6.3" + "@types/istanbul-lib-coverage" "^2.0.0" + collect-v8-coverage "^1.0.0" + +"@jest/test-sequencer@^27.5.1": + version "27.5.1" + resolved "https://registry.yarnpkg.com/@jest/test-sequencer/-/test-sequencer-27.5.1.tgz#4057e0e9cea4439e544c6353c6affe58d095745b" + integrity sha512-LCheJF7WB2+9JuCS7VB/EmGIdQuhtqjRNI9A43idHv3E4KltCTsPsLxvdaubFHSYwY/fNjMWjl6vNRhDiN7vpQ== + dependencies: + "@jest/test-result" "^27.5.1" + graceful-fs "^4.2.9" + jest-haste-map "^27.5.1" + jest-runtime "^27.5.1" + +"@jest/test-sequencer@^29.7.0": + version "29.7.0" + resolved "https://registry.yarnpkg.com/@jest/test-sequencer/-/test-sequencer-29.7.0.tgz#6cef977ce1d39834a3aea887a1726628a6f072ce" + integrity sha512-GQwJ5WZVrKnOJuiYiAF52UNUJXgTZx1NHjFSEB0qEMmSZKAkdMoIzw/Cj6x6NF4AvV23AUqDpFzQkN/eYCYTxw== + dependencies: + "@jest/test-result" "^29.7.0" + graceful-fs "^4.2.9" + jest-haste-map "^29.7.0" + slash "^3.0.0" + +"@jest/transform@^27.5.1": + version "27.5.1" + resolved "https://registry.yarnpkg.com/@jest/transform/-/transform-27.5.1.tgz#6c3501dcc00c4c08915f292a600ece5ecfe1f409" + integrity sha512-ipON6WtYgl/1329g5AIJVbUuEh0wZVbdpGwC99Jw4LwuoBNS95MVphU6zOeD9pDkon+LLbFL7lOQRapbB8SCHw== + dependencies: + "@babel/core" "^7.1.0" + "@jest/types" "^27.5.1" + babel-plugin-istanbul "^6.1.1" + chalk "^4.0.0" + convert-source-map "^1.4.0" + fast-json-stable-stringify "^2.0.0" + graceful-fs "^4.2.9" + jest-haste-map "^27.5.1" + jest-regex-util "^27.5.1" + jest-util "^27.5.1" + micromatch "^4.0.4" + pirates "^4.0.4" + slash "^3.0.0" + source-map "^0.6.1" + write-file-atomic "^3.0.0" + +"@jest/transform@^29.7.0": + version "29.7.0" + resolved "https://registry.yarnpkg.com/@jest/transform/-/transform-29.7.0.tgz#df2dd9c346c7d7768b8a06639994640c642e284c" + integrity sha512-ok/BTPFzFKVMwO5eOHRrvnBVHdRy9IrsrW1GpMaQ9MCnilNLXQKmAX8s1YXDFaai9xJpac2ySzV0YeRRECr2Vw== + dependencies: + "@babel/core" "^7.11.6" + "@jest/types" "^29.6.3" + "@jridgewell/trace-mapping" "^0.3.18" + babel-plugin-istanbul "^6.1.1" + chalk "^4.0.0" + convert-source-map "^2.0.0" + fast-json-stable-stringify "^2.1.0" + graceful-fs "^4.2.9" + jest-haste-map "^29.7.0" + jest-regex-util "^29.6.3" + jest-util "^29.7.0" + micromatch "^4.0.4" + pirates "^4.0.4" + slash "^3.0.0" + write-file-atomic "^4.0.2" + +"@jest/types@^27.5.1": + version "27.5.1" + resolved "https://registry.yarnpkg.com/@jest/types/-/types-27.5.1.tgz#3c79ec4a8ba61c170bf937bcf9e98a9df175ec80" + integrity sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw== + dependencies: + "@types/istanbul-lib-coverage" "^2.0.0" + "@types/istanbul-reports" "^3.0.0" + "@types/node" "*" + "@types/yargs" "^16.0.0" + chalk "^4.0.0" + +"@jest/types@^28.1.3": + version "28.1.3" + resolved "https://registry.yarnpkg.com/@jest/types/-/types-28.1.3.tgz#b05de80996ff12512bc5ceb1d208285a7d11748b" + integrity sha512-RyjiyMUZrKz/c+zlMFO1pm70DcIlST8AeWTkoUdZevew44wcNZQHsEVOiCVtgVnlFFD82FPaXycys58cf2muVQ== + dependencies: + "@jest/schemas" "^28.1.3" + "@types/istanbul-lib-coverage" "^2.0.0" + "@types/istanbul-reports" "^3.0.0" + "@types/node" "*" + "@types/yargs" "^17.0.8" + chalk "^4.0.0" + +"@jest/types@^29.6.3": + version "29.6.3" + resolved "https://registry.yarnpkg.com/@jest/types/-/types-29.6.3.tgz#1131f8cf634e7e84c5e77bab12f052af585fba59" + integrity sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw== + dependencies: + "@jest/schemas" "^29.6.3" + "@types/istanbul-lib-coverage" "^2.0.0" + "@types/istanbul-reports" "^3.0.0" + "@types/node" "*" + "@types/yargs" "^17.0.8" + chalk "^4.0.0" + +"@jridgewell/gen-mapping@^0.3.0", "@jridgewell/gen-mapping@^0.3.2": + version "0.3.3" + resolved "https://registry.yarnpkg.com/@jridgewell/gen-mapping/-/gen-mapping-0.3.3.tgz#7e02e6eb5df901aaedb08514203b096614024098" + integrity sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ== + dependencies: + "@jridgewell/set-array" "^1.0.1" + "@jridgewell/sourcemap-codec" "^1.4.10" + "@jridgewell/trace-mapping" "^0.3.9" + +"@jridgewell/resolve-uri@^3.1.0": + version "3.1.1" + resolved "https://registry.yarnpkg.com/@jridgewell/resolve-uri/-/resolve-uri-3.1.1.tgz#c08679063f279615a3326583ba3a90d1d82cc721" + integrity sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA== + +"@jridgewell/set-array@^1.0.1": + version "1.1.2" + resolved "https://registry.yarnpkg.com/@jridgewell/set-array/-/set-array-1.1.2.tgz#7c6cf998d6d20b914c0a55a91ae928ff25965e72" + integrity sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw== + +"@jridgewell/source-map@^0.3.3": + version "0.3.5" + resolved "https://registry.yarnpkg.com/@jridgewell/source-map/-/source-map-0.3.5.tgz#a3bb4d5c6825aab0d281268f47f6ad5853431e91" + integrity sha512-UTYAUj/wviwdsMfzoSJspJxbkH5o1snzwX0//0ENX1u/55kkZZkcTZP6u9bwKGkv+dkk9at4m1Cpt0uY80kcpQ== + dependencies: + "@jridgewell/gen-mapping" "^0.3.0" + "@jridgewell/trace-mapping" "^0.3.9" + +"@jridgewell/sourcemap-codec@^1.4.10", "@jridgewell/sourcemap-codec@^1.4.14": + version "1.4.15" + resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz#d7c6e6755c78567a951e04ab52ef0fd26de59f32" + integrity sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg== + +"@jridgewell/trace-mapping@^0.3.12", "@jridgewell/trace-mapping@^0.3.17", "@jridgewell/trace-mapping@^0.3.18", "@jridgewell/trace-mapping@^0.3.20", "@jridgewell/trace-mapping@^0.3.9": + version "0.3.22" + resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.22.tgz#72a621e5de59f5f1ef792d0793a82ee20f645e4c" + integrity sha512-Wf963MzWtA2sjrNt+g18IAln9lKnlRp+K2eH4jjIoF1wYeq3aMREpG09xhlhdzS0EjwU7qmUJYangWa+151vZw== + dependencies: + "@jridgewell/resolve-uri" "^3.1.0" + "@jridgewell/sourcemap-codec" "^1.4.14" + +"@leichtgewicht/ip-codec@^2.0.1": + version "2.0.4" + resolved "https://registry.yarnpkg.com/@leichtgewicht/ip-codec/-/ip-codec-2.0.4.tgz#b2ac626d6cb9c8718ab459166d4bb405b8ffa78b" + integrity sha512-Hcv+nVC0kZnQ3tD9GVu5xSMR4VVYOteQIr/hwFPVEvPdlXqgGEuRjiheChHgdM+JyqdgNcmzZOX/tnl0JOiI7A== + +"@mui/base@5.0.0-beta.33": + version "5.0.0-beta.33" + resolved "https://registry.yarnpkg.com/@mui/base/-/base-5.0.0-beta.33.tgz#fbb844e2d840d47dd7a48850a03152aed2381d10" + integrity sha512-WcSpoJUw/UYHXpvgtl4HyMar2Ar97illUpqiS/X1gtSBp6sdDW6kB2BJ9OlVQ+Kk/RL2GDp/WHA9sbjAYV35ow== + dependencies: + "@babel/runtime" "^7.23.8" + "@floating-ui/react-dom" "^2.0.6" + "@mui/types" "^7.2.13" + "@mui/utils" "^5.15.6" + "@popperjs/core" "^2.11.8" + clsx "^2.1.0" + prop-types "^15.8.1" + +"@mui/core-downloads-tracker@^5.15.6": + version "5.15.6" + resolved "https://registry.yarnpkg.com/@mui/core-downloads-tracker/-/core-downloads-tracker-5.15.6.tgz#9b82ba86d5a0fe55e9479b68dd5068943cc3835b" + integrity sha512-0aoWS4qvk1uzm9JBs83oQmIMIQeTBUeqqu8u+3uo2tMznrB5fIKqQVCbCgq+4Tm4jG+5F7dIvnjvQ2aV7UKtdw== + +"@mui/icons-material@^5.11.11": + version "5.15.6" + resolved "https://registry.yarnpkg.com/@mui/icons-material/-/icons-material-5.15.6.tgz#6958232bef48972fcbafd5f69e6079a9be5951f1" + integrity sha512-GnkxMtlhs+8ieHLmCytg00ew0vMOiXGFCw8Ra9nxMsBjBqnrOI5gmXqUm+sGggeEU/HG8HyeqC1MX/IxOBJHzA== + dependencies: + "@babel/runtime" "^7.23.8" + +"@mui/material@^5.10.15": + version "5.15.6" + resolved "https://registry.yarnpkg.com/@mui/material/-/material-5.15.6.tgz#e32944ae4e01f85b314bc26e4cbbb700d598f30c" + integrity sha512-rw7bDdpi2kzfmcDN78lHp8swArJ5sBCKsn+4G3IpGfu44ycyWAWX0VdlvkjcR9Yrws2KIm7c+8niXpWHUDbWoA== + dependencies: + "@babel/runtime" "^7.23.8" + "@mui/base" "5.0.0-beta.33" + "@mui/core-downloads-tracker" "^5.15.6" + "@mui/system" "^5.15.6" + "@mui/types" "^7.2.13" + "@mui/utils" "^5.15.6" + "@types/react-transition-group" "^4.4.10" + clsx "^2.1.0" + csstype "^3.1.2" + prop-types "^15.8.1" + react-is "^18.2.0" + react-transition-group "^4.4.5" + +"@mui/private-theming@^5.15.6": + version "5.15.6" + resolved "https://registry.yarnpkg.com/@mui/private-theming/-/private-theming-5.15.6.tgz#224819694ed76df041b1257256152a45d1fd733d" + integrity sha512-ZBX9E6VNUSscUOtU8uU462VvpvBS7eFl5VfxAzTRVQBHflzL+5KtnGrebgf6Nd6cdvxa1o0OomiaxSKoN2XDmg== + dependencies: + "@babel/runtime" "^7.23.8" + "@mui/utils" "^5.15.6" + prop-types "^15.8.1" + +"@mui/styled-engine@^5.15.6": + version "5.15.6" + resolved "https://registry.yarnpkg.com/@mui/styled-engine/-/styled-engine-5.15.6.tgz#3f4a8804de6ddeee17cb52ec92225686f423398a" + integrity sha512-KAn8P8xP/WigFKMlEYUpU9z2o7jJnv0BG28Qu1dhNQVutsLVIFdRf5Nb+0ijp2qgtcmygQ0FtfRuXv5LYetZTg== + dependencies: + "@babel/runtime" "^7.23.8" + "@emotion/cache" "^11.11.0" + csstype "^3.1.2" + prop-types "^15.8.1" + +"@mui/system@^5.15.6": + version "5.15.6" + resolved "https://registry.yarnpkg.com/@mui/system/-/system-5.15.6.tgz#d278adb09d57ee21f4eef2f6bc335bf9bd062fca" + integrity sha512-J01D//u8IfXvaEHMBQX5aO2l7Q+P15nt96c4NskX7yp5/+UuZP8XCQJhtBtLuj+M2LLyXHYGmCPeblsmmscP2Q== + dependencies: + "@babel/runtime" "^7.23.8" + "@mui/private-theming" "^5.15.6" + "@mui/styled-engine" "^5.15.6" + "@mui/types" "^7.2.13" + "@mui/utils" "^5.15.6" + clsx "^2.1.0" + csstype "^3.1.2" + prop-types "^15.8.1" + +"@mui/types@^7.2.13": + version "7.2.13" + resolved "https://registry.yarnpkg.com/@mui/types/-/types-7.2.13.tgz#d1584912942f9dc042441ecc2d1452be39c666b8" + integrity sha512-qP9OgacN62s+l8rdDhSFRe05HWtLLJ5TGclC9I1+tQngbssu0m2dmFZs+Px53AcOs9fD7TbYd4gc9AXzVqO/+g== + +"@mui/utils@^5.15.6": + version "5.15.6" + resolved "https://registry.yarnpkg.com/@mui/utils/-/utils-5.15.6.tgz#bbcc302b8e83e360a87230afe3ed8fc99e29fae9" + integrity sha512-qfEhf+zfU9aQdbzo1qrSWlbPQhH1nCgeYgwhOVnj9Bn39shJQitEnXpSQpSNag8+uty5Od6PxmlNKPTnPySRKA== + dependencies: + "@babel/runtime" "^7.23.8" + "@types/prop-types" "^15.7.11" + prop-types "^15.8.1" + react-is "^18.2.0" + +"@nicolo-ribaudo/eslint-scope-5-internals@5.1.1-v1": + version "5.1.1-v1" + resolved "https://registry.yarnpkg.com/@nicolo-ribaudo/eslint-scope-5-internals/-/eslint-scope-5-internals-5.1.1-v1.tgz#dbf733a965ca47b1973177dc0bb6c889edcfb129" + integrity sha512-54/JRvkLIzzDWshCWfuhadfrfZVPiElY8Fcgmg1HroEly/EDSszzhBAsarCux+D/kOslTRquNzuyGSmUSTTHGg== + dependencies: + eslint-scope "5.1.1" + +"@nodelib/fs.scandir@2.1.5": + version "2.1.5" + resolved "https://registry.yarnpkg.com/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz#7619c2eb21b25483f6d167548b4cfd5a7488c3d5" + integrity sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g== + dependencies: + "@nodelib/fs.stat" "2.0.5" + run-parallel "^1.1.9" + +"@nodelib/fs.stat@2.0.5", "@nodelib/fs.stat@^2.0.2": + version "2.0.5" + resolved "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz#5bd262af94e9d25bd1e71b05deed44876a222e8b" + integrity sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A== + +"@nodelib/fs.walk@^1.2.3", "@nodelib/fs.walk@^1.2.8": + version "1.2.8" + resolved "https://registry.yarnpkg.com/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz#e95737e8bb6746ddedf69c556953494f196fe69a" + integrity sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg== + dependencies: + "@nodelib/fs.scandir" "2.1.5" + fastq "^1.6.0" + +"@pkgjs/parseargs@^0.11.0": + version "0.11.0" + resolved "https://registry.yarnpkg.com/@pkgjs/parseargs/-/parseargs-0.11.0.tgz#a77ea742fab25775145434eb1d2328cf5013ac33" + integrity sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg== + +"@pmmmwh/react-refresh-webpack-plugin@^0.5.3": + version "0.5.11" + resolved "https://registry.yarnpkg.com/@pmmmwh/react-refresh-webpack-plugin/-/react-refresh-webpack-plugin-0.5.11.tgz#7c2268cedaa0644d677e8c4f377bc8fb304f714a" + integrity sha512-7j/6vdTym0+qZ6u4XbSAxrWBGYSdCfTzySkj7WAFgDLmSyWlOrWvpyzxlFh5jtw9dn0oL/jtW+06XfFiisN3JQ== + dependencies: + ansi-html-community "^0.0.8" + common-path-prefix "^3.0.0" + core-js-pure "^3.23.3" + error-stack-parser "^2.0.6" + find-up "^5.0.0" + html-entities "^2.1.0" + loader-utils "^2.0.4" + schema-utils "^3.0.0" + source-map "^0.7.3" + +"@popperjs/core@^2.11.8": + version "2.11.8" + resolved "https://registry.yarnpkg.com/@popperjs/core/-/core-2.11.8.tgz#6b79032e760a0899cd4204710beede972a3a185f" + integrity sha512-P1st0aksCrn9sGZhp8GMYwBnQsbvAWsZAX44oXNNvLHGqAOcoVxmjZiohstwQ7SqKnbR47akdNi+uleWD8+g6A== + +"@remix-run/router@1.14.2": + version "1.14.2" + resolved "https://registry.yarnpkg.com/@remix-run/router/-/router-1.14.2.tgz#4d58f59908d9197ba3179310077f25c88e49ed17" + integrity sha512-ACXpdMM9hmKZww21yEqWwiLws/UPLhNKvimN8RrYSqPSvB3ov7sLvAcfvaxePeLvccTQKGdkDIhLYApZVDFuKg== + +"@rollup/plugin-babel@^5.2.0": + version "5.3.1" + resolved "https://registry.yarnpkg.com/@rollup/plugin-babel/-/plugin-babel-5.3.1.tgz#04bc0608f4aa4b2e4b1aebf284344d0f68fda283" + integrity sha512-WFfdLWU/xVWKeRQnKmIAQULUI7Il0gZnBIH/ZFO069wYIfPu+8zrfp/KMW0atmELoRDq8FbiP3VCss9MhCut7Q== + dependencies: + "@babel/helper-module-imports" "^7.10.4" + "@rollup/pluginutils" "^3.1.0" + +"@rollup/plugin-node-resolve@^11.2.1": + version "11.2.1" + resolved "https://registry.yarnpkg.com/@rollup/plugin-node-resolve/-/plugin-node-resolve-11.2.1.tgz#82aa59397a29cd4e13248b106e6a4a1880362a60" + integrity sha512-yc2n43jcqVyGE2sqV5/YCmocy9ArjVAP/BeXyTtADTBBX6V0e5UMqwO8CdQ0kzjb6zu5P1qMzsScCMRvE9OlVg== + dependencies: + "@rollup/pluginutils" "^3.1.0" + "@types/resolve" "1.17.1" + builtin-modules "^3.1.0" + deepmerge "^4.2.2" + is-module "^1.0.0" + resolve "^1.19.0" + +"@rollup/plugin-replace@^2.4.1": + version "2.4.2" + resolved "https://registry.yarnpkg.com/@rollup/plugin-replace/-/plugin-replace-2.4.2.tgz#a2d539314fbc77c244858faa523012825068510a" + integrity sha512-IGcu+cydlUMZ5En85jxHH4qj2hta/11BHq95iHEyb2sbgiN0eCdzvUcHw5gt9pBL5lTi4JDYJ1acCoMGpTvEZg== + dependencies: + "@rollup/pluginutils" "^3.1.0" + magic-string "^0.25.7" + +"@rollup/pluginutils@^3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@rollup/pluginutils/-/pluginutils-3.1.0.tgz#706b4524ee6dc8b103b3c995533e5ad680c02b9b" + integrity sha512-GksZ6pr6TpIjHm8h9lSQ8pi8BE9VeubNT0OMJ3B5uZJ8pz73NPiqOtCog/x2/QzM1ENChPKxMDhiQuRHsqc+lg== + dependencies: + "@types/estree" "0.0.39" + estree-walker "^1.0.1" + picomatch "^2.2.2" + +"@rollup/rollup-android-arm-eabi@4.9.6": + version "4.9.6" + resolved "https://registry.yarnpkg.com/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.9.6.tgz#66b8d9cb2b3a474d115500f9ebaf43e2126fe496" + integrity sha512-MVNXSSYN6QXOulbHpLMKYi60ppyO13W9my1qogeiAqtjb2yR4LSmfU2+POvDkLzhjYLXz9Rf9+9a3zFHW1Lecg== + +"@rollup/rollup-android-arm64@4.9.6": + version "4.9.6" + resolved "https://registry.yarnpkg.com/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.9.6.tgz#46327d5b86420d2307946bec1535fdf00356e47d" + integrity sha512-T14aNLpqJ5wzKNf5jEDpv5zgyIqcpn1MlwCrUXLrwoADr2RkWA0vOWP4XxbO9aiO3dvMCQICZdKeDrFl7UMClw== + +"@rollup/rollup-darwin-arm64@4.9.6": + version "4.9.6" + resolved "https://registry.yarnpkg.com/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.9.6.tgz#166987224d2f8b1e2fd28ee90c447d52271d5e90" + integrity sha512-CqNNAyhRkTbo8VVZ5R85X73H3R5NX9ONnKbXuHisGWC0qRbTTxnF1U4V9NafzJbgGM0sHZpdO83pLPzq8uOZFw== + +"@rollup/rollup-darwin-x64@4.9.6": + version "4.9.6" + resolved "https://registry.yarnpkg.com/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.9.6.tgz#a2e6e096f74ccea6e2f174454c26aef6bcdd1274" + integrity sha512-zRDtdJuRvA1dc9Mp6BWYqAsU5oeLixdfUvkTHuiYOHwqYuQ4YgSmi6+/lPvSsqc/I0Omw3DdICx4Tfacdzmhog== + +"@rollup/rollup-linux-arm-gnueabihf@4.9.6": + version "4.9.6" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.9.6.tgz#09fcd4c55a2d6160c5865fec708a8e5287f30515" + integrity sha512-oNk8YXDDnNyG4qlNb6is1ojTOGL/tRhbbKeE/YuccItzerEZT68Z9gHrY3ROh7axDc974+zYAPxK5SH0j/G+QQ== + +"@rollup/rollup-linux-arm64-gnu@4.9.6": + version "4.9.6" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.9.6.tgz#19a3c0b6315c747ca9acf86e9b710cc2440f83c9" + integrity sha512-Z3O60yxPtuCYobrtzjo0wlmvDdx2qZfeAWTyfOjEDqd08kthDKexLpV97KfAeUXPosENKd8uyJMRDfFMxcYkDQ== + +"@rollup/rollup-linux-arm64-musl@4.9.6": + version "4.9.6" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.9.6.tgz#94aaf95fdaf2ad9335983a4552759f98e6b2e850" + integrity sha512-gpiG0qQJNdYEVad+1iAsGAbgAnZ8j07FapmnIAQgODKcOTjLEWM9sRb+MbQyVsYCnA0Im6M6QIq6ax7liws6eQ== + +"@rollup/rollup-linux-riscv64-gnu@4.9.6": + version "4.9.6" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.9.6.tgz#160510e63f4b12618af4013bddf1761cf9fc9880" + integrity sha512-+uCOcvVmFUYvVDr27aiyun9WgZk0tXe7ThuzoUTAukZJOwS5MrGbmSlNOhx1j80GdpqbOty05XqSl5w4dQvcOA== + +"@rollup/rollup-linux-x64-gnu@4.9.6": + version "4.9.6" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.9.6.tgz#5ac5d068ce0726bd0a96ca260d5bd93721c0cb98" + integrity sha512-HUNqM32dGzfBKuaDUBqFB7tP6VMN74eLZ33Q9Y1TBqRDn+qDonkAUyKWwF9BR9unV7QUzffLnz9GrnKvMqC/fw== + +"@rollup/rollup-linux-x64-musl@4.9.6": + version "4.9.6" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.9.6.tgz#bafa759ab43e8eab9edf242a8259ffb4f2a57a5d" + integrity sha512-ch7M+9Tr5R4FK40FHQk8VnML0Szi2KRujUgHXd/HjuH9ifH72GUmw6lStZBo3c3GB82vHa0ZoUfjfcM7JiiMrQ== + +"@rollup/rollup-win32-arm64-msvc@4.9.6": + version "4.9.6" + resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.9.6.tgz#1cc3416682e5a20d8f088f26657e6e47f8db468e" + integrity sha512-VD6qnR99dhmTQ1mJhIzXsRcTBvTjbfbGGwKAHcu+52cVl15AC/kplkhxzW/uT0Xl62Y/meBKDZvoJSJN+vTeGA== + +"@rollup/rollup-win32-ia32-msvc@4.9.6": + version "4.9.6" + resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.9.6.tgz#7d2251e1aa5e8a1e47c86891fe4547a939503461" + integrity sha512-J9AFDq/xiRI58eR2NIDfyVmTYGyIZmRcvcAoJ48oDld/NTR8wyiPUu2X/v1navJ+N/FGg68LEbX3Ejd6l8B7MQ== + +"@rollup/rollup-win32-x64-msvc@4.9.6": + version "4.9.6" + resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.9.6.tgz#2c1fb69e02a3f1506f52698cfdc3a8b6386df9a6" + integrity sha512-jqzNLhNDvIZOrt69Ce4UjGRpXJBzhUBzawMwnaDAwyHriki3XollsewxWzOzz+4yOFDkuJHtTsZFwMxhYJWmLQ== + +"@rushstack/eslint-patch@^1.1.0": + version "1.7.2" + resolved "https://registry.yarnpkg.com/@rushstack/eslint-patch/-/eslint-patch-1.7.2.tgz#2d4260033e199b3032a08b41348ac10de21c47e9" + integrity sha512-RbhOOTCNoCrbfkRyoXODZp75MlpiHMgbE5MEBZAnnnLyQNgrigEj4p0lzsMDyc1zVsJDLrivB58tgg3emX0eEA== + +"@seznam/compose-react-refs@^1.0.6": + version "1.0.6" + resolved "https://registry.yarnpkg.com/@seznam/compose-react-refs/-/compose-react-refs-1.0.6.tgz#6ec4e70bdd6e32f8e70b4100f27267cf306bd8df" + integrity sha512-izzOXQfeQLonzrIQb8u6LQ8dk+ymz3WXTIXjvOlTXHq6sbzROg3NWU+9TTAOpEoK9Bth24/6F/XrfHJ5yR5n6Q== + +"@sinclair/typebox@^0.24.1": + version "0.24.51" + resolved "https://registry.yarnpkg.com/@sinclair/typebox/-/typebox-0.24.51.tgz#645f33fe4e02defe26f2f5c0410e1c094eac7f5f" + integrity sha512-1P1OROm/rdubP5aFDSZQILU0vrLCJ4fvHt6EoqHEM+2D/G5MK3bIaymUKLit8Js9gbns5UyJnkP/TZROLw4tUA== + +"@sinclair/typebox@^0.27.8": + version "0.27.8" + resolved "https://registry.yarnpkg.com/@sinclair/typebox/-/typebox-0.27.8.tgz#6667fac16c436b5434a387a34dedb013198f6e6e" + integrity sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA== + +"@sinonjs/commons@^1.7.0": + version "1.8.6" + resolved "https://registry.yarnpkg.com/@sinonjs/commons/-/commons-1.8.6.tgz#80c516a4dc264c2a69115e7578d62581ff455ed9" + integrity sha512-Ky+XkAkqPZSm3NLBeUng77EBQl3cmeJhITaGHdYH8kjVB+aun3S4XBRti2zt17mtt0mIUDiNxYeoJm6drVvBJQ== + dependencies: + type-detect "4.0.8" + +"@sinonjs/commons@^3.0.0": + version "3.0.1" + resolved "https://registry.yarnpkg.com/@sinonjs/commons/-/commons-3.0.1.tgz#1029357e44ca901a615585f6d27738dbc89084cd" + integrity sha512-K3mCHKQ9sVh8o1C9cxkwxaOmXoAMlDxC1mYyHrjqOWEcBjYr76t96zL2zlj5dUGZ3HSw240X1qgH3Mjf1yJWpQ== + dependencies: + type-detect "4.0.8" + +"@sinonjs/fake-timers@^10.0.2": + version "10.3.0" + resolved "https://registry.yarnpkg.com/@sinonjs/fake-timers/-/fake-timers-10.3.0.tgz#55fdff1ecab9f354019129daf4df0dd4d923ea66" + integrity sha512-V4BG07kuYSUkTCSBHG8G8TNhM+F19jXFWnQtzj+we8DrkpSBCee9Z3Ms8yiGer/dlmhe35/Xdgyo3/0rQKg7YA== + dependencies: + "@sinonjs/commons" "^3.0.0" + +"@sinonjs/fake-timers@^8.0.1": + version "8.1.0" + resolved "https://registry.yarnpkg.com/@sinonjs/fake-timers/-/fake-timers-8.1.0.tgz#3fdc2b6cb58935b21bfb8d1625eb1300484316e7" + integrity sha512-OAPJUAtgeINhh/TAlUID4QTs53Njm7xzddaVlEs/SXwgtiD1tW22zAB/W1wdqfrpmikgaWQ9Fw6Ws+hsiRm5Vg== + dependencies: + "@sinonjs/commons" "^1.7.0" + +"@surma/rollup-plugin-off-main-thread@^2.2.3": + version "2.2.3" + resolved "https://registry.yarnpkg.com/@surma/rollup-plugin-off-main-thread/-/rollup-plugin-off-main-thread-2.2.3.tgz#ee34985952ca21558ab0d952f00298ad2190c053" + integrity sha512-lR8q/9W7hZpMWweNiAKU7NQerBnzQQLvi8qnTDU/fxItPhtZVMbPV3lbCwjhIlNBe9Bbr5V+KHshvWmVSG9cxQ== + dependencies: + ejs "^3.1.6" + json5 "^2.2.0" + magic-string "^0.25.0" + string.prototype.matchall "^4.0.6" + +"@svgr/babel-plugin-add-jsx-attribute@^5.4.0": + version "5.4.0" + resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-add-jsx-attribute/-/babel-plugin-add-jsx-attribute-5.4.0.tgz#81ef61947bb268eb9d50523446f9c638fb355906" + integrity sha512-ZFf2gs/8/6B8PnSofI0inYXr2SDNTDScPXhN7k5EqD4aZ3gi6u+rbmZHVB8IM3wDyx8ntKACZbtXSm7oZGRqVg== + +"@svgr/babel-plugin-remove-jsx-attribute@^5.4.0": + version "5.4.0" + resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-remove-jsx-attribute/-/babel-plugin-remove-jsx-attribute-5.4.0.tgz#6b2c770c95c874654fd5e1d5ef475b78a0a962ef" + integrity sha512-yaS4o2PgUtwLFGTKbsiAy6D0o3ugcUhWK0Z45umJ66EPWunAz9fuFw2gJuje6wqQvQWOTJvIahUwndOXb7QCPg== + +"@svgr/babel-plugin-remove-jsx-empty-expression@^5.0.1": + version "5.0.1" + resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-remove-jsx-empty-expression/-/babel-plugin-remove-jsx-empty-expression-5.0.1.tgz#25621a8915ed7ad70da6cea3d0a6dbc2ea933efd" + integrity sha512-LA72+88A11ND/yFIMzyuLRSMJ+tRKeYKeQ+mR3DcAZ5I4h5CPWN9AHyUzJbWSYp/u2u0xhmgOe0+E41+GjEueA== + +"@svgr/babel-plugin-replace-jsx-attribute-value@^5.0.1": + version "5.0.1" + resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-replace-jsx-attribute-value/-/babel-plugin-replace-jsx-attribute-value-5.0.1.tgz#0b221fc57f9fcd10e91fe219e2cd0dd03145a897" + integrity sha512-PoiE6ZD2Eiy5mK+fjHqwGOS+IXX0wq/YDtNyIgOrc6ejFnxN4b13pRpiIPbtPwHEc+NT2KCjteAcq33/F1Y9KQ== + +"@svgr/babel-plugin-svg-dynamic-title@^5.4.0": + version "5.4.0" + resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-svg-dynamic-title/-/babel-plugin-svg-dynamic-title-5.4.0.tgz#139b546dd0c3186b6e5db4fefc26cb0baea729d7" + integrity sha512-zSOZH8PdZOpuG1ZVx/cLVePB2ibo3WPpqo7gFIjLV9a0QsuQAzJiwwqmuEdTaW2pegyBE17Uu15mOgOcgabQZg== + +"@svgr/babel-plugin-svg-em-dimensions@^5.4.0": + version "5.4.0" + resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-svg-em-dimensions/-/babel-plugin-svg-em-dimensions-5.4.0.tgz#6543f69526632a133ce5cabab965deeaea2234a0" + integrity sha512-cPzDbDA5oT/sPXDCUYoVXEmm3VIoAWAPT6mSPTJNbQaBNUuEKVKyGH93oDY4e42PYHRW67N5alJx/eEol20abw== + +"@svgr/babel-plugin-transform-react-native-svg@^5.4.0": + version "5.4.0" + resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-transform-react-native-svg/-/babel-plugin-transform-react-native-svg-5.4.0.tgz#00bf9a7a73f1cad3948cdab1f8dfb774750f8c80" + integrity sha512-3eYP/SaopZ41GHwXma7Rmxcv9uRslRDTY1estspeB1w1ueZWd/tPlMfEOoccYpEMZU3jD4OU7YitnXcF5hLW2Q== + +"@svgr/babel-plugin-transform-svg-component@^5.5.0": + version "5.5.0" + resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-transform-svg-component/-/babel-plugin-transform-svg-component-5.5.0.tgz#583a5e2a193e214da2f3afeb0b9e8d3250126b4a" + integrity sha512-q4jSH1UUvbrsOtlo/tKcgSeiCHRSBdXoIoqX1pgcKK/aU3JD27wmMKwGtpB8qRYUYoyXvfGxUVKchLuR5pB3rQ== + +"@svgr/babel-preset@^5.5.0": + version "5.5.0" + resolved "https://registry.yarnpkg.com/@svgr/babel-preset/-/babel-preset-5.5.0.tgz#8af54f3e0a8add7b1e2b0fcd5a882c55393df327" + integrity sha512-4FiXBjvQ+z2j7yASeGPEi8VD/5rrGQk4Xrq3EdJmoZgz/tpqChpo5hgXDvmEauwtvOc52q8ghhZK4Oy7qph4ig== + dependencies: + "@svgr/babel-plugin-add-jsx-attribute" "^5.4.0" + "@svgr/babel-plugin-remove-jsx-attribute" "^5.4.0" + "@svgr/babel-plugin-remove-jsx-empty-expression" "^5.0.1" + "@svgr/babel-plugin-replace-jsx-attribute-value" "^5.0.1" + "@svgr/babel-plugin-svg-dynamic-title" "^5.4.0" + "@svgr/babel-plugin-svg-em-dimensions" "^5.4.0" + "@svgr/babel-plugin-transform-react-native-svg" "^5.4.0" + "@svgr/babel-plugin-transform-svg-component" "^5.5.0" + +"@svgr/core@^5.5.0": + version "5.5.0" + resolved "https://registry.yarnpkg.com/@svgr/core/-/core-5.5.0.tgz#82e826b8715d71083120fe8f2492ec7d7874a579" + integrity sha512-q52VOcsJPvV3jO1wkPtzTuKlvX7Y3xIcWRpCMtBF3MrteZJtBfQw/+u0B1BHy5ColpQc1/YVTrPEtSYIMNZlrQ== + dependencies: + "@svgr/plugin-jsx" "^5.5.0" + camelcase "^6.2.0" + cosmiconfig "^7.0.0" + +"@svgr/hast-util-to-babel-ast@^5.5.0": + version "5.5.0" + resolved "https://registry.yarnpkg.com/@svgr/hast-util-to-babel-ast/-/hast-util-to-babel-ast-5.5.0.tgz#5ee52a9c2533f73e63f8f22b779f93cd432a5461" + integrity sha512-cAaR/CAiZRB8GP32N+1jocovUtvlj0+e65TB50/6Lcime+EA49m/8l+P2ko+XPJ4dw3xaPS3jOL4F2X4KWxoeQ== + dependencies: + "@babel/types" "^7.12.6" + +"@svgr/plugin-jsx@^5.5.0": + version "5.5.0" + resolved "https://registry.yarnpkg.com/@svgr/plugin-jsx/-/plugin-jsx-5.5.0.tgz#1aa8cd798a1db7173ac043466d7b52236b369000" + integrity sha512-V/wVh33j12hGh05IDg8GpIUXbjAPnTdPTKuP4VNLggnwaHMPNQNae2pRnyTAILWCQdz5GyMqtO488g7CKM8CBA== + dependencies: + "@babel/core" "^7.12.3" + "@svgr/babel-preset" "^5.5.0" + "@svgr/hast-util-to-babel-ast" "^5.5.0" + svg-parser "^2.0.2" + +"@svgr/plugin-svgo@^5.5.0": + version "5.5.0" + resolved "https://registry.yarnpkg.com/@svgr/plugin-svgo/-/plugin-svgo-5.5.0.tgz#02da55d85320549324e201c7b2e53bf431fcc246" + integrity sha512-r5swKk46GuQl4RrVejVwpeeJaydoxkdwkM1mBKOgJLBUJPGaLci6ylg/IjhrRsREKDkr4kbMWdgOtbXEh0fyLQ== + dependencies: + cosmiconfig "^7.0.0" + deepmerge "^4.2.2" + svgo "^1.2.2" + +"@svgr/webpack@^5.5.0": + version "5.5.0" + resolved "https://registry.yarnpkg.com/@svgr/webpack/-/webpack-5.5.0.tgz#aae858ee579f5fa8ce6c3166ef56c6a1b381b640" + integrity sha512-DOBOK255wfQxguUta2INKkzPj6AIS6iafZYiYmHn6W3pHlycSRRlvWKCfLDG10fXfLWqE3DJHgRUOyJYmARa7g== + dependencies: + "@babel/core" "^7.12.3" + "@babel/plugin-transform-react-constant-elements" "^7.12.1" + "@babel/preset-env" "^7.12.1" + "@babel/preset-react" "^7.12.5" + "@svgr/core" "^5.5.0" + "@svgr/plugin-jsx" "^5.5.0" + "@svgr/plugin-svgo" "^5.5.0" + loader-utils "^2.0.0" + +"@testing-library/dom@^9.0.0": + version "9.3.4" + resolved "https://registry.yarnpkg.com/@testing-library/dom/-/dom-9.3.4.tgz#50696ec28376926fec0a1bf87d9dbac5e27f60ce" + integrity sha512-FlS4ZWlp97iiNWig0Muq8p+3rVDjRiYE+YKGbAqXOu9nwJFFOdL00kFpz42M+4huzYi86vAK1sOOfyOG45muIQ== + dependencies: + "@babel/code-frame" "^7.10.4" + "@babel/runtime" "^7.12.5" + "@types/aria-query" "^5.0.1" + aria-query "5.1.3" + chalk "^4.1.0" + dom-accessibility-api "^0.5.9" + lz-string "^1.5.0" + pretty-format "^27.0.2" + +"@testing-library/jest-dom@^6.4.0": + version "6.4.0" + resolved "https://registry.yarnpkg.com/@testing-library/jest-dom/-/jest-dom-6.4.0.tgz#e7391967af57273effdaa181fc291be0ecc155bd" + integrity sha512-GgGT3OR8qhIjk2SBMy51AYDWoMnAyR/cwjZO4SttuBmIQ9wWy9QmVOeaSbgT5Bm0J6qLBaf4+dsJWfisvafoaA== + dependencies: + "@adobe/css-tools" "^4.3.2" + "@babel/runtime" "^7.9.2" + aria-query "^5.0.0" + chalk "^3.0.0" + css.escape "^1.5.1" + dom-accessibility-api "^0.6.3" + lodash "^4.17.15" + redent "^3.0.0" + +"@testing-library/react@^14.1.2": + version "14.1.2" + resolved "https://registry.yarnpkg.com/@testing-library/react/-/react-14.1.2.tgz#a2b9e9ee87721ec9ed2d7cfc51cc04e474537c32" + integrity sha512-z4p7DVBTPjKM5qDZ0t5ZjzkpSNb+fZy1u6bzO7kk8oeGagpPCAtgh4cx1syrfp7a+QWkM021jGqjJaxJJnXAZg== + dependencies: + "@babel/runtime" "^7.12.5" + "@testing-library/dom" "^9.0.0" + "@types/react-dom" "^18.0.0" + +"@testing-library/user-event@^14.5.2": + version "14.5.2" + resolved "https://registry.yarnpkg.com/@testing-library/user-event/-/user-event-14.5.2.tgz#db7257d727c891905947bd1c1a99da20e03c2ebd" + integrity sha512-YAh82Wh4TIrxYLmfGcixwD18oIjyC1pFQC2Y01F2lzV2HTMiYrI0nze0FD0ocB//CKS/7jIUgae+adPqxK5yCQ== + +"@tootallnate/once@1": + version "1.1.2" + resolved "https://registry.yarnpkg.com/@tootallnate/once/-/once-1.1.2.tgz#ccb91445360179a04e7fe6aff78c00ffc1eeaf82" + integrity sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw== + +"@trysound/sax@0.2.0": + version "0.2.0" + resolved "https://registry.yarnpkg.com/@trysound/sax/-/sax-0.2.0.tgz#cccaab758af56761eb7bf37af6f03f326dd798ad" + integrity sha512-L7z9BgrNEcYyUYtF+HaEfiS5ebkh9jXqbszz7pC0hRBPaatV0XjSD3+eHrpqFemQfgwiFF0QPIarnIihIDn7OA== + +"@types/aria-query@^5.0.1": + version "5.0.4" + resolved "https://registry.yarnpkg.com/@types/aria-query/-/aria-query-5.0.4.tgz#1a31c3d378850d2778dabb6374d036dcba4ba708" + integrity sha512-rfT93uj5s0PRL7EzccGMs3brplhcrghnDoV26NqKhCAS1hVo+WdNsPvE/yb6ilfr5hi2MEk6d5EWJTKdxg8jVw== + +"@types/babel__core@^7.0.0", "@types/babel__core@^7.1.14", "@types/babel__core@^7.20.5": + version "7.20.5" + resolved "https://registry.yarnpkg.com/@types/babel__core/-/babel__core-7.20.5.tgz#3df15f27ba85319caa07ba08d0721889bb39c017" + integrity sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA== + dependencies: + "@babel/parser" "^7.20.7" + "@babel/types" "^7.20.7" + "@types/babel__generator" "*" + "@types/babel__template" "*" + "@types/babel__traverse" "*" + +"@types/babel__generator@*": + version "7.6.8" + resolved "https://registry.yarnpkg.com/@types/babel__generator/-/babel__generator-7.6.8.tgz#f836c61f48b1346e7d2b0d93c6dacc5b9535d3ab" + integrity sha512-ASsj+tpEDsEiFr1arWrlN6V3mdfjRMZt6LtK/Vp/kreFLnr5QH5+DhvD5nINYZXzwJvXeGq+05iUXcAzVrqWtw== + dependencies: + "@babel/types" "^7.0.0" + +"@types/babel__template@*": + version "7.4.4" + resolved "https://registry.yarnpkg.com/@types/babel__template/-/babel__template-7.4.4.tgz#5672513701c1b2199bc6dad636a9d7491586766f" + integrity sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A== + dependencies: + "@babel/parser" "^7.1.0" + "@babel/types" "^7.0.0" + +"@types/babel__traverse@*", "@types/babel__traverse@^7.0.4", "@types/babel__traverse@^7.0.6": + version "7.20.5" + resolved "https://registry.yarnpkg.com/@types/babel__traverse/-/babel__traverse-7.20.5.tgz#7b7502be0aa80cc4ef22978846b983edaafcd4dd" + integrity sha512-WXCyOcRtH37HAUkpXhUduaxdm82b4GSlyTqajXviN4EfiuPgNYR109xMCKvpl6zPIpua0DGlMEDCq+g8EdoheQ== + dependencies: + "@babel/types" "^7.20.7" + +"@types/body-parser@*": + version "1.19.5" + resolved "https://registry.yarnpkg.com/@types/body-parser/-/body-parser-1.19.5.tgz#04ce9a3b677dc8bd681a17da1ab9835dc9d3ede4" + integrity sha512-fB3Zu92ucau0iQ0JMCFQE7b/dv8Ot07NI3KaZIkIUNXq82k4eBAqUaneXfleGY9JWskeS9y+u0nXMyspcuQrCg== + dependencies: + "@types/connect" "*" + "@types/node" "*" + +"@types/bonjour@^3.5.9": + version "3.5.13" + resolved "https://registry.yarnpkg.com/@types/bonjour/-/bonjour-3.5.13.tgz#adf90ce1a105e81dd1f9c61fdc5afda1bfb92956" + integrity sha512-z9fJ5Im06zvUL548KvYNecEVlA7cVDkGUi6kZusb04mpyEFKCIZJvloCcmpmLaIahDpOQGHaHmG6imtPMmPXGQ== + dependencies: + "@types/node" "*" + +"@types/connect-history-api-fallback@^1.3.5": + version "1.5.4" + resolved "https://registry.yarnpkg.com/@types/connect-history-api-fallback/-/connect-history-api-fallback-1.5.4.tgz#7de71645a103056b48ac3ce07b3520b819c1d5b3" + integrity sha512-n6Cr2xS1h4uAulPRdlw6Jl6s1oG8KrVilPN2yUITEs+K48EzMJJ3W1xy8K5eWuFvjp3R74AOIGSmp2UfBJ8HFw== + dependencies: + "@types/express-serve-static-core" "*" + "@types/node" "*" + +"@types/connect@*": + version "3.4.38" + resolved "https://registry.yarnpkg.com/@types/connect/-/connect-3.4.38.tgz#5ba7f3bc4fbbdeaff8dded952e5ff2cc53f8d858" + integrity sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug== + dependencies: + "@types/node" "*" + +"@types/eslint-scope@^3.7.3": + version "3.7.7" + resolved "https://registry.yarnpkg.com/@types/eslint-scope/-/eslint-scope-3.7.7.tgz#3108bd5f18b0cdb277c867b3dd449c9ed7079ac5" + integrity sha512-MzMFlSLBqNF2gcHWO0G1vP/YQyfvrxZ0bF+u7mzUdZ1/xK4A4sru+nraZz5i3iEIk1l1uyicaDVTB4QbbEkAYg== + dependencies: + "@types/eslint" "*" + "@types/estree" "*" + +"@types/eslint@*", "@types/eslint@^7.29.0 || ^8.4.1": + version "8.56.2" + resolved "https://registry.yarnpkg.com/@types/eslint/-/eslint-8.56.2.tgz#1c72a9b794aa26a8b94ad26d5b9aa51c8a6384bb" + integrity sha512-uQDwm1wFHmbBbCZCqAlq6Do9LYwByNZHWzXppSnay9SuwJ+VRbjkbLABer54kcPnMSlG6Fdiy2yaFXm/z9Z5gw== + dependencies: + "@types/estree" "*" + "@types/json-schema" "*" + +"@types/estree@*", "@types/estree@1.0.5", "@types/estree@^1.0.5": + version "1.0.5" + resolved "https://registry.yarnpkg.com/@types/estree/-/estree-1.0.5.tgz#a6ce3e556e00fd9895dd872dd172ad0d4bd687f4" + integrity sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw== + +"@types/estree@0.0.39": + version "0.0.39" + resolved "https://registry.yarnpkg.com/@types/estree/-/estree-0.0.39.tgz#e177e699ee1b8c22d23174caaa7422644389509f" + integrity sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw== + +"@types/express-serve-static-core@*", "@types/express-serve-static-core@^4.17.33": + version "4.17.42" + resolved "https://registry.yarnpkg.com/@types/express-serve-static-core/-/express-serve-static-core-4.17.42.tgz#2a276952acc73d1b8dc63fd4210647abbc553a71" + integrity sha512-ckM3jm2bf/MfB3+spLPWYPUH573plBFwpOhqQ2WottxYV85j1HQFlxmnTq57X1yHY9awZPig06hL/cLMgNWHIQ== + dependencies: + "@types/node" "*" + "@types/qs" "*" + "@types/range-parser" "*" + "@types/send" "*" + +"@types/express@*", "@types/express@^4.17.13": + version "4.17.21" + resolved "https://registry.yarnpkg.com/@types/express/-/express-4.17.21.tgz#c26d4a151e60efe0084b23dc3369ebc631ed192d" + integrity sha512-ejlPM315qwLpaQlQDTjPdsUFSc6ZsP4AN6AlWnogPjQ7CVi7PYF3YVz+CY3jE2pwYf7E/7HlDAN0rV2GxTG0HQ== + dependencies: + "@types/body-parser" "*" + "@types/express-serve-static-core" "^4.17.33" + "@types/qs" "*" + "@types/serve-static" "*" + +"@types/fs-extra@^11.0.1": + version "11.0.4" + resolved "https://registry.yarnpkg.com/@types/fs-extra/-/fs-extra-11.0.4.tgz#e16a863bb8843fba8c5004362b5a73e17becca45" + integrity sha512-yTbItCNreRooED33qjunPthRcSjERP1r4MqCZc7wv0u2sUkzTFp45tgUfS5+r7FrZPdmCCNflLhVSP/o+SemsQ== + dependencies: + "@types/jsonfile" "*" + "@types/node" "*" + +"@types/graceful-fs@^4.1.2", "@types/graceful-fs@^4.1.3": + version "4.1.9" + resolved "https://registry.yarnpkg.com/@types/graceful-fs/-/graceful-fs-4.1.9.tgz#2a06bc0f68a20ab37b3e36aa238be6abdf49e8b4" + integrity sha512-olP3sd1qOEe5dXTSaFvQG+02VdRXcdytWLAZsAq1PecU8uqQAhkrnbli7DagjtXKW/Bl7YJbUsa8MPcuc8LHEQ== + dependencies: + "@types/node" "*" + +"@types/html-minifier-terser@^6.0.0": + version "6.1.0" + resolved "https://registry.yarnpkg.com/@types/html-minifier-terser/-/html-minifier-terser-6.1.0.tgz#4fc33a00c1d0c16987b1a20cf92d20614c55ac35" + integrity sha512-oh/6byDPnL1zeNXFrDXFLyZjkr1MsBG667IM792caf1L2UPOOMf65NFzjUH/ltyfwjAGfs1rsX1eftK0jC/KIg== + +"@types/http-errors@*": + version "2.0.4" + resolved "https://registry.yarnpkg.com/@types/http-errors/-/http-errors-2.0.4.tgz#7eb47726c391b7345a6ec35ad7f4de469cf5ba4f" + integrity sha512-D0CFMMtydbJAegzOyHjtiKPLlvnm3iTZyZRSZoLq2mRhDdmLfIWOCYPfQJ4cu2erKghU++QvjcUjp/5h7hESpA== + +"@types/http-proxy@^1.17.8": + version "1.17.14" + resolved "https://registry.yarnpkg.com/@types/http-proxy/-/http-proxy-1.17.14.tgz#57f8ccaa1c1c3780644f8a94f9c6b5000b5e2eec" + integrity sha512-SSrD0c1OQzlFX7pGu1eXxSEjemej64aaNPRhhVYUGqXh0BtldAAx37MG8btcumvpgKyZp1F5Gn3JkktdxiFv6w== + dependencies: + "@types/node" "*" + +"@types/istanbul-lib-coverage@*", "@types/istanbul-lib-coverage@^2.0.0", "@types/istanbul-lib-coverage@^2.0.1": + version "2.0.6" + resolved "https://registry.yarnpkg.com/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.6.tgz#7739c232a1fee9b4d3ce8985f314c0c6d33549d7" + integrity sha512-2QF/t/auWm0lsy8XtKVPG19v3sSOQlJe/YHZgfjb/KBBHOGSV+J2q/S671rcq9uTBrLAXmZpqJiaQbMT+zNU1w== + +"@types/istanbul-lib-report@*": + version "3.0.3" + resolved "https://registry.yarnpkg.com/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.3.tgz#53047614ae72e19fc0401d872de3ae2b4ce350bf" + integrity sha512-NQn7AHQnk/RSLOxrBbGyJM/aVQ+pjj5HCgasFxc0K/KhoATfQ/47AyUl15I2yBUpihjmas+a+VJBOqecrFH+uA== + dependencies: + "@types/istanbul-lib-coverage" "*" + +"@types/istanbul-reports@^3.0.0": + version "3.0.4" + resolved "https://registry.yarnpkg.com/@types/istanbul-reports/-/istanbul-reports-3.0.4.tgz#0f03e3d2f670fbdac586e34b433783070cc16f54" + integrity sha512-pk2B1NWalF9toCRu6gjBzR69syFjP4Od8WRAX+0mmf9lAjCRicLOWc+ZrxZHx/0XRjotgkF9t6iaMJ+aXcOdZQ== + dependencies: + "@types/istanbul-lib-report" "*" + +"@types/jest@^29.5.11": + version "29.5.11" + resolved "https://registry.yarnpkg.com/@types/jest/-/jest-29.5.11.tgz#0c13aa0da7d0929f078ab080ae5d4ced80fa2f2c" + integrity sha512-S2mHmYIVe13vrm6q4kN6fLYYAka15ALQki/vgDC3mIukEOx8WJlv0kQPM+d4w8Gp6u0uSdKND04IlTXBv0rwnQ== + dependencies: + expect "^29.0.0" + pretty-format "^29.0.0" + +"@types/json-schema@*", "@types/json-schema@^7.0.12", "@types/json-schema@^7.0.4", "@types/json-schema@^7.0.5", "@types/json-schema@^7.0.8", "@types/json-schema@^7.0.9": + version "7.0.15" + resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.15.tgz#596a1747233694d50f6ad8a7869fcb6f56cf5841" + integrity sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA== + +"@types/json5@^0.0.29": + version "0.0.29" + resolved "https://registry.yarnpkg.com/@types/json5/-/json5-0.0.29.tgz#ee28707ae94e11d2b827bcbe5270bcea7f3e71ee" + integrity sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ== + +"@types/jsonfile@*": + version "6.1.4" + resolved "https://registry.yarnpkg.com/@types/jsonfile/-/jsonfile-6.1.4.tgz#614afec1a1164e7d670b4a7ad64df3e7beb7b702" + integrity sha512-D5qGUYwjvnNNextdU59/+fI+spnwtTFmyQP0h+PfIOSkNfpU6AOICUOkm4i0OnSk+NyjdPJrxCDro0sJsWlRpQ== + dependencies: + "@types/node" "*" + +"@types/lodash-es@^4.17.8": + version "4.17.12" + resolved "https://registry.yarnpkg.com/@types/lodash-es/-/lodash-es-4.17.12.tgz#65f6d1e5f80539aa7cfbfc962de5def0cf4f341b" + integrity sha512-0NgftHUcV4v34VhXm8QBSftKVXtbkBG3ViCjs6+eJ5a6y6Mi/jiFGPc1sC7QK+9BFhWrURE3EOggmWaSxL9OzQ== + dependencies: + "@types/lodash" "*" + +"@types/lodash@*": + version "4.14.202" + resolved "https://registry.yarnpkg.com/@types/lodash/-/lodash-4.14.202.tgz#f09dbd2fb082d507178b2f2a5c7e74bd72ff98f8" + integrity sha512-OvlIYQK9tNneDlS0VN54LLd5uiPCBOp7gS5Z0f1mjoJYBrtStzgmJBxONW3U6OZqdtNzZPmn9BS/7WI7BFFcFQ== + +"@types/mime@*": + version "3.0.4" + resolved "https://registry.yarnpkg.com/@types/mime/-/mime-3.0.4.tgz#2198ac274de6017b44d941e00261d5bc6a0e0a45" + integrity sha512-iJt33IQnVRkqeqC7PzBHPTC6fDlRNRW8vjrgqtScAhrmMwe8c4Eo7+fUGTa+XdWrpEgpyKWMYmi2dIwMAYRzPw== + +"@types/mime@^1": + version "1.3.5" + resolved "https://registry.yarnpkg.com/@types/mime/-/mime-1.3.5.tgz#1ef302e01cf7d2b5a0fa526790c9123bf1d06690" + integrity sha512-/pyBZWSLD2n0dcHE3hq8s8ZvcETHtEuF+3E7XVt0Ig2nvsVQXdghHVcEkIWjy9A0wKfTn97a/PSDYohKIlnP/w== + +"@types/node-forge@^1.3.0": + version "1.3.11" + resolved "https://registry.yarnpkg.com/@types/node-forge/-/node-forge-1.3.11.tgz#0972ea538ddb0f4d9c2fa0ec5db5724773a604da" + integrity sha512-FQx220y22OKNTqaByeBGqHWYz4cl94tpcxeFdvBo3wjG6XPBuZ0BNgNZRV5J5TFmmcsJ4IzsLkmGRiQbnYsBEQ== + dependencies: + "@types/node" "*" + +"@types/node@*": + version "20.11.11" + resolved "https://registry.yarnpkg.com/@types/node/-/node-20.11.11.tgz#6dbe0e5a94b94bb23bf56fca26be3ade2a714efd" + integrity sha512-PlJCXfb57Jrman0H1BxO2+Q7qwih2Mwk7T6Gvixj+SK4mqs4RWOGMMoP6p/LFa3UrP2CZOO6ai6otd7J/TB6Ug== + dependencies: + undici-types "~5.26.4" + +"@types/parse-json@^4.0.0": + version "4.0.2" + resolved "https://registry.yarnpkg.com/@types/parse-json/-/parse-json-4.0.2.tgz#5950e50960793055845e956c427fc2b0d70c5239" + integrity sha512-dISoDXWWQwUquiKsyZ4Ng+HX2KsPL7LyHKHQwgGFEA3IaKac4Obd+h2a/a6waisAoepJlBcx9paWqjA8/HVjCw== + +"@types/prettier@^2.1.5": + version "2.7.3" + resolved "https://registry.yarnpkg.com/@types/prettier/-/prettier-2.7.3.tgz#3e51a17e291d01d17d3fc61422015a933af7a08f" + integrity sha512-+68kP9yzs4LMp7VNh8gdzMSPZFL44MLGqiHWvttYJe+6qnuVr4Ek9wSBQoveqY/r+LwjCcU29kNVkidwim+kYA== + +"@types/prop-types@*", "@types/prop-types@^15.7.11": + version "15.7.11" + resolved "https://registry.yarnpkg.com/@types/prop-types/-/prop-types-15.7.11.tgz#2596fb352ee96a1379c657734d4b913a613ad563" + integrity sha512-ga8y9v9uyeiLdpKddhxYQkxNDrfvuPrlFb0N1qnZZByvcElJaXthF1UhvCh9TLWJBEHeNtdnbysW7Y6Uq8CVng== + +"@types/q@^1.5.1": + version "1.5.8" + resolved "https://registry.yarnpkg.com/@types/q/-/q-1.5.8.tgz#95f6c6a08f2ad868ba230ead1d2d7f7be3db3837" + integrity sha512-hroOstUScF6zhIi+5+x0dzqrHA1EJi+Irri6b1fxolMTqqHIV/Cg77EtnQcZqZCu8hR3mX2BzIxN4/GzI68Kfw== + +"@types/qs@*": + version "6.9.11" + resolved "https://registry.yarnpkg.com/@types/qs/-/qs-6.9.11.tgz#208d8a30bc507bd82e03ada29e4732ea46a6bbda" + integrity sha512-oGk0gmhnEJK4Yyk+oI7EfXsLayXatCWPHary1MtcmbAifkobT9cM9yutG/hZKIseOU0MqbIwQ/u2nn/Gb+ltuQ== + +"@types/range-parser@*": + version "1.2.7" + resolved "https://registry.yarnpkg.com/@types/range-parser/-/range-parser-1.2.7.tgz#50ae4353eaaddc04044279812f52c8c65857dbcb" + integrity sha512-hKormJbkJqzQGhziax5PItDUTMAM9uE2XXQmM37dyd4hVM+5aVl7oVxMVUiVQn2oCQFN/LKCZdvSM0pFRqbSmQ== + +"@types/react-dom@^18.0.0", "@types/react-dom@^18.2.17": + version "18.2.18" + resolved "https://registry.yarnpkg.com/@types/react-dom/-/react-dom-18.2.18.tgz#16946e6cd43971256d874bc3d0a72074bb8571dd" + integrity sha512-TJxDm6OfAX2KJWJdMEVTwWke5Sc/E/RlnPGvGfS0W7+6ocy2xhDVQVh/KvC2Uf7kACs+gDytdusDSdWfWkaNzw== + dependencies: + "@types/react" "*" + +"@types/react-transition-group@^4.4.10": + version "4.4.10" + resolved "https://registry.yarnpkg.com/@types/react-transition-group/-/react-transition-group-4.4.10.tgz#6ee71127bdab1f18f11ad8fb3322c6da27c327ac" + integrity sha512-hT/+s0VQs2ojCX823m60m5f0sL5idt9SO6Tj6Dg+rdphGPIeJbJ6CxvBYkgkGKrYeDjvIpKTR38UzmtHJOGW3Q== + dependencies: + "@types/react" "*" + +"@types/react@*", "@types/react@^18.2.43": + version "18.2.48" + resolved "https://registry.yarnpkg.com/@types/react/-/react-18.2.48.tgz#11df5664642d0bd879c1f58bc1d37205b064e8f1" + integrity sha512-qboRCl6Ie70DQQG9hhNREz81jqC1cs9EVNcjQ1AU+jH6NFfSAhVVbrrY/+nSF+Bsk4AOwm9Qa61InvMCyV+H3w== + dependencies: + "@types/prop-types" "*" + "@types/scheduler" "*" + csstype "^3.0.2" + +"@types/resolve@1.17.1": + version "1.17.1" + resolved "https://registry.yarnpkg.com/@types/resolve/-/resolve-1.17.1.tgz#3afd6ad8967c77e4376c598a82ddd58f46ec45d6" + integrity sha512-yy7HuzQhj0dhGpD8RLXSZWEkLsV9ibvxvi6EiJ3bkqLAO1RGo0WbkWQiwpRlSFymTJRz0d3k5LM3kkx8ArDbLw== + dependencies: + "@types/node" "*" + +"@types/retry@0.12.0": + version "0.12.0" + resolved "https://registry.yarnpkg.com/@types/retry/-/retry-0.12.0.tgz#2b35eccfcee7d38cd72ad99232fbd58bffb3c84d" + integrity sha512-wWKOClTTiizcZhXnPY4wikVAwmdYHp8q6DmC+EJUzAMsycb7HB32Kh9RN4+0gExjmPmZSAQjgURXIGATPegAvA== + +"@types/scheduler@*": + version "0.16.8" + resolved "https://registry.yarnpkg.com/@types/scheduler/-/scheduler-0.16.8.tgz#ce5ace04cfeabe7ef87c0091e50752e36707deff" + integrity sha512-WZLiwShhwLRmeV6zH+GkbOFT6Z6VklCItrDioxUnv+u4Ll+8vKeFySoFyK/0ctcRpOmwAicELfmys1sDc/Rw+A== + +"@types/semver@^7.3.12", "@types/semver@^7.5.0": + version "7.5.6" + resolved "https://registry.yarnpkg.com/@types/semver/-/semver-7.5.6.tgz#c65b2bfce1bec346582c07724e3f8c1017a20339" + integrity sha512-dn1l8LaMea/IjDoHNd9J52uBbInB796CDffS6VdIxvqYCPSG0V0DzHp76GpaWnlhg88uYyPbXCDIowa86ybd5A== + +"@types/send@*": + version "0.17.4" + resolved "https://registry.yarnpkg.com/@types/send/-/send-0.17.4.tgz#6619cd24e7270793702e4e6a4b958a9010cfc57a" + integrity sha512-x2EM6TJOybec7c52BX0ZspPodMsQUd5L6PRwOunVyVUhXiBSKf3AezDL8Dgvgt5o0UfKNfuA0eMLr2wLT4AiBA== + dependencies: + "@types/mime" "^1" + "@types/node" "*" + +"@types/serve-index@^1.9.1": + version "1.9.4" + resolved "https://registry.yarnpkg.com/@types/serve-index/-/serve-index-1.9.4.tgz#e6ae13d5053cb06ed36392110b4f9a49ac4ec898" + integrity sha512-qLpGZ/c2fhSs5gnYsQxtDEq3Oy8SXPClIXkW5ghvAvsNuVSA8k+gCONcUCS/UjLEYvYps+e8uBtfgXgvhwfNug== + dependencies: + "@types/express" "*" + +"@types/serve-static@*", "@types/serve-static@^1.13.10": + version "1.15.5" + resolved "https://registry.yarnpkg.com/@types/serve-static/-/serve-static-1.15.5.tgz#15e67500ec40789a1e8c9defc2d32a896f05b033" + integrity sha512-PDRk21MnK70hja/YF8AHfC7yIsiQHn1rcXx7ijCFBX/k+XQJhQT/gw3xekXKJvx+5SXaMMS8oqQy09Mzvz2TuQ== + dependencies: + "@types/http-errors" "*" + "@types/mime" "*" + "@types/node" "*" + +"@types/sockjs@^0.3.33": + version "0.3.36" + resolved "https://registry.yarnpkg.com/@types/sockjs/-/sockjs-0.3.36.tgz#ce322cf07bcc119d4cbf7f88954f3a3bd0f67535" + integrity sha512-MK9V6NzAS1+Ud7JV9lJLFqW85VbC9dq3LmwZCuBe4wBDgKC0Kj/jd8Xl+nSviU+Qc3+m7umHHyHg//2KSa0a0Q== + dependencies: + "@types/node" "*" + +"@types/stack-utils@^2.0.0": + version "2.0.3" + resolved "https://registry.yarnpkg.com/@types/stack-utils/-/stack-utils-2.0.3.tgz#6209321eb2c1712a7e7466422b8cb1fc0d9dd5d8" + integrity sha512-9aEbYZ3TbYMznPdcdr3SmIrLXwC/AKZXQeCf9Pgao5CKb8CyHuEX5jzWPTkvregvhRJHcpRO6BFoGW9ycaOkYw== + +"@types/trusted-types@^2.0.2": + version "2.0.7" + resolved "https://registry.yarnpkg.com/@types/trusted-types/-/trusted-types-2.0.7.tgz#baccb07a970b91707df3a3e8ba6896c57ead2d11" + integrity sha512-ScaPdn1dQczgbl0QFTeTOmVHFULt394XJgOQNoyVhZ6r2vLnMLJfBPd53SB52T/3G36VI1/g2MZaX0cwDuXsfw== + +"@types/ws@^8.5.5": + version "8.5.10" + resolved "https://registry.yarnpkg.com/@types/ws/-/ws-8.5.10.tgz#4acfb517970853fa6574a3a6886791d04a396787" + integrity sha512-vmQSUcfalpIq0R9q7uTo2lXs6eGIpt9wtnLdMv9LVpIjCA/+ufZRozlVoVelIYixx1ugCBKDhn89vnsEGOCx9A== + dependencies: + "@types/node" "*" + +"@types/yargs-parser@*": + version "21.0.3" + resolved "https://registry.yarnpkg.com/@types/yargs-parser/-/yargs-parser-21.0.3.tgz#815e30b786d2e8f0dcd85fd5bcf5e1a04d008f15" + integrity sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ== + +"@types/yargs@^16.0.0": + version "16.0.9" + resolved "https://registry.yarnpkg.com/@types/yargs/-/yargs-16.0.9.tgz#ba506215e45f7707e6cbcaf386981155b7ab956e" + integrity sha512-tHhzvkFXZQeTECenFoRljLBYPZJ7jAVxqqtEI0qTLOmuultnFp4I9yKE17vTuhf7BkhCu7I4XuemPgikDVuYqA== + dependencies: + "@types/yargs-parser" "*" + +"@types/yargs@^17.0.8": + version "17.0.32" + resolved "https://registry.yarnpkg.com/@types/yargs/-/yargs-17.0.32.tgz#030774723a2f7faafebf645f4e5a48371dca6229" + integrity sha512-xQ67Yc/laOG5uMfX/093MRlGGCIBzZMarVa+gfNKJxWAIgykYpVGkBdbqEzGDDfCrVUj6Hiff4mTZ5BA6TmAog== + dependencies: + "@types/yargs-parser" "*" + +"@types/yarnpkg__lockfile@^1.1.6": + version "1.1.9" + resolved "https://registry.yarnpkg.com/@types/yarnpkg__lockfile/-/yarnpkg__lockfile-1.1.9.tgz#b3c8e8d66dc8ce79827f422a660a557cda9ded14" + integrity sha512-GD4Fk15UoP5NLCNor51YdfL9MSdldKCqOC9EssrRw3HVfar9wUZ5y8Lfnp+qVD6hIinLr8ygklDYnmlnlQo12Q== + +"@typescript-eslint/eslint-plugin@^5.5.0": + version "5.62.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.62.0.tgz#aeef0328d172b9e37d9bab6dbc13b87ed88977db" + integrity sha512-TiZzBSJja/LbhNPvk6yc0JrX9XqhQ0hdh6M2svYfsHGejaKFIAGd9MQ+ERIMzLGlN/kZoYIgdxFV0PuljTKXag== + dependencies: + "@eslint-community/regexpp" "^4.4.0" + "@typescript-eslint/scope-manager" "5.62.0" + "@typescript-eslint/type-utils" "5.62.0" + "@typescript-eslint/utils" "5.62.0" + debug "^4.3.4" + graphemer "^1.4.0" + ignore "^5.2.0" + natural-compare-lite "^1.4.0" + semver "^7.3.7" + tsutils "^3.21.0" + +"@typescript-eslint/eslint-plugin@^6.14.0": + version "6.20.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-6.20.0.tgz#9cf31546d2d5e884602626d89b0e0d2168ac25ed" + integrity sha512-fTwGQUnjhoYHeSF6m5pWNkzmDDdsKELYrOBxhjMrofPqCkoC2k3B2wvGHFxa1CTIqkEn88nlW1HVMztjo2K8Hg== + dependencies: + "@eslint-community/regexpp" "^4.5.1" + "@typescript-eslint/scope-manager" "6.20.0" + "@typescript-eslint/type-utils" "6.20.0" + "@typescript-eslint/utils" "6.20.0" + "@typescript-eslint/visitor-keys" "6.20.0" + debug "^4.3.4" + graphemer "^1.4.0" + ignore "^5.2.4" + natural-compare "^1.4.0" + semver "^7.5.4" + ts-api-utils "^1.0.1" + +"@typescript-eslint/experimental-utils@^5.0.0": + version "5.62.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/experimental-utils/-/experimental-utils-5.62.0.tgz#14559bf73383a308026b427a4a6129bae2146741" + integrity sha512-RTXpeB3eMkpoclG3ZHft6vG/Z30azNHuqY6wKPBHlVMZFuEvrtlEDe8gMqDb+SO+9hjC/pLekeSCryf9vMZlCw== + dependencies: + "@typescript-eslint/utils" "5.62.0" + +"@typescript-eslint/parser@^5.5.0", "@typescript-eslint/parser@^5.9.0": + version "5.62.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-5.62.0.tgz#1b63d082d849a2fcae8a569248fbe2ee1b8a56c7" + integrity sha512-VlJEV0fOQ7BExOsHYAGrgbEiZoi8D+Bl2+f6V2RrXerRSylnp+ZBHmPvaIa8cz0Ajx7WO7Z5RqfgYg7ED1nRhA== + dependencies: + "@typescript-eslint/scope-manager" "5.62.0" + "@typescript-eslint/types" "5.62.0" + "@typescript-eslint/typescript-estree" "5.62.0" + debug "^4.3.4" + +"@typescript-eslint/parser@^6.14.0": + version "6.20.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-6.20.0.tgz#17e314177304bdf498527e3c4b112e41287b7416" + integrity sha512-bYerPDF/H5v6V76MdMYhjwmwgMA+jlPVqjSDq2cRqMi8bP5sR3Z+RLOiOMad3nsnmDVmn2gAFCyNgh/dIrfP/w== + dependencies: + "@typescript-eslint/scope-manager" "6.20.0" + "@typescript-eslint/types" "6.20.0" + "@typescript-eslint/typescript-estree" "6.20.0" + "@typescript-eslint/visitor-keys" "6.20.0" + debug "^4.3.4" + +"@typescript-eslint/scope-manager@5.62.0": + version "5.62.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-5.62.0.tgz#d9457ccc6a0b8d6b37d0eb252a23022478c5460c" + integrity sha512-VXuvVvZeQCQb5Zgf4HAxc04q5j+WrNAtNh9OwCsCgpKqESMTu3tF/jhZ3xG6T4NZwWl65Bg8KuS2uEvhSfLl0w== + dependencies: + "@typescript-eslint/types" "5.62.0" + "@typescript-eslint/visitor-keys" "5.62.0" + +"@typescript-eslint/scope-manager@6.20.0": + version "6.20.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-6.20.0.tgz#8a926e60f6c47feb5bab878246dc2ae465730151" + integrity sha512-p4rvHQRDTI1tGGMDFQm+GtxP1ZHyAh64WANVoyEcNMpaTFn3ox/3CcgtIlELnRfKzSs/DwYlDccJEtr3O6qBvA== + dependencies: + "@typescript-eslint/types" "6.20.0" + "@typescript-eslint/visitor-keys" "6.20.0" + +"@typescript-eslint/type-utils@5.62.0": + version "5.62.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/type-utils/-/type-utils-5.62.0.tgz#286f0389c41681376cdad96b309cedd17d70346a" + integrity sha512-xsSQreu+VnfbqQpW5vnCJdq1Z3Q0U31qiWmRhr98ONQmcp/yhiPJFPq8MXiJVLiksmOKSjIldZzkebzHuCGzew== + dependencies: + "@typescript-eslint/typescript-estree" "5.62.0" + "@typescript-eslint/utils" "5.62.0" + debug "^4.3.4" + tsutils "^3.21.0" + +"@typescript-eslint/type-utils@6.20.0": + version "6.20.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/type-utils/-/type-utils-6.20.0.tgz#d395475cd0f3610dd80c7d8716fa0db767da3831" + integrity sha512-qnSobiJQb1F5JjN0YDRPHruQTrX7ICsmltXhkV536mp4idGAYrIyr47zF/JmkJtEcAVnIz4gUYJ7gOZa6SmN4g== + dependencies: + "@typescript-eslint/typescript-estree" "6.20.0" + "@typescript-eslint/utils" "6.20.0" + debug "^4.3.4" + ts-api-utils "^1.0.1" + +"@typescript-eslint/types@5.62.0": + version "5.62.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-5.62.0.tgz#258607e60effa309f067608931c3df6fed41fd2f" + integrity sha512-87NVngcbVXUahrRTqIK27gD2t5Cu1yuCXxbLcFtCzZGlfyVWWh8mLHkoxzjsB6DDNnvdL+fW8MiwPEJyGJQDgQ== + +"@typescript-eslint/types@6.20.0": + version "6.20.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-6.20.0.tgz#5ccd74c29011ae7714ae6973e4ec0c634708b448" + integrity sha512-MM9mfZMAhiN4cOEcUOEx+0HmuaW3WBfukBZPCfwSqFnQy0grXYtngKCqpQN339X3RrwtzspWJrpbrupKYUSBXQ== + +"@typescript-eslint/typescript-estree@5.62.0": + version "5.62.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-5.62.0.tgz#7d17794b77fabcac615d6a48fb143330d962eb9b" + integrity sha512-CmcQ6uY7b9y694lKdRB8FEel7JbU/40iSAPomu++SjLMntB+2Leay2LO6i8VnJk58MtE9/nQSFIH6jpyRWyYzA== + dependencies: + "@typescript-eslint/types" "5.62.0" + "@typescript-eslint/visitor-keys" "5.62.0" + debug "^4.3.4" + globby "^11.1.0" + is-glob "^4.0.3" + semver "^7.3.7" + tsutils "^3.21.0" + +"@typescript-eslint/typescript-estree@6.20.0": + version "6.20.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-6.20.0.tgz#5b2d0975949e6bdd8d45ee1471461ef5fadc5542" + integrity sha512-RnRya9q5m6YYSpBN7IzKu9FmLcYtErkDkc8/dKv81I9QiLLtVBHrjz+Ev/crAqgMNW2FCsoZF4g2QUylMnJz+g== + dependencies: + "@typescript-eslint/types" "6.20.0" + "@typescript-eslint/visitor-keys" "6.20.0" + debug "^4.3.4" + globby "^11.1.0" + is-glob "^4.0.3" + minimatch "9.0.3" + semver "^7.5.4" + ts-api-utils "^1.0.1" + +"@typescript-eslint/utils@5.62.0", "@typescript-eslint/utils@^5.58.0": + version "5.62.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-5.62.0.tgz#141e809c71636e4a75daa39faed2fb5f4b10df86" + integrity sha512-n8oxjeb5aIbPFEtmQxQYOLI0i9n5ySBEY/ZEHHZqKQSFnxio1rv6dthascc9dLuwrL0RC5mPCxB7vnAVGAYWAQ== + dependencies: + "@eslint-community/eslint-utils" "^4.2.0" + "@types/json-schema" "^7.0.9" + "@types/semver" "^7.3.12" + "@typescript-eslint/scope-manager" "5.62.0" + "@typescript-eslint/types" "5.62.0" + "@typescript-eslint/typescript-estree" "5.62.0" + eslint-scope "^5.1.1" + semver "^7.3.7" + +"@typescript-eslint/utils@6.20.0": + version "6.20.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-6.20.0.tgz#0e52afcfaa51af5656490ba4b7437cc3aa28633d" + integrity sha512-/EKuw+kRu2vAqCoDwDCBtDRU6CTKbUmwwI7SH7AashZ+W+7o8eiyy6V2cdOqN49KsTcASWsC5QeghYuRDTyOOg== + dependencies: + "@eslint-community/eslint-utils" "^4.4.0" + "@types/json-schema" "^7.0.12" + "@types/semver" "^7.5.0" + "@typescript-eslint/scope-manager" "6.20.0" + "@typescript-eslint/types" "6.20.0" + "@typescript-eslint/typescript-estree" "6.20.0" + semver "^7.5.4" + +"@typescript-eslint/visitor-keys@5.62.0": + version "5.62.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-5.62.0.tgz#2174011917ce582875954ffe2f6912d5931e353e" + integrity sha512-07ny+LHRzQXepkGg6w0mFY41fVUNBrL2Roj/++7V1txKugfjm/Ci/qSND03r2RhlJhJYMcTn9AhhSSqQp0Ysyw== + dependencies: + "@typescript-eslint/types" "5.62.0" + eslint-visitor-keys "^3.3.0" + +"@typescript-eslint/visitor-keys@6.20.0": + version "6.20.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-6.20.0.tgz#f7ada27f2803de89df0edd9fd7be22c05ce6a498" + integrity sha512-E8Cp98kRe4gKHjJD4NExXKz/zOJ1A2hhZc+IMVD6i7w4yjIvh6VyuRI0gRtxAsXtoC35uGMaQ9rjI2zJaXDEAw== + dependencies: + "@typescript-eslint/types" "6.20.0" + eslint-visitor-keys "^3.4.1" + +"@ungap/structured-clone@^1.2.0": + version "1.2.0" + resolved "https://registry.yarnpkg.com/@ungap/structured-clone/-/structured-clone-1.2.0.tgz#756641adb587851b5ccb3e095daf27ae581c8406" + integrity sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ== + +"@vitejs/plugin-react@^4.2.1": + version "4.2.1" + resolved "https://registry.yarnpkg.com/@vitejs/plugin-react/-/plugin-react-4.2.1.tgz#744d8e4fcb120fc3dbaa471dadd3483f5a304bb9" + integrity sha512-oojO9IDc4nCUUi8qIR11KoQm0XFFLIwsRBwHRR4d/88IWghn1y6ckz/bJ8GHDCsYEJee8mDzqtJxh15/cisJNQ== + dependencies: + "@babel/core" "^7.23.5" + "@babel/plugin-transform-react-jsx-self" "^7.23.3" + "@babel/plugin-transform-react-jsx-source" "^7.23.3" + "@types/babel__core" "^7.20.5" + react-refresh "^0.14.0" + +"@webassemblyjs/ast@1.11.6", "@webassemblyjs/ast@^1.11.5": + version "1.11.6" + resolved "https://registry.yarnpkg.com/@webassemblyjs/ast/-/ast-1.11.6.tgz#db046555d3c413f8966ca50a95176a0e2c642e24" + integrity sha512-IN1xI7PwOvLPgjcf180gC1bqn3q/QaOCwYUahIOhbYUu8KA/3tw2RT/T0Gidi1l7Hhj5D/INhJxiICObqpMu4Q== + dependencies: + "@webassemblyjs/helper-numbers" "1.11.6" + "@webassemblyjs/helper-wasm-bytecode" "1.11.6" + +"@webassemblyjs/floating-point-hex-parser@1.11.6": + version "1.11.6" + resolved "https://registry.yarnpkg.com/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.6.tgz#dacbcb95aff135c8260f77fa3b4c5fea600a6431" + integrity sha512-ejAj9hfRJ2XMsNHk/v6Fu2dGS+i4UaXBXGemOfQ/JfQ6mdQg/WXtwleQRLLS4OvfDhv8rYnVwH27YJLMyYsxhw== + +"@webassemblyjs/helper-api-error@1.11.6": + version "1.11.6" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.6.tgz#6132f68c4acd59dcd141c44b18cbebbd9f2fa768" + integrity sha512-o0YkoP4pVu4rN8aTJgAyj9hC2Sv5UlkzCHhxqWj8butaLvnpdc2jOwh4ewE6CX0txSfLn/UYaV/pheS2Txg//Q== + +"@webassemblyjs/helper-buffer@1.11.6": + version "1.11.6" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-buffer/-/helper-buffer-1.11.6.tgz#b66d73c43e296fd5e88006f18524feb0f2c7c093" + integrity sha512-z3nFzdcp1mb8nEOFFk8DrYLpHvhKC3grJD2ardfKOzmbmJvEf/tPIqCY+sNcwZIY8ZD7IkB2l7/pqhUhqm7hLA== + +"@webassemblyjs/helper-numbers@1.11.6": + version "1.11.6" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.6.tgz#cbce5e7e0c1bd32cf4905ae444ef64cea919f1b5" + integrity sha512-vUIhZ8LZoIWHBohiEObxVm6hwP034jwmc9kuq5GdHZH0wiLVLIPcMCdpJzG4C11cHoQ25TFIQj9kaVADVX7N3g== + dependencies: + "@webassemblyjs/floating-point-hex-parser" "1.11.6" + "@webassemblyjs/helper-api-error" "1.11.6" + "@xtuc/long" "4.2.2" + +"@webassemblyjs/helper-wasm-bytecode@1.11.6": + version "1.11.6" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.6.tgz#bb2ebdb3b83aa26d9baad4c46d4315283acd51e9" + integrity sha512-sFFHKwcmBprO9e7Icf0+gddyWYDViL8bpPjJJl0WHxCdETktXdmtWLGVzoHbqUcY4Be1LkNfwTmXOJUFZYSJdA== + +"@webassemblyjs/helper-wasm-section@1.11.6": + version "1.11.6" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.11.6.tgz#ff97f3863c55ee7f580fd5c41a381e9def4aa577" + integrity sha512-LPpZbSOwTpEC2cgn4hTydySy1Ke+XEu+ETXuoyvuyezHO3Kjdu90KK95Sh9xTbmjrCsUwvWwCOQQNta37VrS9g== + dependencies: + "@webassemblyjs/ast" "1.11.6" + "@webassemblyjs/helper-buffer" "1.11.6" + "@webassemblyjs/helper-wasm-bytecode" "1.11.6" + "@webassemblyjs/wasm-gen" "1.11.6" + +"@webassemblyjs/ieee754@1.11.6": + version "1.11.6" + resolved "https://registry.yarnpkg.com/@webassemblyjs/ieee754/-/ieee754-1.11.6.tgz#bb665c91d0b14fffceb0e38298c329af043c6e3a" + integrity sha512-LM4p2csPNvbij6U1f19v6WR56QZ8JcHg3QIJTlSwzFcmx6WSORicYj6I63f9yU1kEUtrpG+kjkiIAkevHpDXrg== + dependencies: + "@xtuc/ieee754" "^1.2.0" + +"@webassemblyjs/leb128@1.11.6": + version "1.11.6" + resolved "https://registry.yarnpkg.com/@webassemblyjs/leb128/-/leb128-1.11.6.tgz#70e60e5e82f9ac81118bc25381a0b283893240d7" + integrity sha512-m7a0FhE67DQXgouf1tbN5XQcdWoNgaAuoULHIfGFIEVKA6tu/edls6XnIlkmS6FrXAquJRPni3ZZKjw6FSPjPQ== + dependencies: + "@xtuc/long" "4.2.2" + +"@webassemblyjs/utf8@1.11.6": + version "1.11.6" + resolved "https://registry.yarnpkg.com/@webassemblyjs/utf8/-/utf8-1.11.6.tgz#90f8bc34c561595fe156603be7253cdbcd0fab5a" + integrity sha512-vtXf2wTQ3+up9Zsg8sa2yWiQpzSsMyXj0qViVP6xKGCUT8p8YJ6HqI7l5eCnWx1T/FYdsv07HQs2wTFbbof/RA== + +"@webassemblyjs/wasm-edit@^1.11.5": + version "1.11.6" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-edit/-/wasm-edit-1.11.6.tgz#c72fa8220524c9b416249f3d94c2958dfe70ceab" + integrity sha512-Ybn2I6fnfIGuCR+Faaz7YcvtBKxvoLV3Lebn1tM4o/IAJzmi9AWYIPWpyBfU8cC+JxAO57bk4+zdsTjJR+VTOw== + dependencies: + "@webassemblyjs/ast" "1.11.6" + "@webassemblyjs/helper-buffer" "1.11.6" + "@webassemblyjs/helper-wasm-bytecode" "1.11.6" + "@webassemblyjs/helper-wasm-section" "1.11.6" + "@webassemblyjs/wasm-gen" "1.11.6" + "@webassemblyjs/wasm-opt" "1.11.6" + "@webassemblyjs/wasm-parser" "1.11.6" + "@webassemblyjs/wast-printer" "1.11.6" + +"@webassemblyjs/wasm-gen@1.11.6": + version "1.11.6" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-gen/-/wasm-gen-1.11.6.tgz#fb5283e0e8b4551cc4e9c3c0d7184a65faf7c268" + integrity sha512-3XOqkZP/y6B4F0PBAXvI1/bky7GryoogUtfwExeP/v7Nzwo1QLcq5oQmpKlftZLbT+ERUOAZVQjuNVak6UXjPA== + dependencies: + "@webassemblyjs/ast" "1.11.6" + "@webassemblyjs/helper-wasm-bytecode" "1.11.6" + "@webassemblyjs/ieee754" "1.11.6" + "@webassemblyjs/leb128" "1.11.6" + "@webassemblyjs/utf8" "1.11.6" + +"@webassemblyjs/wasm-opt@1.11.6": + version "1.11.6" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-opt/-/wasm-opt-1.11.6.tgz#d9a22d651248422ca498b09aa3232a81041487c2" + integrity sha512-cOrKuLRE7PCe6AsOVl7WasYf3wbSo4CeOk6PkrjS7g57MFfVUF9u6ysQBBODX0LdgSvQqRiGz3CXvIDKcPNy4g== + dependencies: + "@webassemblyjs/ast" "1.11.6" + "@webassemblyjs/helper-buffer" "1.11.6" + "@webassemblyjs/wasm-gen" "1.11.6" + "@webassemblyjs/wasm-parser" "1.11.6" + +"@webassemblyjs/wasm-parser@1.11.6", "@webassemblyjs/wasm-parser@^1.11.5": + version "1.11.6" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-parser/-/wasm-parser-1.11.6.tgz#bb85378c527df824004812bbdb784eea539174a1" + integrity sha512-6ZwPeGzMJM3Dqp3hCsLgESxBGtT/OeCvCZ4TA1JUPYgmhAx38tTPR9JaKy0S5H3evQpO/h2uWs2j6Yc/fjkpTQ== + dependencies: + "@webassemblyjs/ast" "1.11.6" + "@webassemblyjs/helper-api-error" "1.11.6" + "@webassemblyjs/helper-wasm-bytecode" "1.11.6" + "@webassemblyjs/ieee754" "1.11.6" + "@webassemblyjs/leb128" "1.11.6" + "@webassemblyjs/utf8" "1.11.6" + +"@webassemblyjs/wast-printer@1.11.6": + version "1.11.6" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wast-printer/-/wast-printer-1.11.6.tgz#a7bf8dd7e362aeb1668ff43f35cb849f188eff20" + integrity sha512-JM7AhRcE+yW2GWYaKeHL5vt4xqee5N2WcezptmgyhNS+ScggqcT1OtXykhAb13Sn5Yas0j2uv9tHgrjwvzAP4A== + dependencies: + "@webassemblyjs/ast" "1.11.6" + "@xtuc/long" "4.2.2" + +"@xtuc/ieee754@^1.2.0": + version "1.2.0" + resolved "https://registry.yarnpkg.com/@xtuc/ieee754/-/ieee754-1.2.0.tgz#eef014a3145ae477a1cbc00cd1e552336dceb790" + integrity sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA== + +"@xtuc/long@4.2.2": + version "4.2.2" + resolved "https://registry.yarnpkg.com/@xtuc/long/-/long-4.2.2.tgz#d291c6a4e97989b5c61d9acf396ae4fe133a718d" + integrity sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ== + +"@yarnpkg/lockfile@^1.1.0": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@yarnpkg/lockfile/-/lockfile-1.1.0.tgz#e77a97fbd345b76d83245edcd17d393b1b41fb31" + integrity sha512-GpSwvyXOcOOlV70vbnzjj4fW5xW/FdUF6nQEt1ENy7m4ZCczi1+/buVUPAqmGfqznsORNFzUMjctTIp8a9tuCQ== + +abab@^2.0.3, abab@^2.0.5: + version "2.0.6" + resolved "https://registry.yarnpkg.com/abab/-/abab-2.0.6.tgz#41b80f2c871d19686216b82309231cfd3cb3d291" + integrity sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA== + +accepts@~1.3.4, accepts@~1.3.5, accepts@~1.3.8: + version "1.3.8" + resolved "https://registry.yarnpkg.com/accepts/-/accepts-1.3.8.tgz#0bf0be125b67014adcb0b0921e62db7bffe16b2e" + integrity sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw== + dependencies: + mime-types "~2.1.34" + negotiator "0.6.3" + +acorn-globals@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/acorn-globals/-/acorn-globals-6.0.0.tgz#46cdd39f0f8ff08a876619b55f5ac8a6dc770b45" + integrity sha512-ZQl7LOWaF5ePqqcX4hLuv/bLXYQNfNWw2c0/yX/TsPRKamzHcTGQnlCjHT3TsmkOUVEPS3crCxiPfdzE/Trlhg== + dependencies: + acorn "^7.1.1" + acorn-walk "^7.1.1" + +acorn-import-assertions@^1.9.0: + version "1.9.0" + resolved "https://registry.yarnpkg.com/acorn-import-assertions/-/acorn-import-assertions-1.9.0.tgz#507276249d684797c84e0734ef84860334cfb1ac" + integrity sha512-cmMwop9x+8KFhxvKrKfPYmN6/pKTYYHBqLa0DfvVZcKMJWNyWLnaqND7dx/qn66R7ewM1UX5XMaDVP5wlVTaVA== + +acorn-jsx@^5.3.2: + version "5.3.2" + resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.3.2.tgz#7ed5bb55908b3b2f1bc55c6af1653bada7f07937" + integrity sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ== + +acorn-walk@^7.1.1: + version "7.2.0" + resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-7.2.0.tgz#0de889a601203909b0fbe07b8938dc21d2e967bc" + integrity sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA== + +acorn@^7.1.1: + version "7.4.1" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-7.4.1.tgz#feaed255973d2e77555b83dbc08851a6c63520fa" + integrity sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A== + +acorn@^8.2.4, acorn@^8.7.1, acorn@^8.8.2, acorn@^8.9.0: + version "8.11.3" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.11.3.tgz#71e0b14e13a4ec160724b38fb7b0f233b1b81d7a" + integrity sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg== + +address@^1.0.1, address@^1.1.2: + version "1.2.2" + resolved "https://registry.yarnpkg.com/address/-/address-1.2.2.tgz#2b5248dac5485a6390532c6a517fda2e3faac89e" + integrity sha512-4B/qKCfeE/ODUaAUpSwfzazo5x29WD4r3vXiWsB7I2mSDAihwEqKO+g8GELZUQSSAo5e1XTYh3ZVfLyxBc12nA== + +adjust-sourcemap-loader@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/adjust-sourcemap-loader/-/adjust-sourcemap-loader-4.0.0.tgz#fc4a0fd080f7d10471f30a7320f25560ade28c99" + integrity sha512-OXwN5b9pCUXNQHJpwwD2qP40byEmSgzj8B4ydSN0uMNYWiFmJ6x6KwUllMmfk8Rwu/HJDFR7U8ubsWBoN0Xp0A== + dependencies: + loader-utils "^2.0.0" + regex-parser "^2.2.11" + +agent-base@6: + version "6.0.2" + resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-6.0.2.tgz#49fff58577cfee3f37176feab4c22e00f86d7f77" + integrity sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ== + dependencies: + debug "4" + +ajv-formats@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/ajv-formats/-/ajv-formats-2.1.1.tgz#6e669400659eb74973bbf2e33327180a0996b520" + integrity sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA== + dependencies: + ajv "^8.0.0" + +ajv-keywords@^3.4.1, ajv-keywords@^3.5.2: + version "3.5.2" + resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-3.5.2.tgz#31f29da5ab6e00d1c2d329acf7b5929614d5014d" + integrity sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ== + +ajv-keywords@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-5.1.0.tgz#69d4d385a4733cdbeab44964a1170a88f87f0e16" + integrity sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw== + dependencies: + fast-deep-equal "^3.1.3" + +ajv@^6.12.2, ajv@^6.12.4, ajv@^6.12.5: + version "6.12.6" + resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.6.tgz#baf5a62e802b07d977034586f8c3baf5adf26df4" + integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g== + dependencies: + fast-deep-equal "^3.1.1" + fast-json-stable-stringify "^2.0.0" + json-schema-traverse "^0.4.1" + uri-js "^4.2.2" + +ajv@^8.0.0, ajv@^8.6.0, ajv@^8.9.0: + version "8.12.0" + resolved "https://registry.yarnpkg.com/ajv/-/ajv-8.12.0.tgz#d1a0527323e22f53562c567c00991577dfbe19d1" + integrity sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA== + dependencies: + fast-deep-equal "^3.1.1" + json-schema-traverse "^1.0.0" + require-from-string "^2.0.2" + uri-js "^4.2.2" + +ansi-escapes@^4.2.1, ansi-escapes@^4.3.1: + version "4.3.2" + resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-4.3.2.tgz#6b2291d1db7d98b6521d5f1efa42d0f3a9feb65e" + integrity sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ== + dependencies: + type-fest "^0.21.3" + +ansi-html-community@^0.0.8: + version "0.0.8" + resolved "https://registry.yarnpkg.com/ansi-html-community/-/ansi-html-community-0.0.8.tgz#69fbc4d6ccbe383f9736934ae34c3f8290f1bf41" + integrity sha512-1APHAyr3+PCamwNw3bXCPp4HFLONZt/yIH0sZp0/469KWNTEy+qN5jQ3GVX6DMZ1UXAi34yVwtTeaG/HpBuuzw== + +ansi-regex@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.1.tgz#082cb2c89c9fe8659a311a53bd6a4dc5301db304" + integrity sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ== + +ansi-regex@^6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-6.0.1.tgz#3183e38fae9a65d7cb5e53945cd5897d0260a06a" + integrity sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA== + +ansi-styles@^3.2.1: + version "3.2.1" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" + integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA== + dependencies: + color-convert "^1.9.0" + +ansi-styles@^4.0.0, ansi-styles@^4.1.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.3.0.tgz#edd803628ae71c04c85ae7a0906edad34b648937" + integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg== + dependencies: + color-convert "^2.0.1" + +ansi-styles@^5.0.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-5.2.0.tgz#07449690ad45777d1924ac2abb2fc8895dba836b" + integrity sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA== + +ansi-styles@^6.1.0: + version "6.2.1" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-6.2.1.tgz#0e62320cf99c21afff3b3012192546aacbfb05c5" + integrity sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug== + +any-promise@^1.0.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/any-promise/-/any-promise-1.3.0.tgz#abc6afeedcea52e809cdc0376aed3ce39635d17f" + integrity sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A== + +anymatch@^3.0.3, anymatch@~3.1.2: + version "3.1.3" + resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.3.tgz#790c58b19ba1720a84205b57c618d5ad8524973e" + integrity sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw== + dependencies: + normalize-path "^3.0.0" + picomatch "^2.0.4" + +arg@^5.0.2: + version "5.0.2" + resolved "https://registry.yarnpkg.com/arg/-/arg-5.0.2.tgz#c81433cc427c92c4dcf4865142dbca6f15acd59c" + integrity sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg== + +argparse@^1.0.7: + version "1.0.10" + resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.10.tgz#bcd6791ea5ae09725e17e5ad988134cd40b3d911" + integrity sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg== + dependencies: + sprintf-js "~1.0.2" + +argparse@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/argparse/-/argparse-2.0.1.tgz#246f50f3ca78a3240f6c997e8a9bd1eac49e4b38" + integrity sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q== + +aria-query@5.1.3: + version "5.1.3" + resolved "https://registry.yarnpkg.com/aria-query/-/aria-query-5.1.3.tgz#19db27cd101152773631396f7a95a3b58c22c35e" + integrity sha512-R5iJ5lkuHybztUfuOAznmboyjWq8O6sqNqtK7CLOqdydi54VNbORp49mb14KbWgG1QD3JFO9hJdZ+y4KutfdOQ== + dependencies: + deep-equal "^2.0.5" + +aria-query@^5.0.0, aria-query@^5.3.0: + version "5.3.0" + resolved "https://registry.yarnpkg.com/aria-query/-/aria-query-5.3.0.tgz#650c569e41ad90b51b3d7df5e5eed1c7549c103e" + integrity sha512-b0P0sZPKtyu8HkeRAfCq0IfURZK+SuwMjY1UXGBU27wpAiTwQAIlq56IbIO+ytk/JjS1fMR14ee5WBBfKi5J6A== + dependencies: + dequal "^2.0.3" + +arr-union@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/arr-union/-/arr-union-3.1.0.tgz#e39b09aea9def866a8f206e288af63919bae39c4" + integrity sha512-sKpyeERZ02v1FeCZT8lrfJq5u6goHCtpTAzPwJYe7c8SPFOboNjNg1vz2L4VTn9T4PQxEx13TbXLmYUcS6Ug7Q== + +array-buffer-byte-length@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/array-buffer-byte-length/-/array-buffer-byte-length-1.0.0.tgz#fabe8bc193fea865f317fe7807085ee0dee5aead" + integrity sha512-LPuwb2P+NrQw3XhxGc36+XSvuBPopovXYTR9Ew++Du9Yb/bx5AzBfrIsBoj0EZUifjQU+sHL21sseZ3jerWO/A== + dependencies: + call-bind "^1.0.2" + is-array-buffer "^3.0.1" + +array-flatten@1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/array-flatten/-/array-flatten-1.1.1.tgz#9a5f699051b1e7073328f2a008968b64ea2955d2" + integrity sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg== + +array-includes@^3.1.6, array-includes@^3.1.7: + version "3.1.7" + resolved "https://registry.yarnpkg.com/array-includes/-/array-includes-3.1.7.tgz#8cd2e01b26f7a3086cbc87271593fe921c62abda" + integrity sha512-dlcsNBIiWhPkHdOEEKnehA+RNUWDc4UqFtnIXU4uuYDPtA4LDkr7qip2p0VvFAEXNDr0yWZ9PJyIRiGjRLQzwQ== + dependencies: + call-bind "^1.0.2" + define-properties "^1.2.0" + es-abstract "^1.22.1" + get-intrinsic "^1.2.1" + is-string "^1.0.7" + +array-union@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/array-union/-/array-union-2.1.0.tgz#b798420adbeb1de828d84acd8a2e23d3efe85e8d" + integrity sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw== + +array.prototype.findlastindex@^1.2.3: + version "1.2.3" + resolved "https://registry.yarnpkg.com/array.prototype.findlastindex/-/array.prototype.findlastindex-1.2.3.tgz#b37598438f97b579166940814e2c0493a4f50207" + integrity sha512-LzLoiOMAxvy+Gd3BAq3B7VeIgPdo+Q8hthvKtXybMvRV0jrXfJM/t8mw7nNlpEcVlVUnCnM2KSX4XU5HmpodOA== + dependencies: + call-bind "^1.0.2" + define-properties "^1.2.0" + es-abstract "^1.22.1" + es-shim-unscopables "^1.0.0" + get-intrinsic "^1.2.1" + +array.prototype.flat@^1.3.1, array.prototype.flat@^1.3.2: + version "1.3.2" + resolved "https://registry.yarnpkg.com/array.prototype.flat/-/array.prototype.flat-1.3.2.tgz#1476217df8cff17d72ee8f3ba06738db5b387d18" + integrity sha512-djYB+Zx2vLewY8RWlNCUdHjDXs2XOgm602S9E7P/UpHgfeHL00cRiIF+IN/G/aUJ7kGPb6yO/ErDI5V2s8iycA== + dependencies: + call-bind "^1.0.2" + define-properties "^1.2.0" + es-abstract "^1.22.1" + es-shim-unscopables "^1.0.0" + +array.prototype.flatmap@^1.3.1, array.prototype.flatmap@^1.3.2: + version "1.3.2" + resolved "https://registry.yarnpkg.com/array.prototype.flatmap/-/array.prototype.flatmap-1.3.2.tgz#c9a7c6831db8e719d6ce639190146c24bbd3e527" + integrity sha512-Ewyx0c9PmpcsByhSW4r+9zDU7sGjFc86qf/kKtuSCRdhfbk0SNLLkaT5qvcHnRGgc5NP/ly/y+qkXkqONX54CQ== + dependencies: + call-bind "^1.0.2" + define-properties "^1.2.0" + es-abstract "^1.22.1" + es-shim-unscopables "^1.0.0" + +array.prototype.reduce@^1.0.6: + version "1.0.6" + resolved "https://registry.yarnpkg.com/array.prototype.reduce/-/array.prototype.reduce-1.0.6.tgz#63149931808c5fc1e1354814923d92d45f7d96d5" + integrity sha512-UW+Mz8LG/sPSU8jRDCjVr6J/ZKAGpHfwrZ6kWTG5qCxIEiXdVshqGnu5vEZA8S1y6X4aCSbQZ0/EEsfvEvBiSg== + dependencies: + call-bind "^1.0.2" + define-properties "^1.2.0" + es-abstract "^1.22.1" + es-array-method-boxes-properly "^1.0.0" + is-string "^1.0.7" + +array.prototype.tosorted@^1.1.1: + version "1.1.2" + resolved "https://registry.yarnpkg.com/array.prototype.tosorted/-/array.prototype.tosorted-1.1.2.tgz#620eff7442503d66c799d95503f82b475745cefd" + integrity sha512-HuQCHOlk1Weat5jzStICBCd83NxiIMwqDg/dHEsoefabn/hJRj5pVdWcPUSpRrwhwxZOsQassMpgN/xRYFBMIg== + dependencies: + call-bind "^1.0.2" + define-properties "^1.2.0" + es-abstract "^1.22.1" + es-shim-unscopables "^1.0.0" + get-intrinsic "^1.2.1" + +arraybuffer.prototype.slice@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.2.tgz#98bd561953e3e74bb34938e77647179dfe6e9f12" + integrity sha512-yMBKppFur/fbHu9/6USUe03bZ4knMYiwFBcyiaXB8Go0qNehwX6inYPzK9U0NeQvGxKthcmHcaR8P5MStSRBAw== + dependencies: + array-buffer-byte-length "^1.0.0" + call-bind "^1.0.2" + define-properties "^1.2.0" + es-abstract "^1.22.1" + get-intrinsic "^1.2.1" + is-array-buffer "^3.0.2" + is-shared-array-buffer "^1.0.2" + +asap@~2.0.6: + version "2.0.6" + resolved "https://registry.yarnpkg.com/asap/-/asap-2.0.6.tgz#e50347611d7e690943208bbdafebcbc2fb866d46" + integrity sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA== + +ast-types-flow@^0.0.8: + version "0.0.8" + resolved "https://registry.yarnpkg.com/ast-types-flow/-/ast-types-flow-0.0.8.tgz#0a85e1c92695769ac13a428bb653e7538bea27d6" + integrity sha512-OH/2E5Fg20h2aPrbe+QL8JZQFko0YZaF+j4mnQ7BGhfavO7OpSLa8a0y9sBwomHdSbkhTS8TQNayBfnW5DwbvQ== + +async@^3.2.3: + version "3.2.5" + resolved "https://registry.yarnpkg.com/async/-/async-3.2.5.tgz#ebd52a8fdaf7a2289a24df399f8d8485c8a46b66" + integrity sha512-baNZyqaaLhyLVKm/DlvdW051MSgO6b8eVfIezl9E5PqWxFgzLm/wQntEW4zOytVburDEr0JlALEpdOFwvErLsg== + +asynciterator.prototype@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/asynciterator.prototype/-/asynciterator.prototype-1.0.0.tgz#8c5df0514936cdd133604dfcc9d3fb93f09b2b62" + integrity sha512-wwHYEIS0Q80f5mosx3L/dfG5t5rjEa9Ft51GTaNt862EnpyGHpgz2RkZvLPp1oF5TnAiTohkEKVEu8pQPJI7Vg== + dependencies: + has-symbols "^1.0.3" + +asynckit@^0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" + integrity sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q== + +at-least-node@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/at-least-node/-/at-least-node-1.0.0.tgz#602cd4b46e844ad4effc92a8011a3c46e0238dc2" + integrity sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg== + +autoprefixer@^10.4.13: + version "10.4.17" + resolved "https://registry.yarnpkg.com/autoprefixer/-/autoprefixer-10.4.17.tgz#35cd5695cbbe82f536a50fa025d561b01fdec8be" + integrity sha512-/cpVNRLSfhOtcGflT13P2794gVSgmPgTR+erw5ifnMLZb0UnSlkK4tquLmkd3BhA+nLo5tX8Cu0upUsGKvKbmg== + dependencies: + browserslist "^4.22.2" + caniuse-lite "^1.0.30001578" + fraction.js "^4.3.7" + normalize-range "^0.1.2" + picocolors "^1.0.0" + postcss-value-parser "^4.2.0" + +available-typed-arrays@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz#92f95616501069d07d10edb2fc37d3e1c65123b7" + integrity sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw== + +axe-core@=4.7.0: + version "4.7.0" + resolved "https://registry.yarnpkg.com/axe-core/-/axe-core-4.7.0.tgz#34ba5a48a8b564f67e103f0aa5768d76e15bbbbf" + integrity sha512-M0JtH+hlOL5pLQwHOLNYZaXuhqmvS8oExsqB1SBYgA4Dk7u/xx+YdGHXaK5pyUfed5mYXdlYiphWq3G8cRi5JQ== + +axobject-query@^3.2.1: + version "3.2.1" + resolved "https://registry.yarnpkg.com/axobject-query/-/axobject-query-3.2.1.tgz#39c378a6e3b06ca679f29138151e45b2b32da62a" + integrity sha512-jsyHu61e6N4Vbz/v18DHwWYKK0bSWLqn47eeDSKPB7m8tqMHF9YJ+mhIk2lVteyZrY8tnSj/jHOv4YiTCuCJgg== + dependencies: + dequal "^2.0.3" + +babel-jest@^27.4.2, babel-jest@^27.5.1: + version "27.5.1" + resolved "https://registry.yarnpkg.com/babel-jest/-/babel-jest-27.5.1.tgz#a1bf8d61928edfefd21da27eb86a695bfd691444" + integrity sha512-cdQ5dXjGRd0IBRATiQ4mZGlGlRE8kJpjPOixdNRdT+m3UcNqmYWN6rK6nvtXYfY3D76cb8s/O1Ss8ea24PIwcg== + dependencies: + "@jest/transform" "^27.5.1" + "@jest/types" "^27.5.1" + "@types/babel__core" "^7.1.14" + babel-plugin-istanbul "^6.1.1" + babel-preset-jest "^27.5.1" + chalk "^4.0.0" + graceful-fs "^4.2.9" + slash "^3.0.0" + +babel-jest@^29.7.0: + version "29.7.0" + resolved "https://registry.yarnpkg.com/babel-jest/-/babel-jest-29.7.0.tgz#f4369919225b684c56085998ac63dbd05be020d5" + integrity sha512-BrvGY3xZSwEcCzKvKsCi2GgHqDqsYkOP4/by5xCgIwGXQxIEh+8ew3gmrE1y7XRR6LHZIj6yLYnUi/mm2KXKBg== + dependencies: + "@jest/transform" "^29.7.0" + "@types/babel__core" "^7.1.14" + babel-plugin-istanbul "^6.1.1" + babel-preset-jest "^29.6.3" + chalk "^4.0.0" + graceful-fs "^4.2.9" + slash "^3.0.0" + +babel-loader@^8.2.3: + version "8.3.0" + resolved "https://registry.yarnpkg.com/babel-loader/-/babel-loader-8.3.0.tgz#124936e841ba4fe8176786d6ff28add1f134d6a8" + integrity sha512-H8SvsMF+m9t15HNLMipppzkC+Y2Yq+v3SonZyU70RBL/h1gxPkH08Ot8pEE9Z4Kd+czyWJClmFS8qzIP9OZ04Q== + dependencies: + find-cache-dir "^3.3.1" + loader-utils "^2.0.0" + make-dir "^3.1.0" + schema-utils "^2.6.5" + +babel-plugin-istanbul@^6.1.1: + version "6.1.1" + resolved "https://registry.yarnpkg.com/babel-plugin-istanbul/-/babel-plugin-istanbul-6.1.1.tgz#fa88ec59232fd9b4e36dbbc540a8ec9a9b47da73" + integrity sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + "@istanbuljs/load-nyc-config" "^1.0.0" + "@istanbuljs/schema" "^0.1.2" + istanbul-lib-instrument "^5.0.4" + test-exclude "^6.0.0" + +babel-plugin-jest-hoist@^27.5.1: + version "27.5.1" + resolved "https://registry.yarnpkg.com/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-27.5.1.tgz#9be98ecf28c331eb9f5df9c72d6f89deb8181c2e" + integrity sha512-50wCwD5EMNW4aRpOwtqzyZHIewTYNxLA4nhB+09d8BIssfNfzBRhkBIHiaPv1Si226TQSvp8gxAJm2iY2qs2hQ== + dependencies: + "@babel/template" "^7.3.3" + "@babel/types" "^7.3.3" + "@types/babel__core" "^7.0.0" + "@types/babel__traverse" "^7.0.6" + +babel-plugin-jest-hoist@^29.6.3: + version "29.6.3" + resolved "https://registry.yarnpkg.com/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-29.6.3.tgz#aadbe943464182a8922c3c927c3067ff40d24626" + integrity sha512-ESAc/RJvGTFEzRwOTT4+lNDk/GNHMkKbNzsvT0qKRfDyyYTskxB5rnU2njIDYVxXCBHHEI1c0YwHob3WaYujOg== + dependencies: + "@babel/template" "^7.3.3" + "@babel/types" "^7.3.3" + "@types/babel__core" "^7.1.14" + "@types/babel__traverse" "^7.0.6" + +babel-plugin-macros@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/babel-plugin-macros/-/babel-plugin-macros-3.1.0.tgz#9ef6dc74deb934b4db344dc973ee851d148c50c1" + integrity sha512-Cg7TFGpIr01vOQNODXOOaGz2NpCU5gl8x1qJFbb6hbZxR7XrcE2vtbAsTAbJ7/xwJtUuJEw8K8Zr/AE0LHlesg== + dependencies: + "@babel/runtime" "^7.12.5" + cosmiconfig "^7.0.0" + resolve "^1.19.0" + +babel-plugin-named-asset-import@^0.3.8: + version "0.3.8" + resolved "https://registry.yarnpkg.com/babel-plugin-named-asset-import/-/babel-plugin-named-asset-import-0.3.8.tgz#6b7fa43c59229685368683c28bc9734f24524cc2" + integrity sha512-WXiAc++qo7XcJ1ZnTYGtLxmBCVbddAml3CEXgWaBzNzLNoxtQ8AiGEFDMOhot9XjTCQbvP5E77Fj9Gk924f00Q== + +babel-plugin-polyfill-corejs2@^0.4.8: + version "0.4.8" + resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.8.tgz#dbcc3c8ca758a290d47c3c6a490d59429b0d2269" + integrity sha512-OtIuQfafSzpo/LhnJaykc0R/MMnuLSSVjVYy9mHArIZ9qTCSZ6TpWCuEKZYVoN//t8HqBNScHrOtCrIK5IaGLg== + dependencies: + "@babel/compat-data" "^7.22.6" + "@babel/helper-define-polyfill-provider" "^0.5.0" + semver "^6.3.1" + +babel-plugin-polyfill-corejs3@^0.9.0: + version "0.9.0" + resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.9.0.tgz#9eea32349d94556c2ad3ab9b82ebb27d4bf04a81" + integrity sha512-7nZPG1uzK2Ymhy/NbaOWTg3uibM2BmGASS4vHS4szRZAIR8R6GwA/xAujpdrXU5iyklrimWnLWU+BLF9suPTqg== + dependencies: + "@babel/helper-define-polyfill-provider" "^0.5.0" + core-js-compat "^3.34.0" + +babel-plugin-polyfill-regenerator@^0.5.5: + version "0.5.5" + resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.5.5.tgz#8b0c8fc6434239e5d7b8a9d1f832bb2b0310f06a" + integrity sha512-OJGYZlhLqBh2DDHeqAxWB1XIvr49CxiJ2gIt61/PU55CQK4Z58OzMqjDe1zwQdQk+rBYsRc+1rJmdajM3gimHg== + dependencies: + "@babel/helper-define-polyfill-provider" "^0.5.0" + +babel-plugin-transform-react-remove-prop-types@^0.4.24: + version "0.4.24" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-react-remove-prop-types/-/babel-plugin-transform-react-remove-prop-types-0.4.24.tgz#f2edaf9b4c6a5fbe5c1d678bfb531078c1555f3a" + integrity sha512-eqj0hVcJUR57/Ug2zE1Yswsw4LhuqqHhD+8v120T1cl3kjg76QwtyBrdIk4WVwK+lAhBJVYCd/v+4nc4y+8JsA== + +babel-preset-current-node-syntax@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.0.1.tgz#b4399239b89b2a011f9ddbe3e4f401fc40cff73b" + integrity sha512-M7LQ0bxarkxQoN+vz5aJPsLBn77n8QgTFmo8WK0/44auK2xlCXrYcUxHFxgU7qW5Yzw/CjmLRK2uJzaCd7LvqQ== + dependencies: + "@babel/plugin-syntax-async-generators" "^7.8.4" + "@babel/plugin-syntax-bigint" "^7.8.3" + "@babel/plugin-syntax-class-properties" "^7.8.3" + "@babel/plugin-syntax-import-meta" "^7.8.3" + "@babel/plugin-syntax-json-strings" "^7.8.3" + "@babel/plugin-syntax-logical-assignment-operators" "^7.8.3" + "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3" + "@babel/plugin-syntax-numeric-separator" "^7.8.3" + "@babel/plugin-syntax-object-rest-spread" "^7.8.3" + "@babel/plugin-syntax-optional-catch-binding" "^7.8.3" + "@babel/plugin-syntax-optional-chaining" "^7.8.3" + "@babel/plugin-syntax-top-level-await" "^7.8.3" + +babel-preset-jest@^27.5.1: + version "27.5.1" + resolved "https://registry.yarnpkg.com/babel-preset-jest/-/babel-preset-jest-27.5.1.tgz#91f10f58034cb7989cb4f962b69fa6eef6a6bc81" + integrity sha512-Nptf2FzlPCWYuJg41HBqXVT8ym6bXOevuCTbhxlUpjwtysGaIWFvDEjp4y+G7fl13FgOdjs7P/DmErqH7da0Ag== + dependencies: + babel-plugin-jest-hoist "^27.5.1" + babel-preset-current-node-syntax "^1.0.0" + +babel-preset-jest@^29.6.3: + version "29.6.3" + resolved "https://registry.yarnpkg.com/babel-preset-jest/-/babel-preset-jest-29.6.3.tgz#fa05fa510e7d493896d7b0dd2033601c840f171c" + integrity sha512-0B3bhxR6snWXJZtR/RliHTDPRgn1sNHOR0yVtq/IiQFyuOVjFS+wuio/R4gSNkyYmKmJB4wGZv2NZanmKmTnNA== + dependencies: + babel-plugin-jest-hoist "^29.6.3" + babel-preset-current-node-syntax "^1.0.0" + +babel-preset-react-app@^10.0.1: + version "10.0.1" + resolved "https://registry.yarnpkg.com/babel-preset-react-app/-/babel-preset-react-app-10.0.1.tgz#ed6005a20a24f2c88521809fa9aea99903751584" + integrity sha512-b0D9IZ1WhhCWkrTXyFuIIgqGzSkRIH5D5AmB0bXbzYAB1OBAwHcUeyWW2LorutLWF5btNo/N7r/cIdmvvKJlYg== + dependencies: + "@babel/core" "^7.16.0" + "@babel/plugin-proposal-class-properties" "^7.16.0" + "@babel/plugin-proposal-decorators" "^7.16.4" + "@babel/plugin-proposal-nullish-coalescing-operator" "^7.16.0" + "@babel/plugin-proposal-numeric-separator" "^7.16.0" + "@babel/plugin-proposal-optional-chaining" "^7.16.0" + "@babel/plugin-proposal-private-methods" "^7.16.0" + "@babel/plugin-transform-flow-strip-types" "^7.16.0" + "@babel/plugin-transform-react-display-name" "^7.16.0" + "@babel/plugin-transform-runtime" "^7.16.4" + "@babel/preset-env" "^7.16.4" + "@babel/preset-react" "^7.16.0" + "@babel/preset-typescript" "^7.16.0" + "@babel/runtime" "^7.16.3" + babel-plugin-macros "^3.1.0" + babel-plugin-transform-react-remove-prop-types "^0.4.24" + +balanced-match@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee" + integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw== + +bash-glob@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/bash-glob/-/bash-glob-2.0.0.tgz#a8ef19450783403ed93fccca2dbe09f2cf6320dc" + integrity sha512-53/NJ+t2UAkEYgQPO6aFjbx1Ue8vNNXCYaA4EljNKP1SR8A9dSQQoBmYWR8BLXO0/NDRJEMSJ4BxWihi//m3Kw== + dependencies: + bash-path "^1.0.1" + component-emitter "^1.2.1" + cross-spawn "^5.1.0" + each-parallel-async "^1.0.0" + extend-shallow "^2.0.1" + is-extglob "^2.1.1" + is-glob "^4.0.0" + +bash-path@^1.0.1: + version "1.0.3" + resolved "https://registry.yarnpkg.com/bash-path/-/bash-path-1.0.3.tgz#dbc9efbdf18b1c11413dcb59b960e6aa56c84258" + integrity sha512-mGrYvOa6yTY/qNCiZkPFJqWmODK68y6kmVRAJ1NNbWlNoJrUrsFxu7FU2EKg7gbrer6ttrKkF2s/E/lhRy7/OA== + dependencies: + arr-union "^3.1.0" + is-windows "^1.0.1" + +batch@0.6.1: + version "0.6.1" + resolved "https://registry.yarnpkg.com/batch/-/batch-0.6.1.tgz#dc34314f4e679318093fc760272525f94bf25c16" + integrity sha512-x+VAiMRL6UPkx+kudNvxTl6hB2XNNCG2r+7wixVfIYwu/2HKRXimwQyaumLjMveWvT2Hkd/cAJw+QBMfJ/EKVw== + +bfj@^7.0.2: + version "7.1.0" + resolved "https://registry.yarnpkg.com/bfj/-/bfj-7.1.0.tgz#c5177d522103f9040e1b12980fe8c38cf41d3f8b" + integrity sha512-I6MMLkn+anzNdCUp9hMRyui1HaNEUCco50lxbvNS4+EyXg8lN3nJ48PjPWtbH8UVS9CuMoaKE9U2V3l29DaRQw== + dependencies: + bluebird "^3.7.2" + check-types "^11.2.3" + hoopy "^0.1.4" + jsonpath "^1.1.1" + tryer "^1.0.1" + +big.js@^5.2.2: + version "5.2.2" + resolved "https://registry.yarnpkg.com/big.js/-/big.js-5.2.2.tgz#65f0af382f578bcdc742bd9c281e9cb2d7768328" + integrity sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ== + +binary-extensions@^2.0.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.2.0.tgz#75f502eeaf9ffde42fc98829645be4ea76bd9e2d" + integrity sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA== + +bluebird@^3.7.2: + version "3.7.2" + resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.7.2.tgz#9f229c15be272454ffa973ace0dbee79a1b0c36f" + integrity sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg== + +body-parser@1.20.1: + version "1.20.1" + resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.20.1.tgz#b1812a8912c195cd371a3ee5e66faa2338a5c668" + integrity sha512-jWi7abTbYwajOytWCQc37VulmWiRae5RyTpaCyDcS5/lMdtwSz5lOpDE67srw/HYe35f1z3fDQw+3txg7gNtWw== + dependencies: + bytes "3.1.2" + content-type "~1.0.4" + debug "2.6.9" + depd "2.0.0" + destroy "1.2.0" + http-errors "2.0.0" + iconv-lite "0.4.24" + on-finished "2.4.1" + qs "6.11.0" + raw-body "2.5.1" + type-is "~1.6.18" + unpipe "1.0.0" + +bonjour-service@^1.0.11: + version "1.2.1" + resolved "https://registry.yarnpkg.com/bonjour-service/-/bonjour-service-1.2.1.tgz#eb41b3085183df3321da1264719fbada12478d02" + integrity sha512-oSzCS2zV14bh2kji6vNe7vrpJYCHGvcZnlffFQ1MEoX/WOeQ/teD8SYWKR942OI3INjq8OMNJlbPK5LLLUxFDw== + dependencies: + fast-deep-equal "^3.1.3" + multicast-dns "^7.2.5" + +boolbase@^1.0.0, boolbase@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/boolbase/-/boolbase-1.0.0.tgz#68dff5fbe60c51eb37725ea9e3ed310dcc1e776e" + integrity sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww== + +brace-expansion@^1.1.7: + version "1.1.11" + resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" + integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== + dependencies: + balanced-match "^1.0.0" + concat-map "0.0.1" + +brace-expansion@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-2.0.1.tgz#1edc459e0f0c548486ecf9fc99f2221364b9a0ae" + integrity sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA== + dependencies: + balanced-match "^1.0.0" + +braces@^3.0.2, braces@~3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107" + integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A== + dependencies: + fill-range "^7.0.1" + +browser-process-hrtime@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/browser-process-hrtime/-/browser-process-hrtime-1.0.0.tgz#3c9b4b7d782c8121e56f10106d84c0d0ffc94626" + integrity sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow== + +browserslist@^4.0.0, browserslist@^4.18.1, browserslist@^4.21.10, browserslist@^4.21.4, browserslist@^4.22.2: + version "4.22.3" + resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.22.3.tgz#299d11b7e947a6b843981392721169e27d60c5a6" + integrity sha512-UAp55yfwNv0klWNapjs/ktHoguxuQNGnOzxYmfnXIS+8AsRDZkSDxg7R1AX3GKzn078SBI5dzwzj/Yx0Or0e3A== + dependencies: + caniuse-lite "^1.0.30001580" + electron-to-chromium "^1.4.648" + node-releases "^2.0.14" + update-browserslist-db "^1.0.13" + +bser@2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/bser/-/bser-2.1.1.tgz#e6787da20ece9d07998533cfd9de6f5c38f4bc05" + integrity sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ== + dependencies: + node-int64 "^0.4.0" + +buffer-from@^1.0.0: + version "1.1.2" + resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.2.tgz#2b146a6fd72e80b4f55d255f35ed59a3a9a41bd5" + integrity sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ== + +builtin-modules@^3.1.0: + version "3.3.0" + resolved "https://registry.yarnpkg.com/builtin-modules/-/builtin-modules-3.3.0.tgz#cae62812b89801e9656336e46223e030386be7b6" + integrity sha512-zhaCDicdLuWN5UbN5IMnFqNMhNfo919sH85y2/ea+5Yg9TsTkeZxpL+JLbp6cgYFS4sRLp3YV4S6yDuqVWHYOw== + +bytes@3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.0.0.tgz#d32815404d689699f85a4ea4fa8755dd13a96048" + integrity sha512-pMhOfFDPiv9t5jjIXkHosWmkSyQbvsgEVNkz0ERHbuLh2T/7j4Mqqpz523Fe8MVY89KC6Sh/QfS2sM+SjgFDcw== + +bytes@3.1.2: + version "3.1.2" + resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.1.2.tgz#8b0beeb98605adf1b128fa4386403c009e0221a5" + integrity sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg== + +call-bind@^1.0.0, call-bind@^1.0.2, call-bind@^1.0.4, call-bind@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.5.tgz#6fa2b7845ce0ea49bf4d8b9ef64727a2c2e2e513" + integrity sha512-C3nQxfFZxFRVoJoGKKI8y3MOEo129NQ+FgQ08iye+Mk4zNZZGdjfs06bVTr+DBSlA66Q2VEcMki/cUCP4SercQ== + dependencies: + function-bind "^1.1.2" + get-intrinsic "^1.2.1" + set-function-length "^1.1.1" + +callsites@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73" + integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ== + +camel-case@^4.1.2: + version "4.1.2" + resolved "https://registry.yarnpkg.com/camel-case/-/camel-case-4.1.2.tgz#9728072a954f805228225a6deea6b38461e1bd5a" + integrity sha512-gxGWBrTT1JuMx6R+o5PTXMmUnhnVzLQ9SNutD4YqKtI6ap897t3tKECYla6gCWEkplXnlNybEkZg9GEGxKFCgw== + dependencies: + pascal-case "^3.1.2" + tslib "^2.0.3" + +camelcase-css@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/camelcase-css/-/camelcase-css-2.0.1.tgz#ee978f6947914cc30c6b44741b6ed1df7f043fd5" + integrity sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA== + +camelcase@^5.3.1: + version "5.3.1" + resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.3.1.tgz#e3c9b31569e106811df242f715725a1f4c494320" + integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg== + +camelcase@^6.2.0, camelcase@^6.2.1: + version "6.3.0" + resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-6.3.0.tgz#5685b95eb209ac9c0c177467778c9c84df58ba9a" + integrity sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA== + +caniuse-api@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/caniuse-api/-/caniuse-api-3.0.0.tgz#5e4d90e2274961d46291997df599e3ed008ee4c0" + integrity sha512-bsTwuIg/BZZK/vreVTYYbSWoe2F+71P7K5QGEX+pT250DZbfU1MQ5prOKpPR+LL6uWKK3KMwMCAS74QB3Um1uw== + dependencies: + browserslist "^4.0.0" + caniuse-lite "^1.0.0" + lodash.memoize "^4.1.2" + lodash.uniq "^4.5.0" + +caniuse-lite@^1.0.0, caniuse-lite@^1.0.30001578, caniuse-lite@^1.0.30001580: + version "1.0.30001581" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001581.tgz#0dfd4db9e94edbdca67d57348ebc070dece279f4" + integrity sha512-whlTkwhqV2tUmP3oYhtNfaWGYHDdS3JYFQBKXxcUR9qqPWsRhFHhoISO2Xnl/g0xyKzht9mI1LZpiNWfMzHixQ== + +case-sensitive-paths-webpack-plugin@^2.4.0: + version "2.4.0" + resolved "https://registry.yarnpkg.com/case-sensitive-paths-webpack-plugin/-/case-sensitive-paths-webpack-plugin-2.4.0.tgz#db64066c6422eed2e08cc14b986ca43796dbc6d4" + integrity sha512-roIFONhcxog0JSSWbvVAh3OocukmSgpqOH6YpMkCvav/ySIV3JKg4Dc8vYtQjYi/UxpNE36r/9v+VqTQqgkYmw== + +chalk@^2.4.1, chalk@^2.4.2: + version "2.4.2" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" + integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== + dependencies: + ansi-styles "^3.2.1" + escape-string-regexp "^1.0.5" + supports-color "^5.3.0" + +chalk@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-3.0.0.tgz#3f73c2bf526591f574cc492c51e2456349f844e4" + integrity sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg== + dependencies: + ansi-styles "^4.1.0" + supports-color "^7.1.0" + +chalk@^4.0.0, chalk@^4.0.2, chalk@^4.1.0, chalk@^4.1.2: + version "4.1.2" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.2.tgz#aac4e2b7734a740867aeb16bf02aad556a1e7a01" + integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA== + dependencies: + ansi-styles "^4.1.0" + supports-color "^7.1.0" + +chalk@^5.3.0: + version "5.3.0" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-5.3.0.tgz#67c20a7ebef70e7f3970a01f90fa210cb6860385" + integrity sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w== + +char-regex@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/char-regex/-/char-regex-1.0.2.tgz#d744358226217f981ed58f479b1d6bcc29545dcf" + integrity sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw== + +char-regex@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/char-regex/-/char-regex-2.0.1.tgz#6dafdb25f9d3349914079f010ba8d0e6ff9cd01e" + integrity sha512-oSvEeo6ZUD7NepqAat3RqoucZ5SeqLJgOvVIwkafu6IP3V0pO38s/ypdVUmDDK6qIIHNlYHJAKX9E7R7HoKElw== + +check-types@^11.2.3: + version "11.2.3" + resolved "https://registry.yarnpkg.com/check-types/-/check-types-11.2.3.tgz#1ffdf68faae4e941fce252840b1787b8edc93b71" + integrity sha512-+67P1GkJRaxQD6PKK0Et9DhwQB+vGg3PM5+aavopCpZT1lj9jeqfvpgTLAWErNj8qApkkmXlu/Ug74kmhagkXg== + +chokidar@^3.4.2, chokidar@^3.5.3: + version "3.5.3" + resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.5.3.tgz#1cf37c8707b932bd1af1ae22c0432e2acd1903bd" + integrity sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw== + dependencies: + anymatch "~3.1.2" + braces "~3.0.2" + glob-parent "~5.1.2" + is-binary-path "~2.1.0" + is-glob "~4.0.1" + normalize-path "~3.0.0" + readdirp "~3.6.0" + optionalDependencies: + fsevents "~2.3.2" + +chrome-trace-event@^1.0.2: + version "1.0.3" + resolved "https://registry.yarnpkg.com/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz#1015eced4741e15d06664a957dbbf50d041e26ac" + integrity sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg== + +ci-info@^3.2.0: + version "3.9.0" + resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-3.9.0.tgz#4279a62028a7b1f262f3473fc9605f5e218c59b4" + integrity sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ== + +cjs-module-lexer@^1.0.0: + version "1.2.3" + resolved "https://registry.yarnpkg.com/cjs-module-lexer/-/cjs-module-lexer-1.2.3.tgz#6c370ab19f8a3394e318fe682686ec0ac684d107" + integrity sha512-0TNiGstbQmCFwt4akjjBg5pLRTSyj/PkWQ1ZoO2zntmg9yLqSRxwEa4iCfQLGjqhiqBfOJa7W/E8wfGrTDmlZQ== + +clean-css@^5.2.2: + version "5.3.3" + resolved "https://registry.yarnpkg.com/clean-css/-/clean-css-5.3.3.tgz#b330653cd3bd6b75009cc25c714cae7b93351ccd" + integrity sha512-D5J+kHaVb/wKSFcyyV75uCn8fiY4sV38XJoe4CUyGQ+mOU/fMVYUdH1hJC+CJQ5uY3EnW27SbJYS4X8BiLrAFg== + dependencies: + source-map "~0.6.0" + +cliui@^7.0.2: + version "7.0.4" + resolved "https://registry.yarnpkg.com/cliui/-/cliui-7.0.4.tgz#a0265ee655476fc807aea9df3df8df7783808b4f" + integrity sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ== + dependencies: + string-width "^4.2.0" + strip-ansi "^6.0.0" + wrap-ansi "^7.0.0" + +cliui@^8.0.1: + version "8.0.1" + resolved "https://registry.yarnpkg.com/cliui/-/cliui-8.0.1.tgz#0c04b075db02cbfe60dc8e6cf2f5486b1a3608aa" + integrity sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ== + dependencies: + string-width "^4.2.0" + strip-ansi "^6.0.1" + wrap-ansi "^7.0.0" + +clsx@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/clsx/-/clsx-2.1.0.tgz#e851283bcb5c80ee7608db18487433f7b23f77cb" + integrity sha512-m3iNNWpd9rl3jvvcBnu70ylMdrXt8Vlq4HYadnU5fwcOtvkSQWPmj7amUcDT2qYI7risszBjI5AUIUox9D16pg== + +co@^4.6.0: + version "4.6.0" + resolved "https://registry.yarnpkg.com/co/-/co-4.6.0.tgz#6ea6bdf3d853ae54ccb8e47bfa0bf3f9031fb184" + integrity sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ== + +coa@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/coa/-/coa-2.0.2.tgz#43f6c21151b4ef2bf57187db0d73de229e3e7ec3" + integrity sha512-q5/jG+YQnSy4nRTV4F7lPepBJZ8qBNJJDBuJdoejDyLXgmL7IEo+Le2JDZudFTFt7mrCqIRaSjws4ygRCTCAXA== + dependencies: + "@types/q" "^1.5.1" + chalk "^2.4.1" + q "^1.1.2" + +collect-v8-coverage@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/collect-v8-coverage/-/collect-v8-coverage-1.0.2.tgz#c0b29bcd33bcd0779a1344c2136051e6afd3d9e9" + integrity sha512-lHl4d5/ONEbLlJvaJNtsF/Lz+WvB07u2ycqTYbdrq7UypDXailES4valYb2eWiJFxZlVmpGekfqoxQhzyFdT4Q== + +color-convert@^1.9.0: + version "1.9.3" + resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8" + integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg== + dependencies: + color-name "1.1.3" + +color-convert@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3" + integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ== + dependencies: + color-name "~1.1.4" + +color-name@1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" + integrity sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw== + +color-name@^1.0.0, color-name@~1.1.4: + version "1.1.4" + resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" + integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== + +color-string@^1.9.0: + version "1.9.1" + resolved "https://registry.yarnpkg.com/color-string/-/color-string-1.9.1.tgz#4467f9146f036f855b764dfb5bf8582bf342c7a4" + integrity sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg== + dependencies: + color-name "^1.0.0" + simple-swizzle "^0.2.2" + +color@^4.2.3: + version "4.2.3" + resolved "https://registry.yarnpkg.com/color/-/color-4.2.3.tgz#d781ecb5e57224ee43ea9627560107c0e0c6463a" + integrity sha512-1rXeuUUiGGrykh+CeBdu5Ie7OJwinCgQY0bc7GCRxy5xVHy+moaqkpL/jqQq0MtQOeYcrqEz4abc5f0KtU7W4A== + dependencies: + color-convert "^2.0.1" + color-string "^1.9.0" + +colord@^2.9.1: + version "2.9.3" + resolved "https://registry.yarnpkg.com/colord/-/colord-2.9.3.tgz#4f8ce919de456f1d5c1c368c307fe20f3e59fb43" + integrity sha512-jeC1axXpnb0/2nn/Y1LPuLdgXBLH7aDcHu4KEKfqw3CUhX7ZpfBSlPKyqXE6btIgEzfWtrX3/tyBCaCvXvMkOw== + +colorette@^2.0.10: + version "2.0.20" + resolved "https://registry.yarnpkg.com/colorette/-/colorette-2.0.20.tgz#9eb793e6833067f7235902fcd3b09917a000a95a" + integrity sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w== + +colors@1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/colors/-/colors-1.4.0.tgz#c50491479d4c1bdaed2c9ced32cf7c7dc2360f78" + integrity sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA== + +combined-stream@^1.0.8: + version "1.0.8" + resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.8.tgz#c3d45a8b34fd730631a110a8a2520682b31d5a7f" + integrity sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg== + dependencies: + delayed-stream "~1.0.0" + +commander@^11.0.0: + version "11.1.0" + resolved "https://registry.yarnpkg.com/commander/-/commander-11.1.0.tgz#62fdce76006a68e5c1ab3314dc92e800eb83d906" + integrity sha512-yPVavfyCcRhmorC7rWlkHn15b4wDVgVmBA7kV4QVBsF7kv/9TKJAbAXVTxvTnwP8HHKjRCJDClKbciiYS7p0DQ== + +commander@^2.11.0, commander@^2.20.0: + version "2.20.3" + resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33" + integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ== + +commander@^4.0.0: + version "4.1.1" + resolved "https://registry.yarnpkg.com/commander/-/commander-4.1.1.tgz#9fd602bd936294e9e9ef46a3f4d6964044b18068" + integrity sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA== + +commander@^7.2.0: + version "7.2.0" + resolved "https://registry.yarnpkg.com/commander/-/commander-7.2.0.tgz#a36cb57d0b501ce108e4d20559a150a391d97ab7" + integrity sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw== + +commander@^8.3.0: + version "8.3.0" + resolved "https://registry.yarnpkg.com/commander/-/commander-8.3.0.tgz#4837ea1b2da67b9c616a67afbb0fafee567bca66" + integrity sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww== + +common-path-prefix@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/common-path-prefix/-/common-path-prefix-3.0.0.tgz#7d007a7e07c58c4b4d5f433131a19141b29f11e0" + integrity sha512-QE33hToZseCH3jS0qN96O/bSh3kaw/h+Tq7ngyY9eWDUnTlTNUyqfqvCXioLe5Na5jFsL78ra/wuBU4iuEgd4w== + +common-tags@^1.8.0: + version "1.8.2" + resolved "https://registry.yarnpkg.com/common-tags/-/common-tags-1.8.2.tgz#94ebb3c076d26032745fd54face7f688ef5ac9c6" + integrity sha512-gk/Z852D2Wtb//0I+kRFNKKE9dIIVirjoqPoA1wJU+XePVXZfGeBpk45+A1rKO4Q43prqWBNY/MiIeRLbPWUaA== + +commondir@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/commondir/-/commondir-1.0.1.tgz#ddd800da0c66127393cca5950ea968a3aaf1253b" + integrity sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg== + +component-emitter@^1.2.1: + version "1.3.1" + resolved "https://registry.yarnpkg.com/component-emitter/-/component-emitter-1.3.1.tgz#ef1d5796f7d93f135ee6fb684340b26403c97d17" + integrity sha512-T0+barUSQRTUQASh8bx02dl+DhF54GtIDY13Y3m9oWTklKbb3Wv974meRpeZ3lp1JpLVECWWNHC4vaG2XHXouQ== + +compressible@~2.0.16: + version "2.0.18" + resolved "https://registry.yarnpkg.com/compressible/-/compressible-2.0.18.tgz#af53cca6b070d4c3c0750fbd77286a6d7cc46fba" + integrity sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg== + dependencies: + mime-db ">= 1.43.0 < 2" + +compression@^1.7.4: + version "1.7.4" + resolved "https://registry.yarnpkg.com/compression/-/compression-1.7.4.tgz#95523eff170ca57c29a0ca41e6fe131f41e5bb8f" + integrity sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ== + dependencies: + accepts "~1.3.5" + bytes "3.0.0" + compressible "~2.0.16" + debug "2.6.9" + on-headers "~1.0.2" + safe-buffer "5.1.2" + vary "~1.1.2" + +concat-map@0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" + integrity sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg== + +confusing-browser-globals@^1.0.11: + version "1.0.11" + resolved "https://registry.yarnpkg.com/confusing-browser-globals/-/confusing-browser-globals-1.0.11.tgz#ae40e9b57cdd3915408a2805ebd3a5585608dc81" + integrity sha512-JsPKdmh8ZkmnHxDk55FZ1TqVLvEQTvoByJZRN9jzI0UjxK/QgAmsphz7PGtqgPieQZ/CQcHWXCR7ATDNhGe+YA== + +connect-history-api-fallback@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/connect-history-api-fallback/-/connect-history-api-fallback-2.0.0.tgz#647264845251a0daf25b97ce87834cace0f5f1c8" + integrity sha512-U73+6lQFmfiNPrYbXqr6kZ1i1wiRqXnp2nhMsINseWXO8lDau0LGEffJ8kQi4EjLZympVgRdvqjAgiZ1tgzDDA== + +content-disposition@0.5.4: + version "0.5.4" + resolved "https://registry.yarnpkg.com/content-disposition/-/content-disposition-0.5.4.tgz#8b82b4efac82512a02bb0b1dcec9d2c5e8eb5bfe" + integrity sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ== + dependencies: + safe-buffer "5.2.1" + +content-type@~1.0.4: + version "1.0.5" + resolved "https://registry.yarnpkg.com/content-type/-/content-type-1.0.5.tgz#8b773162656d1d1086784c8f23a54ce6d73d7918" + integrity sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA== + +convert-source-map@^1.4.0, convert-source-map@^1.5.0, convert-source-map@^1.6.0, convert-source-map@^1.7.0: + version "1.9.0" + resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.9.0.tgz#7faae62353fb4213366d0ca98358d22e8368b05f" + integrity sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A== + +convert-source-map@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-2.0.0.tgz#4b560f649fc4e918dd0ab75cf4961e8bc882d82a" + integrity sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg== + +cookie-signature@1.0.6: + version "1.0.6" + resolved "https://registry.yarnpkg.com/cookie-signature/-/cookie-signature-1.0.6.tgz#e303a882b342cc3ee8ca513a79999734dab3ae2c" + integrity sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ== + +cookie@0.5.0: + version "0.5.0" + resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.5.0.tgz#d1f5d71adec6558c58f389987c366aa47e994f8b" + integrity sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw== + +core-js-compat@^3.31.0, core-js-compat@^3.34.0: + version "3.35.1" + resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.35.1.tgz#215247d7edb9e830efa4218ff719beb2803555e2" + integrity sha512-sftHa5qUJY3rs9Zht1WEnmkvXputCyDBczPnr7QDgL8n3qrF3CMXY4VPSYtOLLiOUJcah2WNXREd48iOl6mQIw== + dependencies: + browserslist "^4.22.2" + +core-js-pure@^3.23.3: + version "3.35.1" + resolved "https://registry.yarnpkg.com/core-js-pure/-/core-js-pure-3.35.1.tgz#f33ad7fdf9dddae260339a30e5f8363f5c49a3bc" + integrity sha512-zcIdi/CL3MWbBJYo5YCeVAAx+Sy9yJE9I3/u9LkFABwbeaPhTMRWraM8mYFp9jW5Z50hOy7FVzCc8dCrpZqtIQ== + +core-js@^3.19.2: + version "3.35.1" + resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.35.1.tgz#9c28f8b7ccee482796f8590cc8d15739eaaf980c" + integrity sha512-IgdsbxNyMskrTFxa9lWHyMwAJU5gXOPP+1yO+K59d50VLVAIDAbs7gIv705KzALModfK3ZrSZTPNpC0PQgIZuw== + +core-util-is@~1.0.0: + version "1.0.3" + resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.3.tgz#a6042d3634c2b27e9328f837b965fac83808db85" + integrity sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ== + +cosmiconfig@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-6.0.0.tgz#da4fee853c52f6b1e6935f41c1a2fc50bd4a9982" + integrity sha512-xb3ZL6+L8b9JLLCx3ZdoZy4+2ECphCMo2PwqgP1tlfVq6M6YReyzBJtvWWtbDSpNr9hn96pkCiZqUcFEc+54Qg== + dependencies: + "@types/parse-json" "^4.0.0" + import-fresh "^3.1.0" + parse-json "^5.0.0" + path-type "^4.0.0" + yaml "^1.7.2" + +cosmiconfig@^7.0.0: + version "7.1.0" + resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-7.1.0.tgz#1443b9afa596b670082ea46cbd8f6a62b84635f6" + integrity sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA== + dependencies: + "@types/parse-json" "^4.0.0" + import-fresh "^3.2.1" + parse-json "^5.0.0" + path-type "^4.0.0" + yaml "^1.10.0" + +create-jest@^29.7.0: + version "29.7.0" + resolved "https://registry.yarnpkg.com/create-jest/-/create-jest-29.7.0.tgz#a355c5b3cb1e1af02ba177fe7afd7feee49a5320" + integrity sha512-Adz2bdH0Vq3F53KEMJOoftQFutWCukm6J24wbPWRO4k1kMY7gS7ds/uoJkNuV8wDCtWWnuwGcJwpWcih+zEW1Q== + dependencies: + "@jest/types" "^29.6.3" + chalk "^4.0.0" + exit "^0.1.2" + graceful-fs "^4.2.9" + jest-config "^29.7.0" + jest-util "^29.7.0" + prompts "^2.0.1" + +cross-spawn@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-5.1.0.tgz#e8bd0efee58fcff6f8f94510a0a554bbfa235449" + integrity sha512-pTgQJ5KC0d2hcY8eyL1IzlBPYjTkyH72XRZPnLyKus2mBfNjQs3klqbJU2VILqZryAZUt9JOb3h/mWMy23/f5A== + dependencies: + lru-cache "^4.0.1" + shebang-command "^1.2.0" + which "^1.2.9" + +cross-spawn@^7.0.0, cross-spawn@^7.0.2, cross-spawn@^7.0.3: + version "7.0.3" + resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6" + integrity sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w== + dependencies: + path-key "^3.1.0" + shebang-command "^2.0.0" + which "^2.0.1" + +crypto-random-string@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/crypto-random-string/-/crypto-random-string-2.0.0.tgz#ef2a7a966ec11083388369baa02ebead229b30d5" + integrity sha512-v1plID3y9r/lPhviJ1wrXpLeyUIGAZ2SHNYTEapm7/8A9nLPoyvVp3RK/EPFqn5kEznyWgYZNsRtYYIWbuG8KA== + +css-blank-pseudo@^3.0.3: + version "3.0.3" + resolved "https://registry.yarnpkg.com/css-blank-pseudo/-/css-blank-pseudo-3.0.3.tgz#36523b01c12a25d812df343a32c322d2a2324561" + integrity sha512-VS90XWtsHGqoM0t4KpH053c4ehxZ2E6HtGI7x68YFV0pTo/QmkV/YFA+NnlvK8guxZVNWGQhVNJGC39Q8XF4OQ== + dependencies: + postcss-selector-parser "^6.0.9" + +css-declaration-sorter@^6.3.1: + version "6.4.1" + resolved "https://registry.yarnpkg.com/css-declaration-sorter/-/css-declaration-sorter-6.4.1.tgz#28beac7c20bad7f1775be3a7129d7eae409a3a71" + integrity sha512-rtdthzxKuyq6IzqX6jEcIzQF/YqccluefyCYheovBOLhFT/drQA9zj/UbRAa9J7C0o6EG6u3E6g+vKkay7/k3g== + +css-has-pseudo@^3.0.4: + version "3.0.4" + resolved "https://registry.yarnpkg.com/css-has-pseudo/-/css-has-pseudo-3.0.4.tgz#57f6be91ca242d5c9020ee3e51bbb5b89fc7af73" + integrity sha512-Vse0xpR1K9MNlp2j5w1pgWIJtm1a8qS0JwS9goFYcImjlHEmywP9VUF05aGBXzGpDJF86QXk4L0ypBmwPhGArw== + dependencies: + postcss-selector-parser "^6.0.9" + +css-loader@^6.5.1: + version "6.10.0" + resolved "https://registry.yarnpkg.com/css-loader/-/css-loader-6.10.0.tgz#7c172b270ec7b833951b52c348861206b184a4b7" + integrity sha512-LTSA/jWbwdMlk+rhmElbDR2vbtQoTBPr7fkJE+mxrHj+7ru0hUmHafDRzWIjIHTwpitWVaqY2/UWGRca3yUgRw== + dependencies: + icss-utils "^5.1.0" + postcss "^8.4.33" + postcss-modules-extract-imports "^3.0.0" + postcss-modules-local-by-default "^4.0.4" + postcss-modules-scope "^3.1.1" + postcss-modules-values "^4.0.0" + postcss-value-parser "^4.2.0" + semver "^7.5.4" + +css-minimizer-webpack-plugin@^3.2.0: + version "3.4.1" + resolved "https://registry.yarnpkg.com/css-minimizer-webpack-plugin/-/css-minimizer-webpack-plugin-3.4.1.tgz#ab78f781ced9181992fe7b6e4f3422e76429878f" + integrity sha512-1u6D71zeIfgngN2XNRJefc/hY7Ybsxd74Jm4qngIXyUEk7fss3VUzuHxLAq/R8NAba4QU9OUSaMZlbpRc7bM4Q== + dependencies: + cssnano "^5.0.6" + jest-worker "^27.0.2" + postcss "^8.3.5" + schema-utils "^4.0.0" + serialize-javascript "^6.0.0" + source-map "^0.6.1" + +css-prefers-color-scheme@^6.0.3: + version "6.0.3" + resolved "https://registry.yarnpkg.com/css-prefers-color-scheme/-/css-prefers-color-scheme-6.0.3.tgz#ca8a22e5992c10a5b9d315155e7caee625903349" + integrity sha512-4BqMbZksRkJQx2zAjrokiGMd07RqOa2IxIrrN10lyBe9xhn9DEvjUK79J6jkeiv9D9hQFXKb6g1jwU62jziJZA== + +css-select-base-adapter@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/css-select-base-adapter/-/css-select-base-adapter-0.1.1.tgz#3b2ff4972cc362ab88561507a95408a1432135d7" + integrity sha512-jQVeeRG70QI08vSTwf1jHxp74JoZsr2XSgETae8/xC8ovSnL2WF87GTLO86Sbwdt2lK4Umg4HnnwMO4YF3Ce7w== + +css-select@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/css-select/-/css-select-2.1.0.tgz#6a34653356635934a81baca68d0255432105dbef" + integrity sha512-Dqk7LQKpwLoH3VovzZnkzegqNSuAziQyNZUcrdDM401iY+R5NkGBXGmtO05/yaXQziALuPogeG0b7UAgjnTJTQ== + dependencies: + boolbase "^1.0.0" + css-what "^3.2.1" + domutils "^1.7.0" + nth-check "^1.0.2" + +css-select@^4.1.3: + version "4.3.0" + resolved "https://registry.yarnpkg.com/css-select/-/css-select-4.3.0.tgz#db7129b2846662fd8628cfc496abb2b59e41529b" + integrity sha512-wPpOYtnsVontu2mODhA19JrqWxNsfdatRKd64kmpRbQgh1KtItko5sTnEpPdpSaJszTOhEMlF/RPz28qj4HqhQ== + dependencies: + boolbase "^1.0.0" + css-what "^6.0.1" + domhandler "^4.3.1" + domutils "^2.8.0" + nth-check "^2.0.1" + +css-tree@1.0.0-alpha.37: + version "1.0.0-alpha.37" + resolved "https://registry.yarnpkg.com/css-tree/-/css-tree-1.0.0-alpha.37.tgz#98bebd62c4c1d9f960ec340cf9f7522e30709a22" + integrity sha512-DMxWJg0rnz7UgxKT0Q1HU/L9BeJI0M6ksor0OgqOnF+aRCDWg/N2641HmVyU9KVIu0OVVWOb2IpC9A+BJRnejg== + dependencies: + mdn-data "2.0.4" + source-map "^0.6.1" + +css-tree@^1.1.2, css-tree@^1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/css-tree/-/css-tree-1.1.3.tgz#eb4870fb6fd7707327ec95c2ff2ab09b5e8db91d" + integrity sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q== + dependencies: + mdn-data "2.0.14" + source-map "^0.6.1" + +css-what@^3.2.1: + version "3.4.2" + resolved "https://registry.yarnpkg.com/css-what/-/css-what-3.4.2.tgz#ea7026fcb01777edbde52124e21f327e7ae950e4" + integrity sha512-ACUm3L0/jiZTqfzRM3Hi9Q8eZqd6IK37mMWPLz9PJxkLWllYeRf+EHUSHYEtFop2Eqytaq1FizFVh7XfBnXCDQ== + +css-what@^6.0.1: + version "6.1.0" + resolved "https://registry.yarnpkg.com/css-what/-/css-what-6.1.0.tgz#fb5effcf76f1ddea2c81bdfaa4de44e79bac70f4" + integrity sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw== + +css.escape@^1.5.1: + version "1.5.1" + resolved "https://registry.yarnpkg.com/css.escape/-/css.escape-1.5.1.tgz#42e27d4fa04ae32f931a4b4d4191fa9cddee97cb" + integrity sha512-YUifsXXuknHlUsmlgyY0PKzgPOr7/FjCePfHNt0jxm83wHZi44VDMQ7/fGNkjY3/jV1MC+1CmZbaHzugyeRtpg== + +cssdb@^7.1.0: + version "7.10.0" + resolved "https://registry.yarnpkg.com/cssdb/-/cssdb-7.10.0.tgz#08816db7b793f088263e8f61dfe8d7f11a3459f2" + integrity sha512-yGZ5tmA57gWh/uvdQBHs45wwFY0IBh3ypABk5sEubPBPSzXzkNgsWReqx7gdx6uhC+QoFBe+V8JwBB9/hQ6cIA== + +cssesc@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/cssesc/-/cssesc-3.0.0.tgz#37741919903b868565e1c09ea747445cd18983ee" + integrity sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg== + +cssnano-preset-default@^5.2.14: + version "5.2.14" + resolved "https://registry.yarnpkg.com/cssnano-preset-default/-/cssnano-preset-default-5.2.14.tgz#309def4f7b7e16d71ab2438052093330d9ab45d8" + integrity sha512-t0SFesj/ZV2OTylqQVOrFgEh5uanxbO6ZAdeCrNsUQ6fVuXwYTxJPNAGvGTxHbD68ldIJNec7PyYZDBrfDQ+6A== + dependencies: + css-declaration-sorter "^6.3.1" + cssnano-utils "^3.1.0" + postcss-calc "^8.2.3" + postcss-colormin "^5.3.1" + postcss-convert-values "^5.1.3" + postcss-discard-comments "^5.1.2" + postcss-discard-duplicates "^5.1.0" + postcss-discard-empty "^5.1.1" + postcss-discard-overridden "^5.1.0" + postcss-merge-longhand "^5.1.7" + postcss-merge-rules "^5.1.4" + postcss-minify-font-values "^5.1.0" + postcss-minify-gradients "^5.1.1" + postcss-minify-params "^5.1.4" + postcss-minify-selectors "^5.2.1" + postcss-normalize-charset "^5.1.0" + postcss-normalize-display-values "^5.1.0" + postcss-normalize-positions "^5.1.1" + postcss-normalize-repeat-style "^5.1.1" + postcss-normalize-string "^5.1.0" + postcss-normalize-timing-functions "^5.1.0" + postcss-normalize-unicode "^5.1.1" + postcss-normalize-url "^5.1.0" + postcss-normalize-whitespace "^5.1.1" + postcss-ordered-values "^5.1.3" + postcss-reduce-initial "^5.1.2" + postcss-reduce-transforms "^5.1.0" + postcss-svgo "^5.1.0" + postcss-unique-selectors "^5.1.1" + +cssnano-utils@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/cssnano-utils/-/cssnano-utils-3.1.0.tgz#95684d08c91511edfc70d2636338ca37ef3a6861" + integrity sha512-JQNR19/YZhz4psLX/rQ9M83e3z2Wf/HdJbryzte4a3NSuafyp9w/I4U+hx5C2S9g41qlstH7DEWnZaaj83OuEA== + +cssnano@^5.0.6: + version "5.1.15" + resolved "https://registry.yarnpkg.com/cssnano/-/cssnano-5.1.15.tgz#ded66b5480d5127fcb44dac12ea5a983755136bf" + integrity sha512-j+BKgDcLDQA+eDifLx0EO4XSA56b7uut3BQFH+wbSaSTuGLuiyTa/wbRYthUXX8LC9mLg+WWKe8h+qJuwTAbHw== + dependencies: + cssnano-preset-default "^5.2.14" + lilconfig "^2.0.3" + yaml "^1.10.2" + +csso@^4.0.2, csso@^4.2.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/csso/-/csso-4.2.0.tgz#ea3a561346e8dc9f546d6febedd50187cf389529" + integrity sha512-wvlcdIbf6pwKEk7vHj8/Bkc0B4ylXZruLvOgs9doS5eOsOpuodOV2zJChSpkp+pRpYQLQMeF04nr3Z68Sta9jA== + dependencies: + css-tree "^1.1.2" + +cssom@^0.4.4: + version "0.4.4" + resolved "https://registry.yarnpkg.com/cssom/-/cssom-0.4.4.tgz#5a66cf93d2d0b661d80bf6a44fb65f5c2e4e0a10" + integrity sha512-p3pvU7r1MyyqbTk+WbNJIgJjG2VmTIaB10rI93LzVPrmDJKkzKYMtxxyAvQXR/NS6otuzveI7+7BBq3SjBS2mw== + +cssom@~0.3.6: + version "0.3.8" + resolved "https://registry.yarnpkg.com/cssom/-/cssom-0.3.8.tgz#9f1276f5b2b463f2114d3f2c75250af8c1a36f4a" + integrity sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg== + +cssstyle@^2.3.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/cssstyle/-/cssstyle-2.3.0.tgz#ff665a0ddbdc31864b09647f34163443d90b0852" + integrity sha512-AZL67abkUzIuvcHqk7c09cezpGNcxUxU4Ioi/05xHk4DQeTkWmGYftIE6ctU6AEt+Gn4n1lDStOtj7FKycP71A== + dependencies: + cssom "~0.3.6" + +csstype@^3.0.2, csstype@^3.1.2: + version "3.1.3" + resolved "https://registry.yarnpkg.com/csstype/-/csstype-3.1.3.tgz#d80ff294d114fb0e6ac500fbf85b60137d7eff81" + integrity sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw== + +damerau-levenshtein@^1.0.8: + version "1.0.8" + resolved "https://registry.yarnpkg.com/damerau-levenshtein/-/damerau-levenshtein-1.0.8.tgz#b43d286ccbd36bc5b2f7ed41caf2d0aba1f8a6e7" + integrity sha512-sdQSFB7+llfUcQHUQO3+B8ERRj0Oa4w9POWMI/puGtuf7gFywGmkaLCElnudfTiKZV+NvHqL0ifzdrI8Ro7ESA== + +data-urls@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/data-urls/-/data-urls-2.0.0.tgz#156485a72963a970f5d5821aaf642bef2bf2db9b" + integrity sha512-X5eWTSXO/BJmpdIKCRuKUgSCgAN0OwliVK3yPKbwIWU1Tdw5BRajxlzMidvh+gwko9AfQ9zIj52pzF91Q3YAvQ== + dependencies: + abab "^2.0.3" + whatwg-mimetype "^2.3.0" + whatwg-url "^8.0.0" + +date-fns@^3.0.6: + version "3.3.1" + resolved "https://registry.yarnpkg.com/date-fns/-/date-fns-3.3.1.tgz#7581daca0892d139736697717a168afbb908cfed" + integrity sha512-y8e109LYGgoQDveiEBD3DYXKba1jWf5BA8YU1FL5Tvm0BTdEfy54WLCwnuYWZNnzzvALy/QQ4Hov+Q9RVRv+Zw== + +debug@2.6.9, debug@^2.6.0: + version "2.6.9" + resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" + integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== + dependencies: + ms "2.0.0" + +debug@4, debug@^4.1.0, debug@^4.1.1, debug@^4.3.1, debug@^4.3.2, debug@^4.3.4: + version "4.3.4" + resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.4.tgz#1319f6579357f2338d3337d2cdd4914bb5dcc865" + integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ== + dependencies: + ms "2.1.2" + +debug@^3.2.7: + version "3.2.7" + resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.7.tgz#72580b7e9145fb39b6676f9c5e5fb100b934179a" + integrity sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ== + dependencies: + ms "^2.1.1" + +decimal.js@^10.2.1: + version "10.4.3" + resolved "https://registry.yarnpkg.com/decimal.js/-/decimal.js-10.4.3.tgz#1044092884d245d1b7f65725fa4ad4c6f781cc23" + integrity sha512-VBBaLc1MgL5XpzgIP7ny5Z6Nx3UrRkIViUkPUdtl9aya5amy3De1gsUUSB1g3+3sExYNjCAsAznmukyxCb1GRA== + +dedent@^0.7.0: + version "0.7.0" + resolved "https://registry.yarnpkg.com/dedent/-/dedent-0.7.0.tgz#2495ddbaf6eb874abb0e1be9df22d2e5a544326c" + integrity sha512-Q6fKUPqnAHAyhiUgFU7BUzLiv0kd8saH9al7tnu5Q/okj6dnupxyTgFIBjVzJATdfIAm9NAsvXNzjaKa+bxVyA== + +dedent@^1.0.0: + version "1.5.1" + resolved "https://registry.yarnpkg.com/dedent/-/dedent-1.5.1.tgz#4f3fc94c8b711e9bb2800d185cd6ad20f2a90aff" + integrity sha512-+LxW+KLWxu3HW3M2w2ympwtqPrqYRzU8fqi6Fhd18fBALe15blJPI/I4+UHveMVG6lJqB4JNd4UG0S5cnVHwIg== + +deep-equal@^2.0.5: + version "2.2.3" + resolved "https://registry.yarnpkg.com/deep-equal/-/deep-equal-2.2.3.tgz#af89dafb23a396c7da3e862abc0be27cf51d56e1" + integrity sha512-ZIwpnevOurS8bpT4192sqAowWM76JDKSHYzMLty3BZGSswgq6pBaH3DhCSW5xVAZICZyKdOBPjwww5wfgT/6PA== + dependencies: + array-buffer-byte-length "^1.0.0" + call-bind "^1.0.5" + es-get-iterator "^1.1.3" + get-intrinsic "^1.2.2" + is-arguments "^1.1.1" + is-array-buffer "^3.0.2" + is-date-object "^1.0.5" + is-regex "^1.1.4" + is-shared-array-buffer "^1.0.2" + isarray "^2.0.5" + object-is "^1.1.5" + object-keys "^1.1.1" + object.assign "^4.1.4" + regexp.prototype.flags "^1.5.1" + side-channel "^1.0.4" + which-boxed-primitive "^1.0.2" + which-collection "^1.0.1" + which-typed-array "^1.1.13" + +deep-is@^0.1.3, deep-is@~0.1.3: + version "0.1.4" + resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.4.tgz#a6f2dce612fadd2ef1f519b73551f17e85199831" + integrity sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ== + +deepmerge@^4.2.2: + version "4.3.1" + resolved "https://registry.yarnpkg.com/deepmerge/-/deepmerge-4.3.1.tgz#44b5f2147cd3b00d4b56137685966f26fd25dd4a" + integrity sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A== + +default-gateway@^6.0.3: + version "6.0.3" + resolved "https://registry.yarnpkg.com/default-gateway/-/default-gateway-6.0.3.tgz#819494c888053bdb743edbf343d6cdf7f2943a71" + integrity sha512-fwSOJsbbNzZ/CUFpqFBqYfYNLj1NbMPm8MMCIzHjC83iSJRBEGmDUxU+WP661BaBQImeC2yHwXtz+P/O9o+XEg== + dependencies: + execa "^5.0.0" + +define-data-property@^1.0.1, define-data-property@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/define-data-property/-/define-data-property-1.1.1.tgz#c35f7cd0ab09883480d12ac5cb213715587800b3" + integrity sha512-E7uGkTzkk1d0ByLeSc6ZsFS79Axg+m1P/VsgYsxHgiuc3tFSj+MjMIwe90FC4lOAZzNBdY7kkO2P2wKdsQ1vgQ== + dependencies: + get-intrinsic "^1.2.1" + gopd "^1.0.1" + has-property-descriptors "^1.0.0" + +define-lazy-prop@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz#3f7ae421129bcaaac9bc74905c98a0009ec9ee7f" + integrity sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og== + +define-properties@^1.1.3, define-properties@^1.2.0, define-properties@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.2.1.tgz#10781cc616eb951a80a034bafcaa7377f6af2b6c" + integrity sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg== + dependencies: + define-data-property "^1.0.1" + has-property-descriptors "^1.0.0" + object-keys "^1.1.1" + +delayed-stream@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" + integrity sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ== + +depd@2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/depd/-/depd-2.0.0.tgz#b696163cc757560d09cf22cc8fad1571b79e76df" + integrity sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw== + +depd@~1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/depd/-/depd-1.1.2.tgz#9bcd52e14c097763e749b274c4346ed2e560b5a9" + integrity sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ== + +dequal@^2.0.3: + version "2.0.3" + resolved "https://registry.yarnpkg.com/dequal/-/dequal-2.0.3.tgz#2644214f1997d39ed0ee0ece72335490a7ac67be" + integrity sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA== + +destroy@1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/destroy/-/destroy-1.2.0.tgz#4803735509ad8be552934c67df614f94e66fa015" + integrity sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg== + +detect-newline@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/detect-newline/-/detect-newline-3.1.0.tgz#576f5dfc63ae1a192ff192d8ad3af6308991b651" + integrity sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA== + +detect-node@^2.0.4: + version "2.1.0" + resolved "https://registry.yarnpkg.com/detect-node/-/detect-node-2.1.0.tgz#c9c70775a49c3d03bc2c06d9a73be550f978f8b1" + integrity sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g== + +detect-port-alt@^1.1.6: + version "1.1.6" + resolved "https://registry.yarnpkg.com/detect-port-alt/-/detect-port-alt-1.1.6.tgz#24707deabe932d4a3cf621302027c2b266568275" + integrity sha512-5tQykt+LqfJFBEYaDITx7S7cR7mJ/zQmLXZ2qt5w04ainYZw6tBf9dBunMjVeVOdYVRUzUOE4HkY5J7+uttb5Q== + dependencies: + address "^1.0.1" + debug "^2.6.0" + +didyoumean@^1.2.2: + version "1.2.2" + resolved "https://registry.yarnpkg.com/didyoumean/-/didyoumean-1.2.2.tgz#989346ffe9e839b4555ecf5666edea0d3e8ad037" + integrity sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw== + +diff-sequences@^27.5.1: + version "27.5.1" + resolved "https://registry.yarnpkg.com/diff-sequences/-/diff-sequences-27.5.1.tgz#eaecc0d327fd68c8d9672a1e64ab8dccb2ef5327" + integrity sha512-k1gCAXAsNgLwEL+Y8Wvl+M6oEFj5bgazfZULpS5CneoPPXRaCCW7dm+q21Ky2VEE5X+VeRDBVg1Pcvvsr4TtNQ== + +diff-sequences@^29.6.3: + version "29.6.3" + resolved "https://registry.yarnpkg.com/diff-sequences/-/diff-sequences-29.6.3.tgz#4deaf894d11407c51efc8418012f9e70b84ea921" + integrity sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q== + +dir-glob@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/dir-glob/-/dir-glob-3.0.1.tgz#56dbf73d992a4a93ba1584f4534063fd2e41717f" + integrity sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA== + dependencies: + path-type "^4.0.0" + +dlv@^1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/dlv/-/dlv-1.1.3.tgz#5c198a8a11453596e751494d49874bc7732f2e79" + integrity sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA== + +dns-packet@^5.2.2: + version "5.6.1" + resolved "https://registry.yarnpkg.com/dns-packet/-/dns-packet-5.6.1.tgz#ae888ad425a9d1478a0674256ab866de1012cf2f" + integrity sha512-l4gcSouhcgIKRvyy99RNVOgxXiicE+2jZoNmaNmZ6JXiGajBOJAesk1OBlJuM5k2c+eudGdLxDqXuPCKIj6kpw== + dependencies: + "@leichtgewicht/ip-codec" "^2.0.1" + +doctrine@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-2.1.0.tgz#5cd01fc101621b42c4cd7f5d1a66243716d3f39d" + integrity sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw== + dependencies: + esutils "^2.0.2" + +doctrine@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-3.0.0.tgz#addebead72a6574db783639dc87a121773973961" + integrity sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w== + dependencies: + esutils "^2.0.2" + +dom-accessibility-api@^0.5.9: + version "0.5.16" + resolved "https://registry.yarnpkg.com/dom-accessibility-api/-/dom-accessibility-api-0.5.16.tgz#5a7429e6066eb3664d911e33fb0e45de8eb08453" + integrity sha512-X7BJ2yElsnOJ30pZF4uIIDfBEVgF4XEBxL9Bxhy6dnrm5hkzqmsWHGTiHqRiITNhMyFLyAiWndIJP7Z1NTteDg== + +dom-accessibility-api@^0.6.3: + version "0.6.3" + resolved "https://registry.yarnpkg.com/dom-accessibility-api/-/dom-accessibility-api-0.6.3.tgz#993e925cc1d73f2c662e7d75dd5a5445259a8fd8" + integrity sha512-7ZgogeTnjuHbo+ct10G9Ffp0mif17idi0IyWNVA/wcwcm7NPOD/WEHVP3n7n3MhXqxoIYm8d6MuZohYWIZ4T3w== + +dom-converter@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/dom-converter/-/dom-converter-0.2.0.tgz#6721a9daee2e293682955b6afe416771627bb768" + integrity sha512-gd3ypIPfOMr9h5jIKq8E3sHOTCjeirnl0WK5ZdS1AW0Odt0b1PaWaHdJ4Qk4klv+YB9aJBS7mESXjFoDQPu6DA== + dependencies: + utila "~0.4" + +dom-helpers@^5.0.1: + version "5.2.1" + resolved "https://registry.yarnpkg.com/dom-helpers/-/dom-helpers-5.2.1.tgz#d9400536b2bf8225ad98fe052e029451ac40e902" + integrity sha512-nRCa7CK3VTrM2NmGkIy4cbK7IZlgBE/PYMn55rrXefr5xXDP0LdtfPnblFDoVdcAfslJ7or6iqAUnx0CCGIWQA== + dependencies: + "@babel/runtime" "^7.8.7" + csstype "^3.0.2" + +dom-serializer@0: + version "0.2.2" + resolved "https://registry.yarnpkg.com/dom-serializer/-/dom-serializer-0.2.2.tgz#1afb81f533717175d478655debc5e332d9f9bb51" + integrity sha512-2/xPb3ORsQ42nHYiSunXkDjPLBaEj/xTwUO4B7XCZQTRk7EBtTOPaygh10YAAh2OI1Qrp6NWfpAhzswj0ydt9g== + dependencies: + domelementtype "^2.0.1" + entities "^2.0.0" + +dom-serializer@^1.0.1: + version "1.4.1" + resolved "https://registry.yarnpkg.com/dom-serializer/-/dom-serializer-1.4.1.tgz#de5d41b1aea290215dc45a6dae8adcf1d32e2d30" + integrity sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag== + dependencies: + domelementtype "^2.0.1" + domhandler "^4.2.0" + entities "^2.0.0" + +domelementtype@1: + version "1.3.1" + resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-1.3.1.tgz#d048c44b37b0d10a7f2a3d5fee3f4333d790481f" + integrity sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w== + +domelementtype@^2.0.1, domelementtype@^2.2.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-2.3.0.tgz#5c45e8e869952626331d7aab326d01daf65d589d" + integrity sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw== + +domexception@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/domexception/-/domexception-2.0.1.tgz#fb44aefba793e1574b0af6aed2801d057529f304" + integrity sha512-yxJ2mFy/sibVQlu5qHjOkf9J3K6zgmCxgJ94u2EdvDOV09H+32LtRswEcUsmUWN72pVLOEnTSRaIVVzVQgS0dg== + dependencies: + webidl-conversions "^5.0.0" + +domhandler@^4.0.0, domhandler@^4.2.0, domhandler@^4.3.1: + version "4.3.1" + resolved "https://registry.yarnpkg.com/domhandler/-/domhandler-4.3.1.tgz#8d792033416f59d68bc03a5aa7b018c1ca89279c" + integrity sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ== + dependencies: + domelementtype "^2.2.0" + +dompurify@^2.2.9: + version "2.4.7" + resolved "https://registry.yarnpkg.com/dompurify/-/dompurify-2.4.7.tgz#277adeb40a2c84be2d42a8bcd45f582bfa4d0cfc" + integrity sha512-kxxKlPEDa6Nc5WJi+qRgPbOAbgTpSULL+vI3NUXsZMlkJxTqYI9wg5ZTay2sFrdZRWHPWNi+EdAhcJf81WtoMQ== + +domutils@^1.7.0: + version "1.7.0" + resolved "https://registry.yarnpkg.com/domutils/-/domutils-1.7.0.tgz#56ea341e834e06e6748af7a1cb25da67ea9f8c2a" + integrity sha512-Lgd2XcJ/NjEw+7tFvfKxOzCYKZsdct5lczQ2ZaQY8Djz7pfAD3Gbp8ySJWtreII/vDlMVmxwa6pHmdxIYgttDg== + dependencies: + dom-serializer "0" + domelementtype "1" + +domutils@^2.5.2, domutils@^2.8.0: + version "2.8.0" + resolved "https://registry.yarnpkg.com/domutils/-/domutils-2.8.0.tgz#4437def5db6e2d1f5d6ee859bd95ca7d02048135" + integrity sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A== + dependencies: + dom-serializer "^1.0.1" + domelementtype "^2.2.0" + domhandler "^4.2.0" + +dot-case@^3.0.4: + version "3.0.4" + resolved "https://registry.yarnpkg.com/dot-case/-/dot-case-3.0.4.tgz#9b2b670d00a431667a8a75ba29cd1b98809ce751" + integrity sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w== + dependencies: + no-case "^3.0.4" + tslib "^2.0.3" + +dotenv-expand@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/dotenv-expand/-/dotenv-expand-5.1.0.tgz#3fbaf020bfd794884072ea26b1e9791d45a629f0" + integrity sha512-YXQl1DSa4/PQyRfgrv6aoNjhasp/p4qs9FjJ4q4cQk+8m4r6k4ZSiEyytKG8f8W9gi8WsQtIObNmKd+tMzNTmA== + +dotenv@^10.0.0: + version "10.0.0" + resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-10.0.0.tgz#3d4227b8fb95f81096cdd2b66653fb2c7085ba81" + integrity sha512-rlBi9d8jpv9Sf1klPjNfFAuWDjKLwTIJJ/VxtoTwIR6hnZxcEOQCZg2oIL3MWBYw5GpUDKOEnND7LXTbIpQ03Q== + +duplexer@^0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/duplexer/-/duplexer-0.1.2.tgz#3abe43aef3835f8ae077d136ddce0f276b0400e6" + integrity sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg== + +each-parallel-async@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/each-parallel-async/-/each-parallel-async-1.0.0.tgz#91783e190000c7dd588336b2d468ebaf71980f7b" + integrity sha512-P/9kLQiQj0vZNzphvKKTgRgMnlqs5cJsxeAiuog1jrUnwv0Z3hVUwJDQiP7MnLb2I9S15nR9SRUceFT9IxtqRg== + +eastasianwidth@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/eastasianwidth/-/eastasianwidth-0.2.0.tgz#696ce2ec0aa0e6ea93a397ffcf24aa7840c827cb" + integrity sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA== + +ee-first@1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d" + integrity sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow== + +ejs@^3.1.6: + version "3.1.9" + resolved "https://registry.yarnpkg.com/ejs/-/ejs-3.1.9.tgz#03c9e8777fe12686a9effcef22303ca3d8eeb361" + integrity sha512-rC+QVNMJWv+MtPgkt0y+0rVEIdbtxVADApW9JXrUVlzHetgcyczP/E7DJmWJ4fJCZF2cPcBk0laWO9ZHMG3DmQ== + dependencies: + jake "^10.8.5" + +electron-to-chromium@^1.4.648: + version "1.4.651" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.651.tgz#ef1e822233c6fc953df3caf943f78c21b254a080" + integrity sha512-jjks7Xx+4I7dslwsbaFocSwqBbGHQmuXBJUK9QBZTIrzPq3pzn6Uf2szFSP728FtLYE3ldiccmlkOM/zhGKCpA== + +emittery@^0.10.2: + version "0.10.2" + resolved "https://registry.yarnpkg.com/emittery/-/emittery-0.10.2.tgz#902eec8aedb8c41938c46e9385e9db7e03182933" + integrity sha512-aITqOwnLanpHLNXZJENbOgjUBeHocD+xsSJmNrjovKBW5HbSpW3d1pEls7GFQPUWXiwG9+0P4GtHfEqC/4M0Iw== + +emittery@^0.13.1: + version "0.13.1" + resolved "https://registry.yarnpkg.com/emittery/-/emittery-0.13.1.tgz#c04b8c3457490e0847ae51fced3af52d338e3dad" + integrity sha512-DeWwawk6r5yR9jFgnDKYt4sLS0LmHJJi3ZOnb5/JdbYwj3nW+FxQnHIjhBKz8YLC7oRNPVM9NQ47I3CVx34eqQ== + +emittery@^0.8.1: + version "0.8.1" + resolved "https://registry.yarnpkg.com/emittery/-/emittery-0.8.1.tgz#bb23cc86d03b30aa75a7f734819dee2e1ba70860" + integrity sha512-uDfvUjVrfGJJhymx/kz6prltenw1u7WrCg1oa94zYY8xxVpLLUu045LAT0dhDZdXG58/EpPL/5kA180fQ/qudg== + +emoji-regex@^8.0.0: + version "8.0.0" + resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37" + integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A== + +emoji-regex@^9.2.2: + version "9.2.2" + resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-9.2.2.tgz#840c8803b0d8047f4ff0cf963176b32d4ef3ed72" + integrity sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg== + +emojis-list@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/emojis-list/-/emojis-list-3.0.0.tgz#5570662046ad29e2e916e71aae260abdff4f6a78" + integrity sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q== + +encodeurl@~1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.2.tgz#ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59" + integrity sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w== + +enhanced-resolve@^5.15.0: + version "5.15.0" + resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-5.15.0.tgz#1af946c7d93603eb88e9896cee4904dc012e9c35" + integrity sha512-LXYT42KJ7lpIKECr2mAXIaMldcNCh/7E0KBKOu4KSfkHmP+mZmSs+8V5gBAqisWBy0OO4W5Oyys0GO1Y8KtdKg== + dependencies: + graceful-fs "^4.2.4" + tapable "^2.2.0" + +entities@^2.0.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/entities/-/entities-2.2.0.tgz#098dc90ebb83d8dffa089d55256b351d34c4da55" + integrity sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A== + +eol@^0.9.1: + version "0.9.1" + resolved "https://registry.yarnpkg.com/eol/-/eol-0.9.1.tgz#f701912f504074be35c6117a5c4ade49cd547acd" + integrity sha512-Ds/TEoZjwggRoz/Q2O7SE3i4Jm66mqTDfmdHdq/7DKVk3bro9Q8h6WdXKdPqFLMoqxrDK5SVRzHVPOS6uuGtrg== + +error-ex@^1.3.1: + version "1.3.2" + resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.2.tgz#b4ac40648107fdcdcfae242f428bea8a14d4f1bf" + integrity sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g== + dependencies: + is-arrayish "^0.2.1" + +error-stack-parser@^2.0.6: + version "2.1.4" + resolved "https://registry.yarnpkg.com/error-stack-parser/-/error-stack-parser-2.1.4.tgz#229cb01cdbfa84440bfa91876285b94680188286" + integrity sha512-Sk5V6wVazPhq5MhpO+AUxJn5x7XSXGl1R93Vn7i+zS15KDVxQijejNCrz8340/2bgLBjR9GtEG8ZVKONDjcqGQ== + dependencies: + stackframe "^1.3.4" + +es-abstract@^1.17.2, es-abstract@^1.22.1: + version "1.22.3" + resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.22.3.tgz#48e79f5573198de6dee3589195727f4f74bc4f32" + integrity sha512-eiiY8HQeYfYH2Con2berK+To6GrK2RxbPawDkGq4UiCQQfZHb6wX9qQqkbpPqaxQFcl8d9QzZqo0tGE0VcrdwA== + dependencies: + array-buffer-byte-length "^1.0.0" + arraybuffer.prototype.slice "^1.0.2" + available-typed-arrays "^1.0.5" + call-bind "^1.0.5" + es-set-tostringtag "^2.0.1" + es-to-primitive "^1.2.1" + function.prototype.name "^1.1.6" + get-intrinsic "^1.2.2" + get-symbol-description "^1.0.0" + globalthis "^1.0.3" + gopd "^1.0.1" + has-property-descriptors "^1.0.0" + has-proto "^1.0.1" + has-symbols "^1.0.3" + hasown "^2.0.0" + internal-slot "^1.0.5" + is-array-buffer "^3.0.2" + is-callable "^1.2.7" + is-negative-zero "^2.0.2" + is-regex "^1.1.4" + is-shared-array-buffer "^1.0.2" + is-string "^1.0.7" + is-typed-array "^1.1.12" + is-weakref "^1.0.2" + object-inspect "^1.13.1" + object-keys "^1.1.1" + object.assign "^4.1.4" + regexp.prototype.flags "^1.5.1" + safe-array-concat "^1.0.1" + safe-regex-test "^1.0.0" + string.prototype.trim "^1.2.8" + string.prototype.trimend "^1.0.7" + string.prototype.trimstart "^1.0.7" + typed-array-buffer "^1.0.0" + typed-array-byte-length "^1.0.0" + typed-array-byte-offset "^1.0.0" + typed-array-length "^1.0.4" + unbox-primitive "^1.0.2" + which-typed-array "^1.1.13" + +es-array-method-boxes-properly@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/es-array-method-boxes-properly/-/es-array-method-boxes-properly-1.0.0.tgz#873f3e84418de4ee19c5be752990b2e44718d09e" + integrity sha512-wd6JXUmyHmt8T5a2xreUwKcGPq6f1f+WwIJkijUqiGcJz1qqnZgP6XIK+QyIWU5lT7imeNxUll48bziG+TSYcA== + +es-get-iterator@^1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/es-get-iterator/-/es-get-iterator-1.1.3.tgz#3ef87523c5d464d41084b2c3c9c214f1199763d6" + integrity sha512-sPZmqHBe6JIiTfN5q2pEi//TwxmAFHwj/XEuYjTuse78i8KxaqMTTzxPoFKuzRpDpTJ+0NAbpfenkmH2rePtuw== + dependencies: + call-bind "^1.0.2" + get-intrinsic "^1.1.3" + has-symbols "^1.0.3" + is-arguments "^1.1.1" + is-map "^2.0.2" + is-set "^2.0.2" + is-string "^1.0.7" + isarray "^2.0.5" + stop-iteration-iterator "^1.0.0" + +es-iterator-helpers@^1.0.12, es-iterator-helpers@^1.0.15: + version "1.0.15" + resolved "https://registry.yarnpkg.com/es-iterator-helpers/-/es-iterator-helpers-1.0.15.tgz#bd81d275ac766431d19305923707c3efd9f1ae40" + integrity sha512-GhoY8uYqd6iwUl2kgjTm4CZAf6oo5mHK7BPqx3rKgx893YSsy0LGHV6gfqqQvZt/8xM8xeOnfXBCfqclMKkJ5g== + dependencies: + asynciterator.prototype "^1.0.0" + call-bind "^1.0.2" + define-properties "^1.2.1" + es-abstract "^1.22.1" + es-set-tostringtag "^2.0.1" + function-bind "^1.1.1" + get-intrinsic "^1.2.1" + globalthis "^1.0.3" + has-property-descriptors "^1.0.0" + has-proto "^1.0.1" + has-symbols "^1.0.3" + internal-slot "^1.0.5" + iterator.prototype "^1.1.2" + safe-array-concat "^1.0.1" + +es-module-lexer@^1.2.1: + version "1.4.1" + resolved "https://registry.yarnpkg.com/es-module-lexer/-/es-module-lexer-1.4.1.tgz#41ea21b43908fe6a287ffcbe4300f790555331f5" + integrity sha512-cXLGjP0c4T3flZJKQSuziYoq7MlT+rnvfZjfp7h+I7K9BNX54kP9nyWvdbwjQ4u1iWbOL4u96fgeZLToQlZC7w== + +es-set-tostringtag@^2.0.1: + version "2.0.2" + resolved "https://registry.yarnpkg.com/es-set-tostringtag/-/es-set-tostringtag-2.0.2.tgz#11f7cc9f63376930a5f20be4915834f4bc74f9c9" + integrity sha512-BuDyupZt65P9D2D2vA/zqcI3G5xRsklm5N3xCwuiy+/vKy8i0ifdsQP1sLgO4tZDSCaQUSnmC48khknGMV3D2Q== + dependencies: + get-intrinsic "^1.2.2" + has-tostringtag "^1.0.0" + hasown "^2.0.0" + +es-shim-unscopables@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/es-shim-unscopables/-/es-shim-unscopables-1.0.2.tgz#1f6942e71ecc7835ed1c8a83006d8771a63a3763" + integrity sha512-J3yBRXCzDu4ULnQwxyToo/OjdMx6akgVC7K6few0a7F/0wLtmKKN7I73AH5T2836UuXRqN7Qg+IIUw/+YJksRw== + dependencies: + hasown "^2.0.0" + +es-to-primitive@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/es-to-primitive/-/es-to-primitive-1.2.1.tgz#e55cd4c9cdc188bcefb03b366c736323fc5c898a" + integrity sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA== + dependencies: + is-callable "^1.1.4" + is-date-object "^1.0.1" + is-symbol "^1.0.2" + +esbuild@^0.19.3: + version "0.19.12" + resolved "https://registry.yarnpkg.com/esbuild/-/esbuild-0.19.12.tgz#dc82ee5dc79e82f5a5c3b4323a2a641827db3e04" + integrity sha512-aARqgq8roFBj054KvQr5f1sFu0D65G+miZRCuJyJ0G13Zwx7vRar5Zhn2tkQNzIXcBrNVsv/8stehpj+GAjgbg== + optionalDependencies: + "@esbuild/aix-ppc64" "0.19.12" + "@esbuild/android-arm" "0.19.12" + "@esbuild/android-arm64" "0.19.12" + "@esbuild/android-x64" "0.19.12" + "@esbuild/darwin-arm64" "0.19.12" + "@esbuild/darwin-x64" "0.19.12" + "@esbuild/freebsd-arm64" "0.19.12" + "@esbuild/freebsd-x64" "0.19.12" + "@esbuild/linux-arm" "0.19.12" + "@esbuild/linux-arm64" "0.19.12" + "@esbuild/linux-ia32" "0.19.12" + "@esbuild/linux-loong64" "0.19.12" + "@esbuild/linux-mips64el" "0.19.12" + "@esbuild/linux-ppc64" "0.19.12" + "@esbuild/linux-riscv64" "0.19.12" + "@esbuild/linux-s390x" "0.19.12" + "@esbuild/linux-x64" "0.19.12" + "@esbuild/netbsd-x64" "0.19.12" + "@esbuild/openbsd-x64" "0.19.12" + "@esbuild/sunos-x64" "0.19.12" + "@esbuild/win32-arm64" "0.19.12" + "@esbuild/win32-ia32" "0.19.12" + "@esbuild/win32-x64" "0.19.12" + +escalade@^3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.1.1.tgz#d8cfdc7000965c5a0174b4a82eaa5c0552742e40" + integrity sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw== + +escape-html@~1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/escape-html/-/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988" + integrity sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow== + +escape-string-regexp@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" + integrity sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg== + +escape-string-regexp@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz#a30304e99daa32e23b2fd20f51babd07cffca344" + integrity sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w== + +escape-string-regexp@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz#14ba83a5d373e3d311e5afca29cf5bfad965bf34" + integrity sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA== + +escodegen@^1.8.1: + version "1.14.3" + resolved "https://registry.yarnpkg.com/escodegen/-/escodegen-1.14.3.tgz#4e7b81fba61581dc97582ed78cab7f0e8d63f503" + integrity sha512-qFcX0XJkdg+PB3xjZZG/wKSuT1PnQWx57+TVSjIMmILd2yC/6ByYElPwJnslDsuWuSAp4AwJGumarAAmJch5Kw== + dependencies: + esprima "^4.0.1" + estraverse "^4.2.0" + esutils "^2.0.2" + optionator "^0.8.1" + optionalDependencies: + source-map "~0.6.1" + +escodegen@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/escodegen/-/escodegen-2.1.0.tgz#ba93bbb7a43986d29d6041f99f5262da773e2e17" + integrity sha512-2NlIDTwUWJN0mRPQOdtQBzbUHvdGY2P1VXSyU83Q3xKxM7WHX2Ql8dKq782Q9TgQUNOLEzEYu9bzLNj1q88I5w== + dependencies: + esprima "^4.0.1" + estraverse "^5.2.0" + esutils "^2.0.2" + optionalDependencies: + source-map "~0.6.1" + +"eslint-config-prettier@>= 8.0.0", eslint-config-prettier@^9.1.0: + version "9.1.0" + resolved "https://registry.yarnpkg.com/eslint-config-prettier/-/eslint-config-prettier-9.1.0.tgz#31af3d94578645966c082fcb71a5846d3c94867f" + integrity sha512-NSWl5BFQWEPi1j4TjVNItzYV7dZXZ+wP6I6ZhrBGpChQhZRUaElihE9uRRkcbRnNb76UMKDF3r+WTmNcGPKsqw== + +eslint-config-react-app@^7.0.1: + version "7.0.1" + resolved "https://registry.yarnpkg.com/eslint-config-react-app/-/eslint-config-react-app-7.0.1.tgz#73ba3929978001c5c86274c017ea57eb5fa644b4" + integrity sha512-K6rNzvkIeHaTd8m/QEh1Zko0KI7BACWkkneSs6s9cKZC/J27X3eZR6Upt1jkmZ/4FK+XUOPPxMEN7+lbUXfSlA== + dependencies: + "@babel/core" "^7.16.0" + "@babel/eslint-parser" "^7.16.3" + "@rushstack/eslint-patch" "^1.1.0" + "@typescript-eslint/eslint-plugin" "^5.5.0" + "@typescript-eslint/parser" "^5.5.0" + babel-preset-react-app "^10.0.1" + confusing-browser-globals "^1.0.11" + eslint-plugin-flowtype "^8.0.3" + eslint-plugin-import "^2.25.3" + eslint-plugin-jest "^25.3.0" + eslint-plugin-jsx-a11y "^6.5.1" + eslint-plugin-react "^7.27.1" + eslint-plugin-react-hooks "^4.3.0" + eslint-plugin-testing-library "^5.0.1" + +eslint-import-resolver-node@^0.3.9: + version "0.3.9" + resolved "https://registry.yarnpkg.com/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.9.tgz#d4eaac52b8a2e7c3cd1903eb00f7e053356118ac" + integrity sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g== + dependencies: + debug "^3.2.7" + is-core-module "^2.13.0" + resolve "^1.22.4" + +eslint-module-utils@^2.8.0: + version "2.8.0" + resolved "https://registry.yarnpkg.com/eslint-module-utils/-/eslint-module-utils-2.8.0.tgz#e439fee65fc33f6bba630ff621efc38ec0375c49" + integrity sha512-aWajIYfsqCKRDgUfjEXNN/JlrzauMuSEy5sbd7WXbtW3EH6A6MpwEh42c7qD+MqQo9QMJ6fWLAeIJynx0g6OAw== + dependencies: + debug "^3.2.7" + +eslint-plugin-flowtype@^8.0.3: + version "8.0.3" + resolved "https://registry.yarnpkg.com/eslint-plugin-flowtype/-/eslint-plugin-flowtype-8.0.3.tgz#e1557e37118f24734aa3122e7536a038d34a4912" + integrity sha512-dX8l6qUL6O+fYPtpNRideCFSpmWOUVx5QcaGLVqe/vlDiBSe4vYljDWDETwnyFzpl7By/WVIu6rcrniCgH9BqQ== + dependencies: + lodash "^4.17.21" + string-natural-compare "^3.0.1" + +eslint-plugin-import@^2.25.3: + version "2.29.1" + resolved "https://registry.yarnpkg.com/eslint-plugin-import/-/eslint-plugin-import-2.29.1.tgz#d45b37b5ef5901d639c15270d74d46d161150643" + integrity sha512-BbPC0cuExzhiMo4Ff1BTVwHpjjv28C5R+btTOGaCRC7UEz801up0JadwkeSk5Ued6TG34uaczuVuH6qyy5YUxw== + dependencies: + array-includes "^3.1.7" + array.prototype.findlastindex "^1.2.3" + array.prototype.flat "^1.3.2" + array.prototype.flatmap "^1.3.2" + debug "^3.2.7" + doctrine "^2.1.0" + eslint-import-resolver-node "^0.3.9" + eslint-module-utils "^2.8.0" + hasown "^2.0.0" + is-core-module "^2.13.1" + is-glob "^4.0.3" + minimatch "^3.1.2" + object.fromentries "^2.0.7" + object.groupby "^1.0.1" + object.values "^1.1.7" + semver "^6.3.1" + tsconfig-paths "^3.15.0" + +eslint-plugin-jest@^25.3.0: + version "25.7.0" + resolved "https://registry.yarnpkg.com/eslint-plugin-jest/-/eslint-plugin-jest-25.7.0.tgz#ff4ac97520b53a96187bad9c9814e7d00de09a6a" + integrity sha512-PWLUEXeeF7C9QGKqvdSbzLOiLTx+bno7/HC9eefePfEb257QFHg7ye3dh80AZVkaa/RQsBB1Q/ORQvg2X7F0NQ== + dependencies: + "@typescript-eslint/experimental-utils" "^5.0.0" + +eslint-plugin-jsx-a11y@^6.5.1: + version "6.8.0" + resolved "https://registry.yarnpkg.com/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.8.0.tgz#2fa9c701d44fcd722b7c771ec322432857fcbad2" + integrity sha512-Hdh937BS3KdwwbBaKd5+PLCOmYY6U4f2h9Z2ktwtNKvIdIEu137rjYbcb9ApSbVJfWxANNuiKTD/9tOKjK9qOA== + dependencies: + "@babel/runtime" "^7.23.2" + aria-query "^5.3.0" + array-includes "^3.1.7" + array.prototype.flatmap "^1.3.2" + ast-types-flow "^0.0.8" + axe-core "=4.7.0" + axobject-query "^3.2.1" + damerau-levenshtein "^1.0.8" + emoji-regex "^9.2.2" + es-iterator-helpers "^1.0.15" + hasown "^2.0.0" + jsx-ast-utils "^3.3.5" + language-tags "^1.0.9" + minimatch "^3.1.2" + object.entries "^1.1.7" + object.fromentries "^2.0.7" + +eslint-plugin-react-hooks@^4.3.0, eslint-plugin-react-hooks@^4.6.0: + version "4.6.0" + resolved "https://registry.yarnpkg.com/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-4.6.0.tgz#4c3e697ad95b77e93f8646aaa1630c1ba607edd3" + integrity sha512-oFc7Itz9Qxh2x4gNHStv3BqJq54ExXmfC+a1NjAta66IAN87Wu0R/QArgIS9qKzX3dXKPI9H5crl9QchNMY9+g== + +eslint-plugin-react-refresh@^0.4.5: + version "0.4.5" + resolved "https://registry.yarnpkg.com/eslint-plugin-react-refresh/-/eslint-plugin-react-refresh-0.4.5.tgz#6b9b307bad3feba2244ef64a1a15485ac70a2d0f" + integrity sha512-D53FYKJa+fDmZMtriODxvhwrO+IOqrxoEo21gMA0sjHdU6dPVH4OhyFip9ypl8HOF5RV5KdTo+rBQLvnY2cO8w== + +eslint-plugin-react@^7.27.1, eslint-plugin-react@^7.28.0, eslint-plugin-react@^7.33.2: + version "7.33.2" + resolved "https://registry.yarnpkg.com/eslint-plugin-react/-/eslint-plugin-react-7.33.2.tgz#69ee09443ffc583927eafe86ffebb470ee737608" + integrity sha512-73QQMKALArI8/7xGLNI/3LylrEYrlKZSb5C9+q3OtOewTnMQi5cT+aE9E41sLCmli3I9PGGmD1yiZydyo4FEPw== + dependencies: + array-includes "^3.1.6" + array.prototype.flatmap "^1.3.1" + array.prototype.tosorted "^1.1.1" + doctrine "^2.1.0" + es-iterator-helpers "^1.0.12" + estraverse "^5.3.0" + jsx-ast-utils "^2.4.1 || ^3.0.0" + minimatch "^3.1.2" + object.entries "^1.1.6" + object.fromentries "^2.0.6" + object.hasown "^1.1.2" + object.values "^1.1.6" + prop-types "^15.8.1" + resolve "^2.0.0-next.4" + semver "^6.3.1" + string.prototype.matchall "^4.0.8" + +eslint-plugin-testing-library@^5.0.1: + version "5.11.1" + resolved "https://registry.yarnpkg.com/eslint-plugin-testing-library/-/eslint-plugin-testing-library-5.11.1.tgz#5b46cdae96d4a78918711c0b4792f90088e62d20" + integrity sha512-5eX9e1Kc2PqVRed3taaLnAAqPZGEX75C+M/rXzUAI3wIg/ZxzUm1OVAwfe/O+vE+6YXOLetSe9g5GKD2ecXipw== + dependencies: + "@typescript-eslint/utils" "^5.58.0" + +eslint-scope@5.1.1, eslint-scope@^5.1.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-5.1.1.tgz#e786e59a66cb92b3f6c1fb0d508aab174848f48c" + integrity sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw== + dependencies: + esrecurse "^4.3.0" + estraverse "^4.1.1" + +eslint-scope@^7.2.2: + version "7.2.2" + resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-7.2.2.tgz#deb4f92563390f32006894af62a22dba1c46423f" + integrity sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg== + dependencies: + esrecurse "^4.3.0" + estraverse "^5.2.0" + +eslint-visitor-keys@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz#f65328259305927392c938ed44eb0a5c9b2bd303" + integrity sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw== + +eslint-visitor-keys@^3.3.0, eslint-visitor-keys@^3.4.1, eslint-visitor-keys@^3.4.3: + version "3.4.3" + resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz#0cd72fe8550e3c2eae156a96a4dddcd1c8ac5800" + integrity sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag== + +eslint-webpack-plugin@^3.1.1: + version "3.2.0" + resolved "https://registry.yarnpkg.com/eslint-webpack-plugin/-/eslint-webpack-plugin-3.2.0.tgz#1978cdb9edc461e4b0195a20da950cf57988347c" + integrity sha512-avrKcGncpPbPSUHX6B3stNGzkKFto3eL+DKM4+VyMrVnhPc3vRczVlCq3uhuFOdRvDHTVXuzwk1ZKUrqDQHQ9w== + dependencies: + "@types/eslint" "^7.29.0 || ^8.4.1" + jest-worker "^28.0.2" + micromatch "^4.0.5" + normalize-path "^3.0.0" + schema-utils "^4.0.0" + +eslint@^8.3.0, eslint@^8.56.0: + version "8.56.0" + resolved "https://registry.yarnpkg.com/eslint/-/eslint-8.56.0.tgz#4957ce8da409dc0809f99ab07a1b94832ab74b15" + integrity sha512-Go19xM6T9puCOWntie1/P997aXxFsOi37JIHRWI514Hc6ZnaHGKY9xFhrU65RT6CcBEzZoGG1e6Nq+DT04ZtZQ== + dependencies: + "@eslint-community/eslint-utils" "^4.2.0" + "@eslint-community/regexpp" "^4.6.1" + "@eslint/eslintrc" "^2.1.4" + "@eslint/js" "8.56.0" + "@humanwhocodes/config-array" "^0.11.13" + "@humanwhocodes/module-importer" "^1.0.1" + "@nodelib/fs.walk" "^1.2.8" + "@ungap/structured-clone" "^1.2.0" + ajv "^6.12.4" + chalk "^4.0.0" + cross-spawn "^7.0.2" + debug "^4.3.2" + doctrine "^3.0.0" + escape-string-regexp "^4.0.0" + eslint-scope "^7.2.2" + eslint-visitor-keys "^3.4.3" + espree "^9.6.1" + esquery "^1.4.2" + esutils "^2.0.2" + fast-deep-equal "^3.1.3" + file-entry-cache "^6.0.1" + find-up "^5.0.0" + glob-parent "^6.0.2" + globals "^13.19.0" + graphemer "^1.4.0" + ignore "^5.2.0" + imurmurhash "^0.1.4" + is-glob "^4.0.0" + is-path-inside "^3.0.3" + js-yaml "^4.1.0" + json-stable-stringify-without-jsonify "^1.0.1" + levn "^0.4.1" + lodash.merge "^4.6.2" + minimatch "^3.1.2" + natural-compare "^1.4.0" + optionator "^0.9.3" + strip-ansi "^6.0.1" + text-table "^0.2.0" + +espree@^9.6.0, espree@^9.6.1: + version "9.6.1" + resolved "https://registry.yarnpkg.com/espree/-/espree-9.6.1.tgz#a2a17b8e434690a5432f2f8018ce71d331a48c6f" + integrity sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ== + dependencies: + acorn "^8.9.0" + acorn-jsx "^5.3.2" + eslint-visitor-keys "^3.4.1" + +esprima@1.2.2: + version "1.2.2" + resolved "https://registry.yarnpkg.com/esprima/-/esprima-1.2.2.tgz#76a0fd66fcfe154fd292667dc264019750b1657b" + integrity sha512-+JpPZam9w5DuJ3Q67SqsMGtiHKENSMRVoxvArfJZK01/BfLEObtZ6orJa/MtoGNR/rfMgp5837T41PAmTwAv/A== + +esprima@^4.0.0, esprima@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71" + integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A== + +esquery@^1.4.2: + version "1.5.0" + resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.5.0.tgz#6ce17738de8577694edd7361c57182ac8cb0db0b" + integrity sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg== + dependencies: + estraverse "^5.1.0" + +esrecurse@^4.3.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.3.0.tgz#7ad7964d679abb28bee72cec63758b1c5d2c9921" + integrity sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag== + dependencies: + estraverse "^5.2.0" + +estraverse@^4.1.1, estraverse@^4.2.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.3.0.tgz#398ad3f3c5a24948be7725e83d11a7de28cdbd1d" + integrity sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw== + +estraverse@^5.1.0, estraverse@^5.2.0, estraverse@^5.3.0: + version "5.3.0" + resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-5.3.0.tgz#2eea5290702f26ab8fe5370370ff86c965d21123" + integrity sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA== + +estree-walker@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/estree-walker/-/estree-walker-1.0.1.tgz#31bc5d612c96b704106b477e6dd5d8aa138cb700" + integrity sha512-1fMXF3YP4pZZVozF8j/ZLfvnR8NSIljt56UhbZ5PeeDmmGHpgpdwQt7ITlGvYaQukCvuBRMLEiKiYC+oeIg4cg== + +esutils@^2.0.2: + version "2.0.3" + resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64" + integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g== + +etag@~1.8.1: + version "1.8.1" + resolved "https://registry.yarnpkg.com/etag/-/etag-1.8.1.tgz#41ae2eeb65efa62268aebfea83ac7d79299b0887" + integrity sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg== + +eventemitter3@^4.0.0: + version "4.0.7" + resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-4.0.7.tgz#2de9b68f6528d5644ef5c59526a1b4a07306169f" + integrity sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw== + +events@^3.2.0: + version "3.3.0" + resolved "https://registry.yarnpkg.com/events/-/events-3.3.0.tgz#31a95ad0a924e2d2c419a813aeb2c4e878ea7400" + integrity sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q== + +execa@^5.0.0: + version "5.1.1" + resolved "https://registry.yarnpkg.com/execa/-/execa-5.1.1.tgz#f80ad9cbf4298f7bd1d4c9555c21e93741c411dd" + integrity sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg== + dependencies: + cross-spawn "^7.0.3" + get-stream "^6.0.0" + human-signals "^2.1.0" + is-stream "^2.0.0" + merge-stream "^2.0.0" + npm-run-path "^4.0.1" + onetime "^5.1.2" + signal-exit "^3.0.3" + strip-final-newline "^2.0.0" + +exit@^0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/exit/-/exit-0.1.2.tgz#0632638f8d877cc82107d30a0fff1a17cba1cd0c" + integrity sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ== + +expect@^27.5.1: + version "27.5.1" + resolved "https://registry.yarnpkg.com/expect/-/expect-27.5.1.tgz#83ce59f1e5bdf5f9d2b94b61d2050db48f3fef74" + integrity sha512-E1q5hSUG2AmYQwQJ041nvgpkODHQvB+RKlB4IYdru6uJsyFTRyZAP463M+1lINorwbqAmUggi6+WwkD8lCS/Dw== + dependencies: + "@jest/types" "^27.5.1" + jest-get-type "^27.5.1" + jest-matcher-utils "^27.5.1" + jest-message-util "^27.5.1" + +expect@^29.0.0, expect@^29.7.0: + version "29.7.0" + resolved "https://registry.yarnpkg.com/expect/-/expect-29.7.0.tgz#578874590dcb3214514084c08115d8aee61e11bc" + integrity sha512-2Zks0hf1VLFYI1kbh0I5jP3KHHyCHpkfyHBzsSXRFgl/Bg9mWYfMW8oD+PdMPlEwy5HNsR9JutYy6pMeOh61nw== + dependencies: + "@jest/expect-utils" "^29.7.0" + jest-get-type "^29.6.3" + jest-matcher-utils "^29.7.0" + jest-message-util "^29.7.0" + jest-util "^29.7.0" + +express@^4.17.3: + version "4.18.2" + resolved "https://registry.yarnpkg.com/express/-/express-4.18.2.tgz#3fabe08296e930c796c19e3c516979386ba9fd59" + integrity sha512-5/PsL6iGPdfQ/lKM1UuielYgv3BUoJfz1aUwU9vHZ+J7gyvwdQXFEBIEIaxeGf0GIcreATNyBExtalisDbuMqQ== + dependencies: + accepts "~1.3.8" + array-flatten "1.1.1" + body-parser "1.20.1" + content-disposition "0.5.4" + content-type "~1.0.4" + cookie "0.5.0" + cookie-signature "1.0.6" + debug "2.6.9" + depd "2.0.0" + encodeurl "~1.0.2" + escape-html "~1.0.3" + etag "~1.8.1" + finalhandler "1.2.0" + fresh "0.5.2" + http-errors "2.0.0" + merge-descriptors "1.0.1" + methods "~1.1.2" + on-finished "2.4.1" + parseurl "~1.3.3" + path-to-regexp "0.1.7" + proxy-addr "~2.0.7" + qs "6.11.0" + range-parser "~1.2.1" + safe-buffer "5.2.1" + send "0.18.0" + serve-static "1.15.0" + setprototypeof "1.2.0" + statuses "2.0.1" + type-is "~1.6.18" + utils-merge "1.0.1" + vary "~1.1.2" + +extend-shallow@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-2.0.1.tgz#51af7d614ad9a9f610ea1bafbb989d6b1c56890f" + integrity sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug== + dependencies: + is-extendable "^0.1.0" + +fast-deep-equal@^3.1.1, fast-deep-equal@^3.1.3: + version "3.1.3" + resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525" + integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q== + +fast-glob@^3.2.9, fast-glob@^3.3.0, fast-glob@^3.3.1: + version "3.3.2" + resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.3.2.tgz#a904501e57cfdd2ffcded45e99a54fef55e46129" + integrity sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow== + dependencies: + "@nodelib/fs.stat" "^2.0.2" + "@nodelib/fs.walk" "^1.2.3" + glob-parent "^5.1.2" + merge2 "^1.3.0" + micromatch "^4.0.4" + +fast-json-stable-stringify@^2.0.0, fast-json-stable-stringify@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633" + integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw== + +fast-levenshtein@^2.0.6, fast-levenshtein@~2.0.6: + version "2.0.6" + resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" + integrity sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw== + +fastq@^1.6.0: + version "1.17.0" + resolved "https://registry.yarnpkg.com/fastq/-/fastq-1.17.0.tgz#ca5e1a90b5e68f97fc8b61330d5819b82f5fab03" + integrity sha512-zGygtijUMT7jnk3h26kUms3BkSDp4IfIKjmnqI2tvx6nuBfiF1UqOxbnLfzdv+apBy+53oaImsKtMw/xYbW+1w== + dependencies: + reusify "^1.0.4" + +faye-websocket@^0.11.3: + version "0.11.4" + resolved "https://registry.yarnpkg.com/faye-websocket/-/faye-websocket-0.11.4.tgz#7f0d9275cfdd86a1c963dc8b65fcc451edcbb1da" + integrity sha512-CzbClwlXAuiRQAlUyfqPgvPoNKTckTPGfwZV4ZdAhVcP2lh9KUxJg2b5GkE7XbjKQ3YJnQ9z6D9ntLAlB+tP8g== + dependencies: + websocket-driver ">=0.5.1" + +fb-watchman@^2.0.0: + version "2.0.2" + resolved "https://registry.yarnpkg.com/fb-watchman/-/fb-watchman-2.0.2.tgz#e9524ee6b5c77e9e5001af0f85f3adbb8623255c" + integrity sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA== + dependencies: + bser "2.1.1" + +file-entry-cache@^6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-6.0.1.tgz#211b2dd9659cb0394b073e7323ac3c933d522027" + integrity sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg== + dependencies: + flat-cache "^3.0.4" + +file-loader@^6.2.0: + version "6.2.0" + resolved "https://registry.yarnpkg.com/file-loader/-/file-loader-6.2.0.tgz#baef7cf8e1840df325e4390b4484879480eebe4d" + integrity sha512-qo3glqyTa61Ytg4u73GultjHGjdRyig3tG6lPtyX/jOEJvHif9uB0/OCI2Kif6ctF3caQTW2G5gym21oAsI4pw== + dependencies: + loader-utils "^2.0.0" + schema-utils "^3.0.0" + +filelist@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/filelist/-/filelist-1.0.4.tgz#f78978a1e944775ff9e62e744424f215e58352b5" + integrity sha512-w1cEuf3S+DrLCQL7ET6kz+gmlJdbq9J7yXCSjK/OZCPA+qEN1WyF4ZAf0YYJa4/shHJra2t/d/r8SV4Ji+x+8Q== + dependencies: + minimatch "^5.0.1" + +filesize@^8.0.6: + version "8.0.7" + resolved "https://registry.yarnpkg.com/filesize/-/filesize-8.0.7.tgz#695e70d80f4e47012c132d57a059e80c6b580bd8" + integrity sha512-pjmC+bkIF8XI7fWaH8KxHcZL3DPybs1roSKP4rKDvy20tAWwIObE4+JIseG2byfGKhud5ZnM4YSGKBz7Sh0ndQ== + +fill-range@^7.0.1: + version "7.0.1" + resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.0.1.tgz#1919a6a7c75fe38b2c7c77e5198535da9acdda40" + integrity sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ== + dependencies: + to-regex-range "^5.0.1" + +finalhandler@1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/finalhandler/-/finalhandler-1.2.0.tgz#7d23fe5731b207b4640e4fcd00aec1f9207a7b32" + integrity sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg== + dependencies: + debug "2.6.9" + encodeurl "~1.0.2" + escape-html "~1.0.3" + on-finished "2.4.1" + parseurl "~1.3.3" + statuses "2.0.1" + unpipe "~1.0.0" + +find-cache-dir@^3.3.1: + version "3.3.2" + resolved "https://registry.yarnpkg.com/find-cache-dir/-/find-cache-dir-3.3.2.tgz#b30c5b6eff0730731aea9bbd9dbecbd80256d64b" + integrity sha512-wXZV5emFEjrridIgED11OoUKLxiYjAcqot/NJdAkOhlJ+vGzwhOAfcG5OX1jP+S0PcjEn8bdMJv+g2jwQ3Onig== + dependencies: + commondir "^1.0.1" + make-dir "^3.0.2" + pkg-dir "^4.1.0" + +find-root@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/find-root/-/find-root-1.1.0.tgz#abcfc8ba76f708c42a97b3d685b7e9450bfb9ce4" + integrity sha512-NKfW6bec6GfKc0SGx1e07QZY9PE99u0Bft/0rzSD5k3sO/vwkVUpDUKVm5Gpp5Ue3YfShPFTX2070tDs5kB9Ng== + +find-up@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/find-up/-/find-up-3.0.0.tgz#49169f1d7993430646da61ecc5ae355c21c97b73" + integrity sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg== + dependencies: + locate-path "^3.0.0" + +find-up@^4.0.0, find-up@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/find-up/-/find-up-4.1.0.tgz#97afe7d6cdc0bc5928584b7c8d7b16e8a9aa5d19" + integrity sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw== + dependencies: + locate-path "^5.0.0" + path-exists "^4.0.0" + +find-up@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/find-up/-/find-up-5.0.0.tgz#4c92819ecb7083561e4f4a240a86be5198f536fc" + integrity sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng== + dependencies: + locate-path "^6.0.0" + path-exists "^4.0.0" + +flat-cache@^3.0.4: + version "3.2.0" + resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-3.2.0.tgz#2c0c2d5040c99b1632771a9d105725c0115363ee" + integrity sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw== + dependencies: + flatted "^3.2.9" + keyv "^4.5.3" + rimraf "^3.0.2" + +flatted@^3.2.9: + version "3.2.9" + resolved "https://registry.yarnpkg.com/flatted/-/flatted-3.2.9.tgz#7eb4c67ca1ba34232ca9d2d93e9886e611ad7daf" + integrity sha512-36yxDn5H7OFZQla0/jFJmbIKTdZAQHngCedGxiMmpNfEZM0sdEeT+WczLQrjK6D7o2aiyLYDnkw0R3JK0Qv1RQ== + +follow-redirects@^1.0.0: + version "1.15.5" + resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.15.5.tgz#54d4d6d062c0fa7d9d17feb008461550e3ba8020" + integrity sha512-vSFWUON1B+yAw1VN4xMfxgn5fTUiaOzAJCKBwIIgT/+7CuGy9+r+5gITvP62j3RmaD5Ph65UaERdOSRGUzZtgw== + +for-each@^0.3.3: + version "0.3.3" + resolved "https://registry.yarnpkg.com/for-each/-/for-each-0.3.3.tgz#69b447e88a0a5d32c3e7084f3f1710034b21376e" + integrity sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw== + dependencies: + is-callable "^1.1.3" + +foreground-child@^3.1.0: + version "3.1.1" + resolved "https://registry.yarnpkg.com/foreground-child/-/foreground-child-3.1.1.tgz#1d173e776d75d2772fed08efe4a0de1ea1b12d0d" + integrity sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg== + dependencies: + cross-spawn "^7.0.0" + signal-exit "^4.0.1" + +fork-ts-checker-webpack-plugin@^6.5.0: + version "6.5.3" + resolved "https://registry.yarnpkg.com/fork-ts-checker-webpack-plugin/-/fork-ts-checker-webpack-plugin-6.5.3.tgz#eda2eff6e22476a2688d10661688c47f611b37f3" + integrity sha512-SbH/l9ikmMWycd5puHJKTkZJKddF4iRLyW3DeZ08HTI7NGyLS38MXd/KGgeWumQO7YNQbW2u/NtPT2YowbPaGQ== + dependencies: + "@babel/code-frame" "^7.8.3" + "@types/json-schema" "^7.0.5" + chalk "^4.1.0" + chokidar "^3.4.2" + cosmiconfig "^6.0.0" + deepmerge "^4.2.2" + fs-extra "^9.0.0" + glob "^7.1.6" + memfs "^3.1.2" + minimatch "^3.0.4" + schema-utils "2.7.0" + semver "^7.3.2" + tapable "^1.0.0" + +form-data@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/form-data/-/form-data-3.0.1.tgz#ebd53791b78356a99af9a300d4282c4d5eb9755f" + integrity sha512-RHkBKtLWUVwd7SqRIvCZMEvAMoGUp0XU+seQiZejj0COz3RI3hWP4sCv3gZWWLjJTd7rGwcsF5eKZGii0r/hbg== + dependencies: + asynckit "^0.4.0" + combined-stream "^1.0.8" + mime-types "^2.1.12" + +forwarded@0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/forwarded/-/forwarded-0.2.0.tgz#2269936428aad4c15c7ebe9779a84bf0b2a81811" + integrity sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow== + +fraction.js@^4.3.7: + version "4.3.7" + resolved "https://registry.yarnpkg.com/fraction.js/-/fraction.js-4.3.7.tgz#06ca0085157e42fda7f9e726e79fefc4068840f7" + integrity sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew== + +fresh@0.5.2: + version "0.5.2" + resolved "https://registry.yarnpkg.com/fresh/-/fresh-0.5.2.tgz#3d8cadd90d976569fa835ab1f8e4b23a105605a7" + integrity sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q== + +fs-extra@^10.0.0: + version "10.1.0" + resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-10.1.0.tgz#02873cfbc4084dde127eaa5f9905eef2325d1abf" + integrity sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ== + dependencies: + graceful-fs "^4.2.0" + jsonfile "^6.0.1" + universalify "^2.0.0" + +fs-extra@^11.1.1: + version "11.2.0" + resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-11.2.0.tgz#e70e17dfad64232287d01929399e0ea7c86b0e5b" + integrity sha512-PmDi3uwK5nFuXh7XDTlVnS17xJS7vW36is2+w3xcv8SVxiB4NyATf4ctkVY5bkSjX0Y4nbvZCq1/EjtEyr9ktw== + dependencies: + graceful-fs "^4.2.0" + jsonfile "^6.0.1" + universalify "^2.0.0" + +fs-extra@^9.0.0, fs-extra@^9.0.1: + version "9.1.0" + resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-9.1.0.tgz#5954460c764a8da2094ba3554bf839e6b9a7c86d" + integrity sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ== + dependencies: + at-least-node "^1.0.0" + graceful-fs "^4.2.0" + jsonfile "^6.0.1" + universalify "^2.0.0" + +fs-monkey@^1.0.4: + version "1.0.5" + resolved "https://registry.yarnpkg.com/fs-monkey/-/fs-monkey-1.0.5.tgz#fe450175f0db0d7ea758102e1d84096acb925788" + integrity sha512-8uMbBjrhzW76TYgEV27Y5E//W2f/lTFmx78P2w19FZSxarhI/798APGQyuGCwmkNxgwGRhrLfvWyLBvNtuOmew== + +fs.realpath@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" + integrity sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw== + +fsevents@^2.3.2, fsevents@~2.3.2, fsevents@~2.3.3: + version "2.3.3" + resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.3.tgz#cac6407785d03675a2a5e1a5305c697b347d90d6" + integrity sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw== + +function-bind@^1.1.1, function-bind@^1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.2.tgz#2c02d864d97f3ea6c8830c464cbd11ab6eab7a1c" + integrity sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA== + +function.prototype.name@^1.1.5, function.prototype.name@^1.1.6: + version "1.1.6" + resolved "https://registry.yarnpkg.com/function.prototype.name/-/function.prototype.name-1.1.6.tgz#cdf315b7d90ee77a4c6ee216c3c3362da07533fd" + integrity sha512-Z5kx79swU5P27WEayXM1tBi5Ze/lbIyiNgU3qyXUOf9b2rgXYyF9Dy9Cx+IQv/Lc8WCG6L82zwUPpSS9hGehIg== + dependencies: + call-bind "^1.0.2" + define-properties "^1.2.0" + es-abstract "^1.22.1" + functions-have-names "^1.2.3" + +functions-have-names@^1.2.3: + version "1.2.3" + resolved "https://registry.yarnpkg.com/functions-have-names/-/functions-have-names-1.2.3.tgz#0404fe4ee2ba2f607f0e0ec3c80bae994133b834" + integrity sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ== + +gensync@^1.0.0-beta.2: + version "1.0.0-beta.2" + resolved "https://registry.yarnpkg.com/gensync/-/gensync-1.0.0-beta.2.tgz#32a6ee76c3d7f52d46b2b1ae5d93fea8580a25e0" + integrity sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg== + +get-caller-file@^2.0.5: + version "2.0.5" + resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e" + integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg== + +get-intrinsic@^1.0.2, get-intrinsic@^1.1.1, get-intrinsic@^1.1.3, get-intrinsic@^1.2.0, get-intrinsic@^1.2.1, get-intrinsic@^1.2.2: + version "1.2.2" + resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.2.2.tgz#281b7622971123e1ef4b3c90fd7539306da93f3b" + integrity sha512-0gSo4ml/0j98Y3lngkFEot/zhiCeWsbYIlZ+uZOVgzLyLaUw7wxUL+nCTP0XJvJg1AXulJRI3UJi8GsbDuxdGA== + dependencies: + function-bind "^1.1.2" + has-proto "^1.0.1" + has-symbols "^1.0.3" + hasown "^2.0.0" + +get-own-enumerable-property-symbols@^3.0.0: + version "3.0.2" + resolved "https://registry.yarnpkg.com/get-own-enumerable-property-symbols/-/get-own-enumerable-property-symbols-3.0.2.tgz#b5fde77f22cbe35f390b4e089922c50bce6ef664" + integrity sha512-I0UBV/XOz1XkIJHEUDMZAbzCThU/H8DxmSfmdGcKPnVhu2VfFqr34jr9777IyaTYvxjedWhqVIilEDsCdP5G6g== + +get-package-type@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/get-package-type/-/get-package-type-0.1.0.tgz#8de2d803cff44df3bc6c456e6668b36c3926e11a" + integrity sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q== + +get-stream@^6.0.0: + version "6.0.1" + resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-6.0.1.tgz#a262d8eef67aced57c2852ad6167526a43cbf7b7" + integrity sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg== + +get-symbol-description@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/get-symbol-description/-/get-symbol-description-1.0.0.tgz#7fdb81c900101fbd564dd5f1a30af5aadc1e58d6" + integrity sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw== + dependencies: + call-bind "^1.0.2" + get-intrinsic "^1.1.1" + +glob-parent@^5.1.2, glob-parent@~5.1.2: + version "5.1.2" + resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4" + integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow== + dependencies: + is-glob "^4.0.1" + +glob-parent@^6.0.2: + version "6.0.2" + resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-6.0.2.tgz#6d237d99083950c79290f24c7642a3de9a28f9e3" + integrity sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A== + dependencies: + is-glob "^4.0.3" + +glob-to-regexp@^0.4.1: + version "0.4.1" + resolved "https://registry.yarnpkg.com/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz#c75297087c851b9a578bd217dd59a92f59fe546e" + integrity sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw== + +glob@^10.3.10: + version "10.3.10" + resolved "https://registry.yarnpkg.com/glob/-/glob-10.3.10.tgz#0351ebb809fd187fe421ab96af83d3a70715df4b" + integrity sha512-fa46+tv1Ak0UPK1TOy/pZrIybNNt4HCv7SDzwyfiOZkvZLEbjsZkJBPtDHVshZjbecAoAGSC20MjLDG/qr679g== + dependencies: + foreground-child "^3.1.0" + jackspeak "^2.3.5" + minimatch "^9.0.1" + minipass "^5.0.0 || ^6.0.2 || ^7.0.0" + path-scurry "^1.10.1" + +glob@^7.1.1, glob@^7.1.2, glob@^7.1.3, glob@^7.1.4, glob@^7.1.6: + version "7.2.3" + resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.3.tgz#b8df0fb802bbfa8e89bd1d938b4e16578ed44f2b" + integrity sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q== + dependencies: + fs.realpath "^1.0.0" + inflight "^1.0.4" + inherits "2" + minimatch "^3.1.1" + once "^1.3.0" + path-is-absolute "^1.0.0" + +global-modules@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/global-modules/-/global-modules-2.0.0.tgz#997605ad2345f27f51539bea26574421215c7780" + integrity sha512-NGbfmJBp9x8IxyJSd1P+otYK8vonoJactOogrVfFRIAEY1ukil8RSKDz2Yo7wh1oihl51l/r6W4epkeKJHqL8A== + dependencies: + global-prefix "^3.0.0" + +global-prefix@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/global-prefix/-/global-prefix-3.0.0.tgz#fc85f73064df69f50421f47f883fe5b913ba9b97" + integrity sha512-awConJSVCHVGND6x3tmMaKcQvwXLhjdkmomy2W+Goaui8YPgYgXJZewhg3fWC+DlfqqQuWg8AwqjGTD2nAPVWg== + dependencies: + ini "^1.3.5" + kind-of "^6.0.2" + which "^1.3.1" + +globals@^11.1.0: + version "11.12.0" + resolved "https://registry.yarnpkg.com/globals/-/globals-11.12.0.tgz#ab8795338868a0babd8525758018c2a7eb95c42e" + integrity sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA== + +globals@^13.19.0: + version "13.24.0" + resolved "https://registry.yarnpkg.com/globals/-/globals-13.24.0.tgz#8432a19d78ce0c1e833949c36adb345400bb1171" + integrity sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ== + dependencies: + type-fest "^0.20.2" + +globalthis@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/globalthis/-/globalthis-1.0.3.tgz#5852882a52b80dc301b0660273e1ed082f0b6ccf" + integrity sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA== + dependencies: + define-properties "^1.1.3" + +globby@^11.0.4, globby@^11.1.0: + version "11.1.0" + resolved "https://registry.yarnpkg.com/globby/-/globby-11.1.0.tgz#bd4be98bb042f83d796f7e3811991fbe82a0d34b" + integrity sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g== + dependencies: + array-union "^2.1.0" + dir-glob "^3.0.1" + fast-glob "^3.2.9" + ignore "^5.2.0" + merge2 "^1.4.1" + slash "^3.0.0" + +gopd@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/gopd/-/gopd-1.0.1.tgz#29ff76de69dac7489b7c0918a5788e56477c332c" + integrity sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA== + dependencies: + get-intrinsic "^1.1.3" + +graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.2.0, graceful-fs@^4.2.4, graceful-fs@^4.2.6, graceful-fs@^4.2.9: + version "4.2.11" + resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.11.tgz#4183e4e8bf08bb6e05bbb2f7d2e0c8f712ca40e3" + integrity sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ== + +graphemer@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/graphemer/-/graphemer-1.4.0.tgz#fb2f1d55e0e3a1849aeffc90c4fa0dd53a0e66c6" + integrity sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag== + +gzip-size@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/gzip-size/-/gzip-size-6.0.0.tgz#065367fd50c239c0671cbcbad5be3e2eeb10e462" + integrity sha512-ax7ZYomf6jqPTQ4+XCpUGyXKHk5WweS+e05MBO4/y3WJ5RkmPXNKvX+bx1behVILVwr6JSQvZAku021CHPXG3Q== + dependencies: + duplexer "^0.1.2" + +handle-thing@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/handle-thing/-/handle-thing-2.0.1.tgz#857f79ce359580c340d43081cc648970d0bb234e" + integrity sha512-9Qn4yBxelxoh2Ow62nP+Ka/kMnOXRi8BXnRaUwezLNhqelnN49xKz4F/dPP8OYLxLxq6JDtZb2i9XznUQbNPTg== + +harmony-reflect@^1.4.6: + version "1.6.2" + resolved "https://registry.yarnpkg.com/harmony-reflect/-/harmony-reflect-1.6.2.tgz#31ecbd32e648a34d030d86adb67d4d47547fe710" + integrity sha512-HIp/n38R9kQjDEziXyDTuW3vvoxxyxjxFzXLrBr18uB47GnSt+G9D29fqrpM5ZkspMcPICud3XsBJQ4Y2URg8g== + +has-bigints@^1.0.1, has-bigints@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/has-bigints/-/has-bigints-1.0.2.tgz#0871bd3e3d51626f6ca0966668ba35d5602d6eaa" + integrity sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ== + +has-flag@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" + integrity sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw== + +has-flag@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b" + integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== + +has-property-descriptors@^1.0.0, has-property-descriptors@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/has-property-descriptors/-/has-property-descriptors-1.0.1.tgz#52ba30b6c5ec87fd89fa574bc1c39125c6f65340" + integrity sha512-VsX8eaIewvas0xnvinAe9bw4WfIeODpGYikiWYLH+dma0Jw6KHYqWiWfhQlgOVK8D6PvjubK5Uc4P0iIhIcNVg== + dependencies: + get-intrinsic "^1.2.2" + +has-proto@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/has-proto/-/has-proto-1.0.1.tgz#1885c1305538958aff469fef37937c22795408e0" + integrity sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg== + +has-symbols@^1.0.1, has-symbols@^1.0.2, has-symbols@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.3.tgz#bb7b2c4349251dce87b125f7bdf874aa7c8b39f8" + integrity sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A== + +has-tostringtag@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/has-tostringtag/-/has-tostringtag-1.0.0.tgz#7e133818a7d394734f941e73c3d3f9291e658b25" + integrity sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ== + dependencies: + has-symbols "^1.0.2" + +hasown@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/hasown/-/hasown-2.0.0.tgz#f4c513d454a57b7c7e1650778de226b11700546c" + integrity sha512-vUptKVTpIJhcczKBbgnS+RtcuYMB8+oNzPK2/Hp3hanz8JmpATdmmgLgSaadVREkDm+e2giHwY3ZRkyjSIDDFA== + dependencies: + function-bind "^1.1.2" + +he@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/he/-/he-1.2.0.tgz#84ae65fa7eafb165fddb61566ae14baf05664f0f" + integrity sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw== + +hoist-non-react-statics@^3.3.1: + version "3.3.2" + resolved "https://registry.yarnpkg.com/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz#ece0acaf71d62c2969c2ec59feff42a4b1a85b45" + integrity sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw== + dependencies: + react-is "^16.7.0" + +hoopy@^0.1.4: + version "0.1.4" + resolved "https://registry.yarnpkg.com/hoopy/-/hoopy-0.1.4.tgz#609207d661100033a9a9402ad3dea677381c1b1d" + integrity sha512-HRcs+2mr52W0K+x8RzcLzuPPmVIKMSv97RGHy0Ea9y/mpcaK+xTrjICA04KAHi4GRzxliNqNJEFYWHghy3rSfQ== + +hpack.js@^2.1.6: + version "2.1.6" + resolved "https://registry.yarnpkg.com/hpack.js/-/hpack.js-2.1.6.tgz#87774c0949e513f42e84575b3c45681fade2a0b2" + integrity sha512-zJxVehUdMGIKsRaNt7apO2Gqp0BdqW5yaiGHXXmbpvxgBYVZnAql+BJb4RO5ad2MgpbZKn5G6nMnegrH1FcNYQ== + dependencies: + inherits "^2.0.1" + obuf "^1.0.0" + readable-stream "^2.0.1" + wbuf "^1.1.0" + +html-encoding-sniffer@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/html-encoding-sniffer/-/html-encoding-sniffer-2.0.1.tgz#42a6dc4fd33f00281176e8b23759ca4e4fa185f3" + integrity sha512-D5JbOMBIR/TVZkubHT+OyT2705QvogUW4IBn6nHd756OwieSF9aDYFj4dv6HHEVGYbHaLETa3WggZYWWMyy3ZQ== + dependencies: + whatwg-encoding "^1.0.5" + +html-entities@^2.1.0, html-entities@^2.3.2: + version "2.4.0" + resolved "https://registry.yarnpkg.com/html-entities/-/html-entities-2.4.0.tgz#edd0cee70402584c8c76cc2c0556db09d1f45061" + integrity sha512-igBTJcNNNhvZFRtm8uA6xMY6xYleeDwn3PeBCkDz7tHttv4F2hsDI2aPgNERWzvRcNYHNT3ymRaQzllmXj4YsQ== + +html-escaper@^2.0.0: + version "2.0.2" + resolved "https://registry.yarnpkg.com/html-escaper/-/html-escaper-2.0.2.tgz#dfd60027da36a36dfcbe236262c00a5822681453" + integrity sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg== + +html-minifier-terser@^6.0.2: + version "6.1.0" + resolved "https://registry.yarnpkg.com/html-minifier-terser/-/html-minifier-terser-6.1.0.tgz#bfc818934cc07918f6b3669f5774ecdfd48f32ab" + integrity sha512-YXxSlJBZTP7RS3tWnQw74ooKa6L9b9i9QYXY21eUEvhZ3u9XLfv6OnFsQq6RxkhHygsaUMvYsZRV5rU/OVNZxw== + dependencies: + camel-case "^4.1.2" + clean-css "^5.2.2" + commander "^8.3.0" + he "^1.2.0" + param-case "^3.0.4" + relateurl "^0.2.7" + terser "^5.10.0" + +html-parse-stringify@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/html-parse-stringify/-/html-parse-stringify-3.0.1.tgz#dfc1017347ce9f77c8141a507f233040c59c55d2" + integrity sha512-KknJ50kTInJ7qIScF3jeaFRpMpE8/lfiTdzf/twXyPBLAGrLRTmkz3AdTnKeh40X8k9L2fdYwEp/42WGXIRGcg== + dependencies: + void-elements "3.1.0" + +html-webpack-plugin@^5.5.0: + version "5.6.0" + resolved "https://registry.yarnpkg.com/html-webpack-plugin/-/html-webpack-plugin-5.6.0.tgz#50a8fa6709245608cb00e811eacecb8e0d7b7ea0" + integrity sha512-iwaY4wzbe48AfKLZ/Cc8k0L+FKG6oSNRaZ8x5A/T/IVDGyXcbHncM9TdDa93wn0FsSm82FhTKW7f3vS61thXAw== + dependencies: + "@types/html-minifier-terser" "^6.0.0" + html-minifier-terser "^6.0.2" + lodash "^4.17.21" + pretty-error "^4.0.0" + tapable "^2.0.0" + +htmlparser2@^6.1.0: + version "6.1.0" + resolved "https://registry.yarnpkg.com/htmlparser2/-/htmlparser2-6.1.0.tgz#c4d762b6c3371a05dbe65e94ae43a9f845fb8fb7" + integrity sha512-gyyPk6rgonLFEDGoeRgQNaEUvdJ4ktTmmUh/h2t7s+M8oPpIPxgNACWa+6ESR57kXstwqPiCut0V8NRpcwgU7A== + dependencies: + domelementtype "^2.0.1" + domhandler "^4.0.0" + domutils "^2.5.2" + entities "^2.0.0" + +http-deceiver@^1.2.7: + version "1.2.7" + resolved "https://registry.yarnpkg.com/http-deceiver/-/http-deceiver-1.2.7.tgz#fa7168944ab9a519d337cb0bec7284dc3e723d87" + integrity sha512-LmpOGxTfbpgtGVxJrj5k7asXHCgNZp5nLfp+hWc8QQRqtb7fUy6kRY3BO1h9ddF6yIPYUARgxGOwB42DnxIaNw== + +http-errors@2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-2.0.0.tgz#b7774a1486ef73cf7667ac9ae0858c012c57b9d3" + integrity sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ== + dependencies: + depd "2.0.0" + inherits "2.0.4" + setprototypeof "1.2.0" + statuses "2.0.1" + toidentifier "1.0.1" + +http-errors@~1.6.2: + version "1.6.3" + resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.6.3.tgz#8b55680bb4be283a0b5bf4ea2e38580be1d9320d" + integrity sha512-lks+lVC8dgGyh97jxvxeYTWQFvh4uw4yC12gVl63Cg30sjPX4wuGcdkICVXDAESr6OJGjqGA8Iz5mkeN6zlD7A== + dependencies: + depd "~1.1.2" + inherits "2.0.3" + setprototypeof "1.1.0" + statuses ">= 1.4.0 < 2" + +http-parser-js@>=0.5.1: + version "0.5.8" + resolved "https://registry.yarnpkg.com/http-parser-js/-/http-parser-js-0.5.8.tgz#af23090d9ac4e24573de6f6aecc9d84a48bf20e3" + integrity sha512-SGeBX54F94Wgu5RH3X5jsDtf4eHyRogWX1XGT3b4HuW3tQPM4AaBzoUji/4AAJNXCEOWZ5O0DgZmJw1947gD5Q== + +http-proxy-agent@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/http-proxy-agent/-/http-proxy-agent-4.0.1.tgz#8a8c8ef7f5932ccf953c296ca8291b95aa74aa3a" + integrity sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg== + dependencies: + "@tootallnate/once" "1" + agent-base "6" + debug "4" + +http-proxy-middleware@^2.0.3: + version "2.0.6" + resolved "https://registry.yarnpkg.com/http-proxy-middleware/-/http-proxy-middleware-2.0.6.tgz#e1a4dd6979572c7ab5a4e4b55095d1f32a74963f" + integrity sha512-ya/UeJ6HVBYxrgYotAZo1KvPWlgB48kUJLDePFeneHsVujFaW5WNj2NgWCAE//B1Dl02BIfYlpNgBy8Kf8Rjmw== + dependencies: + "@types/http-proxy" "^1.17.8" + http-proxy "^1.18.1" + is-glob "^4.0.1" + is-plain-obj "^3.0.0" + micromatch "^4.0.2" + +http-proxy@^1.18.1: + version "1.18.1" + resolved "https://registry.yarnpkg.com/http-proxy/-/http-proxy-1.18.1.tgz#401541f0534884bbf95260334e72f88ee3976549" + integrity sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ== + dependencies: + eventemitter3 "^4.0.0" + follow-redirects "^1.0.0" + requires-port "^1.0.0" + +https-proxy-agent@^5.0.0: + version "5.0.1" + resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz#c59ef224a04fe8b754f3db0063a25ea30d0005d6" + integrity sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA== + dependencies: + agent-base "6" + debug "4" + +human-signals@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/human-signals/-/human-signals-2.1.0.tgz#dc91fcba42e4d06e4abaed33b3e7a3c02f514ea0" + integrity sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw== + +i18next-browser-languagedetector@^6.1.0: + version "6.1.8" + resolved "https://registry.yarnpkg.com/i18next-browser-languagedetector/-/i18next-browser-languagedetector-6.1.8.tgz#8e9c61b32a4dfe9b959b38bc9d2a8b95f799b27c" + integrity sha512-Svm+MduCElO0Meqpj1kJAriTC6OhI41VhlT/A0UPjGoPZBhAHIaGE5EfsHlTpgdH09UVX7rcc72pSDDBeKSQQA== + dependencies: + "@babel/runtime" "^7.19.0" + +i18next-browser-languagedetector@^7.2.0: + version "7.2.0" + resolved "https://registry.yarnpkg.com/i18next-browser-languagedetector/-/i18next-browser-languagedetector-7.2.0.tgz#de0321cba6881be37d82e20e4d6f05aa75f6e37f" + integrity sha512-U00DbDtFIYD3wkWsr2aVGfXGAj2TgnELzOX9qv8bT0aJtvPV9CRO77h+vgmHFBMe7LAxdwvT/7VkCWGya6L3tA== + dependencies: + "@babel/runtime" "^7.23.2" + +i18next@^23.7.13: + version "23.8.1" + resolved "https://registry.yarnpkg.com/i18next/-/i18next-23.8.1.tgz#c9c6c0a2718177457192d3a867af5b35cd2f46fe" + integrity sha512-Yhe6oiJhigSh64ev7nVVywu7vHjuUG41MRmFKNwphbkadqTL1ozZFBQISflY7/ju+gL6I/SPfI1GgWQh1yYArA== + dependencies: + "@babel/runtime" "^7.23.2" + +iconv-lite@0.4.24: + version "0.4.24" + resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b" + integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA== + dependencies: + safer-buffer ">= 2.1.2 < 3" + +iconv-lite@^0.6.3: + version "0.6.3" + resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.6.3.tgz#a52f80bf38da1952eb5c681790719871a1a72501" + integrity sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw== + dependencies: + safer-buffer ">= 2.1.2 < 3.0.0" + +icss-utils@^5.0.0, icss-utils@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/icss-utils/-/icss-utils-5.1.0.tgz#c6be6858abd013d768e98366ae47e25d5887b1ae" + integrity sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA== + +idb@^7.0.1: + version "7.1.1" + resolved "https://registry.yarnpkg.com/idb/-/idb-7.1.1.tgz#d910ded866d32c7ced9befc5bfdf36f572ced72b" + integrity sha512-gchesWBzyvGHRO9W8tzUWFDycow5gwjvFKfyV9FF32Y7F50yZMp7mP+T2mJIWFx49zicqyC4uefHM17o6xKIVQ== + +identity-obj-proxy@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/identity-obj-proxy/-/identity-obj-proxy-3.0.0.tgz#94d2bda96084453ef36fbc5aaec37e0f79f1fc14" + integrity sha512-00n6YnVHKrinT9t0d9+5yZC6UBNJANpYEQvL2LlX6Ab9lnmxzIRcEmTPuyGScvl1+jKuCICX1Z0Ab1pPKKdikA== + dependencies: + harmony-reflect "^1.4.6" + +ignore@^5.2.0, ignore@^5.2.4: + version "5.3.0" + resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.3.0.tgz#67418ae40d34d6999c95ff56016759c718c82f78" + integrity sha512-g7dmpshy+gD7mh88OC9NwSGTKoc3kyLAZQRU1mt53Aw/vnvfXnbC+F/7F7QoYVKbV+KNvJx8wArewKy1vXMtlg== + +immer@^9.0.7: + version "9.0.21" + resolved "https://registry.yarnpkg.com/immer/-/immer-9.0.21.tgz#1e025ea31a40f24fb064f1fef23e931496330176" + integrity sha512-bc4NBHqOqSfRW7POMkHd51LvClaeMXpm8dx0e8oE2GORbq5aRK7Bxl4FyzVLdGtLmvLKL7BTDBG5ACQm4HWjTA== + +import-fresh@^3.1.0, import-fresh@^3.2.1: + version "3.3.0" + resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.3.0.tgz#37162c25fcb9ebaa2e6e53d5b4d88ce17d9e0c2b" + integrity sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw== + dependencies: + parent-module "^1.0.0" + resolve-from "^4.0.0" + +import-local@^3.0.2: + version "3.1.0" + resolved "https://registry.yarnpkg.com/import-local/-/import-local-3.1.0.tgz#b4479df8a5fd44f6cdce24070675676063c95cb4" + integrity sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg== + dependencies: + pkg-dir "^4.2.0" + resolve-cwd "^3.0.0" + +imurmurhash@^0.1.4: + version "0.1.4" + resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" + integrity sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA== + +indent-string@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-4.0.0.tgz#624f8f4497d619b2d9768531d58f4122854d7251" + integrity sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg== + +inflight@^1.0.4: + version "1.0.6" + resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" + integrity sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA== + dependencies: + once "^1.3.0" + wrappy "1" + +inherits@2, inherits@2.0.4, inherits@^2.0.1, inherits@^2.0.3, inherits@~2.0.3: + version "2.0.4" + resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" + integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== + +inherits@2.0.3: + version "2.0.3" + resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" + integrity sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw== + +ini@^1.3.5: + version "1.3.8" + resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.8.tgz#a29da425b48806f34767a4efce397269af28432c" + integrity sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew== + +internal-slot@^1.0.4, internal-slot@^1.0.5: + version "1.0.6" + resolved "https://registry.yarnpkg.com/internal-slot/-/internal-slot-1.0.6.tgz#37e756098c4911c5e912b8edbf71ed3aa116f930" + integrity sha512-Xj6dv+PsbtwyPpEflsejS+oIZxmMlV44zAhG479uYu89MsjcYOhCFnNyKrkJrihbsiasQyY0afoCl/9BLR65bg== + dependencies: + get-intrinsic "^1.2.2" + hasown "^2.0.0" + side-channel "^1.0.4" + +ipaddr.js@1.9.1: + version "1.9.1" + resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-1.9.1.tgz#bff38543eeb8984825079ff3a2a8e6cbd46781b3" + integrity sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g== + +ipaddr.js@^2.0.1: + version "2.1.0" + resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-2.1.0.tgz#2119bc447ff8c257753b196fc5f1ce08a4cdf39f" + integrity sha512-LlbxQ7xKzfBusov6UMi4MFpEg0m+mAm9xyNGEduwXMEDuf4WfzB/RZwMVYEd7IKGvh4IUkEXYxtAVu9T3OelJQ== + +is-arguments@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/is-arguments/-/is-arguments-1.1.1.tgz#15b3f88fda01f2a97fec84ca761a560f123efa9b" + integrity sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA== + dependencies: + call-bind "^1.0.2" + has-tostringtag "^1.0.0" + +is-array-buffer@^3.0.1, is-array-buffer@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/is-array-buffer/-/is-array-buffer-3.0.2.tgz#f2653ced8412081638ecb0ebbd0c41c6e0aecbbe" + integrity sha512-y+FyyR/w8vfIRq4eQcM1EYgSTnmHXPqaF+IgzgraytCFq5Xh8lllDVmAZolPJiZttZLeFSINPYMaEJ7/vWUa1w== + dependencies: + call-bind "^1.0.2" + get-intrinsic "^1.2.0" + is-typed-array "^1.1.10" + +is-arrayish@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d" + integrity sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg== + +is-arrayish@^0.3.1: + version "0.3.2" + resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.3.2.tgz#4574a2ae56f7ab206896fb431eaeed066fdf8f03" + integrity sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ== + +is-async-function@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/is-async-function/-/is-async-function-2.0.0.tgz#8e4418efd3e5d3a6ebb0164c05ef5afb69aa9646" + integrity sha512-Y1JXKrfykRJGdlDwdKlLpLyMIiWqWvuSd17TvZk68PLAOGOoF4Xyav1z0Xhoi+gCYjZVeC5SI+hYFOfvXmGRCA== + dependencies: + has-tostringtag "^1.0.0" + +is-bigint@^1.0.1: + version "1.0.4" + resolved "https://registry.yarnpkg.com/is-bigint/-/is-bigint-1.0.4.tgz#08147a1875bc2b32005d41ccd8291dffc6691df3" + integrity sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg== + dependencies: + has-bigints "^1.0.1" + +is-binary-path@~2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-2.1.0.tgz#ea1f7f3b80f064236e83470f86c09c254fb45b09" + integrity sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw== + dependencies: + binary-extensions "^2.0.0" + +is-boolean-object@^1.1.0: + version "1.1.2" + resolved "https://registry.yarnpkg.com/is-boolean-object/-/is-boolean-object-1.1.2.tgz#5c6dc200246dd9321ae4b885a114bb1f75f63719" + integrity sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA== + dependencies: + call-bind "^1.0.2" + has-tostringtag "^1.0.0" + +is-callable@^1.1.3, is-callable@^1.1.4, is-callable@^1.2.7: + version "1.2.7" + resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.2.7.tgz#3bc2a85ea742d9e36205dcacdd72ca1fdc51b055" + integrity sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA== + +is-core-module@^2.13.0, is-core-module@^2.13.1: + version "2.13.1" + resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.13.1.tgz#ad0d7532c6fea9da1ebdc82742d74525c6273384" + integrity sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw== + dependencies: + hasown "^2.0.0" + +is-date-object@^1.0.1, is-date-object@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/is-date-object/-/is-date-object-1.0.5.tgz#0841d5536e724c25597bf6ea62e1bd38298df31f" + integrity sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ== + dependencies: + has-tostringtag "^1.0.0" + +is-docker@^2.0.0, is-docker@^2.1.1: + version "2.2.1" + resolved "https://registry.yarnpkg.com/is-docker/-/is-docker-2.2.1.tgz#33eeabe23cfe86f14bde4408a02c0cfb853acdaa" + integrity sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ== + +is-extendable@^0.1.0: + version "0.1.1" + resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-0.1.1.tgz#62b110e289a471418e3ec36a617d472e301dfc89" + integrity sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw== + +is-extglob@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" + integrity sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ== + +is-finalizationregistry@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/is-finalizationregistry/-/is-finalizationregistry-1.0.2.tgz#c8749b65f17c133313e661b1289b95ad3dbd62e6" + integrity sha512-0by5vtUJs8iFQb5TYUHHPudOR+qXYIMKtiUzvLIZITZUjknFmziyBJuLhVRc+Ds0dREFlskDNJKYIdIzu/9pfw== + dependencies: + call-bind "^1.0.2" + +is-fullwidth-code-point@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d" + integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg== + +is-generator-fn@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/is-generator-fn/-/is-generator-fn-2.1.0.tgz#7d140adc389aaf3011a8f2a2a4cfa6faadffb118" + integrity sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ== + +is-generator-function@^1.0.10: + version "1.0.10" + resolved "https://registry.yarnpkg.com/is-generator-function/-/is-generator-function-1.0.10.tgz#f1558baf1ac17e0deea7c0415c438351ff2b3c72" + integrity sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A== + dependencies: + has-tostringtag "^1.0.0" + +is-glob@^4.0.0, is-glob@^4.0.1, is-glob@^4.0.3, is-glob@~4.0.1: + version "4.0.3" + resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.3.tgz#64f61e42cbbb2eec2071a9dac0b28ba1e65d5084" + integrity sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg== + dependencies: + is-extglob "^2.1.1" + +is-map@^2.0.1, is-map@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/is-map/-/is-map-2.0.2.tgz#00922db8c9bf73e81b7a335827bc2a43f2b91127" + integrity sha512-cOZFQQozTha1f4MxLFzlgKYPTyj26picdZTx82hbc/Xf4K/tZOOXSCkMvU4pKioRXGDLJRn0GM7Upe7kR721yg== + +is-module@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-module/-/is-module-1.0.0.tgz#3258fb69f78c14d5b815d664336b4cffb6441591" + integrity sha512-51ypPSPCoTEIN9dy5Oy+h4pShgJmPCygKfyRCISBI+JoWT/2oJvK8QPxmwv7b/p239jXrm9M1mlQbyKJ5A152g== + +is-negative-zero@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/is-negative-zero/-/is-negative-zero-2.0.2.tgz#7bf6f03a28003b8b3965de3ac26f664d765f3150" + integrity sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA== + +is-number-object@^1.0.4: + version "1.0.7" + resolved "https://registry.yarnpkg.com/is-number-object/-/is-number-object-1.0.7.tgz#59d50ada4c45251784e9904f5246c742f07a42fc" + integrity sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ== + dependencies: + has-tostringtag "^1.0.0" + +is-number@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b" + integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== + +is-obj@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/is-obj/-/is-obj-1.0.1.tgz#3e4729ac1f5fde025cd7d83a896dab9f4f67db0f" + integrity sha512-l4RyHgRqGN4Y3+9JHVrNqO+tN0rV5My76uW5/nuO4K1b6vw5G8d/cmFjP9tRfEsdhZNt0IFdZuK/c2Vr4Nb+Qg== + +is-path-inside@^3.0.3: + version "3.0.3" + resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-3.0.3.tgz#d231362e53a07ff2b0e0ea7fed049161ffd16283" + integrity sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ== + +is-plain-obj@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-3.0.0.tgz#af6f2ea14ac5a646183a5bbdb5baabbc156ad9d7" + integrity sha512-gwsOE28k+23GP1B6vFl1oVh/WOzmawBrKwo5Ev6wMKzPkaXaCDIQKzLnvsA42DRlbVTWorkgTKIviAKCWkfUwA== + +is-potential-custom-element-name@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz#171ed6f19e3ac554394edf78caa05784a45bebb5" + integrity sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ== + +is-regex@^1.1.4: + version "1.1.4" + resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.1.4.tgz#eef5663cd59fa4c0ae339505323df6854bb15958" + integrity sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg== + dependencies: + call-bind "^1.0.2" + has-tostringtag "^1.0.0" + +is-regexp@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-regexp/-/is-regexp-1.0.0.tgz#fd2d883545c46bac5a633e7b9a09e87fa2cb5069" + integrity sha512-7zjFAPO4/gwyQAAgRRmqeEeyIICSdmCqa3tsVHMdBzaXXRiqopZL4Cyghg/XulGWrtABTpbnYYzzIRffLkP4oA== + +is-root@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/is-root/-/is-root-2.1.0.tgz#809e18129cf1129644302a4f8544035d51984a9c" + integrity sha512-AGOriNp96vNBd3HtU+RzFEc75FfR5ymiYv8E553I71SCeXBiMsVDUtdio1OEFvrPyLIQ9tVR5RxXIFe5PUFjMg== + +is-set@^2.0.1, is-set@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/is-set/-/is-set-2.0.2.tgz#90755fa4c2562dc1c5d4024760d6119b94ca18ec" + integrity sha512-+2cnTEZeY5z/iXGbLhPrOAaK/Mau5k5eXq9j14CpRTftq0pAJu2MwVRSZhyZWBzx3o6X795Lz6Bpb6R0GKf37g== + +is-shared-array-buffer@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz#8f259c573b60b6a32d4058a1a07430c0a7344c79" + integrity sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA== + dependencies: + call-bind "^1.0.2" + +is-stream@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-2.0.1.tgz#fac1e3d53b97ad5a9d0ae9cef2389f5810a5c077" + integrity sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg== + +is-string@^1.0.5, is-string@^1.0.7: + version "1.0.7" + resolved "https://registry.yarnpkg.com/is-string/-/is-string-1.0.7.tgz#0dd12bf2006f255bb58f695110eff7491eebc0fd" + integrity sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg== + dependencies: + has-tostringtag "^1.0.0" + +is-symbol@^1.0.2, is-symbol@^1.0.3: + version "1.0.4" + resolved "https://registry.yarnpkg.com/is-symbol/-/is-symbol-1.0.4.tgz#a6dac93b635b063ca6872236de88910a57af139c" + integrity sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg== + dependencies: + has-symbols "^1.0.2" + +is-typed-array@^1.1.10, is-typed-array@^1.1.12, is-typed-array@^1.1.9: + version "1.1.12" + resolved "https://registry.yarnpkg.com/is-typed-array/-/is-typed-array-1.1.12.tgz#d0bab5686ef4a76f7a73097b95470ab199c57d4a" + integrity sha512-Z14TF2JNG8Lss5/HMqt0//T9JeHXttXy5pH/DBU4vi98ozO2btxzq9MwYDZYnKwU8nRsz/+GVFVRDq3DkVuSPg== + dependencies: + which-typed-array "^1.1.11" + +is-typedarray@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a" + integrity sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA== + +is-weakmap@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/is-weakmap/-/is-weakmap-2.0.1.tgz#5008b59bdc43b698201d18f62b37b2ca243e8cf2" + integrity sha512-NSBR4kH5oVj1Uwvv970ruUkCV7O1mzgVFO4/rev2cLRda9Tm9HrL70ZPut4rOHgY0FNrUu9BCbXA2sdQ+x0chA== + +is-weakref@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/is-weakref/-/is-weakref-1.0.2.tgz#9529f383a9338205e89765e0392efc2f100f06f2" + integrity sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ== + dependencies: + call-bind "^1.0.2" + +is-weakset@^2.0.1: + version "2.0.2" + resolved "https://registry.yarnpkg.com/is-weakset/-/is-weakset-2.0.2.tgz#4569d67a747a1ce5a994dfd4ef6dcea76e7c0a1d" + integrity sha512-t2yVvttHkQktwnNNmBQ98AhENLdPUTDTE21uPqAQ0ARwQfGeQKRVS0NNurH7bTf7RrvcVn1OOge45CnBeHCSmg== + dependencies: + call-bind "^1.0.2" + get-intrinsic "^1.1.1" + +is-windows@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/is-windows/-/is-windows-1.0.2.tgz#d1850eb9791ecd18e6182ce12a30f396634bb19d" + integrity sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA== + +is-wsl@^2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/is-wsl/-/is-wsl-2.2.0.tgz#74a4c76e77ca9fd3f932f290c17ea326cd157271" + integrity sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww== + dependencies: + is-docker "^2.0.0" + +isarray@^2.0.5: + version "2.0.5" + resolved "https://registry.yarnpkg.com/isarray/-/isarray-2.0.5.tgz#8af1e4c1221244cc62459faf38940d4e644a5723" + integrity sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw== + +isarray@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" + integrity sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ== + +isexe@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" + integrity sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw== + +istanbul-lib-coverage@^3.0.0, istanbul-lib-coverage@^3.2.0: + version "3.2.2" + resolved "https://registry.yarnpkg.com/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.2.tgz#2d166c4b0644d43a39f04bf6c2edd1e585f31756" + integrity sha512-O8dpsF+r0WV/8MNRKfnmrtCWhuKjxrq2w+jpzBL5UZKTi2LeVWnWOmWRxFlesJONmc+wLAGvKQZEOanko0LFTg== + +istanbul-lib-instrument@^5.0.4, istanbul-lib-instrument@^5.1.0: + version "5.2.1" + resolved "https://registry.yarnpkg.com/istanbul-lib-instrument/-/istanbul-lib-instrument-5.2.1.tgz#d10c8885c2125574e1c231cacadf955675e1ce3d" + integrity sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg== + dependencies: + "@babel/core" "^7.12.3" + "@babel/parser" "^7.14.7" + "@istanbuljs/schema" "^0.1.2" + istanbul-lib-coverage "^3.2.0" + semver "^6.3.0" + +istanbul-lib-instrument@^6.0.0: + version "6.0.1" + resolved "https://registry.yarnpkg.com/istanbul-lib-instrument/-/istanbul-lib-instrument-6.0.1.tgz#71e87707e8041428732518c6fb5211761753fbdf" + integrity sha512-EAMEJBsYuyyztxMxW3g7ugGPkrZsV57v0Hmv3mm1uQsmB+QnZuepg731CRaIgeUVSdmsTngOkSnauNF8p7FIhA== + dependencies: + "@babel/core" "^7.12.3" + "@babel/parser" "^7.14.7" + "@istanbuljs/schema" "^0.1.2" + istanbul-lib-coverage "^3.2.0" + semver "^7.5.4" + +istanbul-lib-report@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/istanbul-lib-report/-/istanbul-lib-report-3.0.1.tgz#908305bac9a5bd175ac6a74489eafd0fc2445a7d" + integrity sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw== + dependencies: + istanbul-lib-coverage "^3.0.0" + make-dir "^4.0.0" + supports-color "^7.1.0" + +istanbul-lib-source-maps@^4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.1.tgz#895f3a709fcfba34c6de5a42939022f3e4358551" + integrity sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw== + dependencies: + debug "^4.1.1" + istanbul-lib-coverage "^3.0.0" + source-map "^0.6.1" + +istanbul-reports@^3.1.3: + version "3.1.6" + resolved "https://registry.yarnpkg.com/istanbul-reports/-/istanbul-reports-3.1.6.tgz#2544bcab4768154281a2f0870471902704ccaa1a" + integrity sha512-TLgnMkKg3iTDsQ9PbPTdpfAK2DzjF9mqUG7RMgcQl8oFjad8ob4laGxv5XV5U9MAfx8D6tSJiUyuAwzLicaxlg== + dependencies: + html-escaper "^2.0.0" + istanbul-lib-report "^3.0.0" + +iterator.prototype@^1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/iterator.prototype/-/iterator.prototype-1.1.2.tgz#5e29c8924f01916cb9335f1ff80619dcff22b0c0" + integrity sha512-DR33HMMr8EzwuRL8Y9D3u2BMj8+RqSE850jfGu59kS7tbmPLzGkZmVSfyCFSDxuZiEY6Rzt3T2NA/qU+NwVj1w== + dependencies: + define-properties "^1.2.1" + get-intrinsic "^1.2.1" + has-symbols "^1.0.3" + reflect.getprototypeof "^1.0.4" + set-function-name "^2.0.1" + +jackspeak@^2.3.5: + version "2.3.6" + resolved "https://registry.yarnpkg.com/jackspeak/-/jackspeak-2.3.6.tgz#647ecc472238aee4b06ac0e461acc21a8c505ca8" + integrity sha512-N3yCS/NegsOBokc8GAdM8UcmfsKiSS8cipheD/nivzr700H+nsMOxJjQnvwOcRYVuFkdH0wGUvW2WbXGmrZGbQ== + dependencies: + "@isaacs/cliui" "^8.0.2" + optionalDependencies: + "@pkgjs/parseargs" "^0.11.0" + +jake@^10.8.5: + version "10.8.7" + resolved "https://registry.yarnpkg.com/jake/-/jake-10.8.7.tgz#63a32821177940c33f356e0ba44ff9d34e1c7d8f" + integrity sha512-ZDi3aP+fG/LchyBzUM804VjddnwfSfsdeYkwt8NcbKRvo4rFkjhs456iLFn3k2ZUWvNe4i48WACDbza8fhq2+w== + dependencies: + async "^3.2.3" + chalk "^4.0.2" + filelist "^1.0.4" + minimatch "^3.1.2" + +jest-changed-files@^27.5.1: + version "27.5.1" + resolved "https://registry.yarnpkg.com/jest-changed-files/-/jest-changed-files-27.5.1.tgz#a348aed00ec9bf671cc58a66fcbe7c3dfd6a68f5" + integrity sha512-buBLMiByfWGCoMsLLzGUUSpAmIAGnbR2KJoMN10ziLhOLvP4e0SlypHnAel8iqQXTrcbmfEY9sSqae5sgUsTvw== + dependencies: + "@jest/types" "^27.5.1" + execa "^5.0.0" + throat "^6.0.1" + +jest-changed-files@^29.7.0: + version "29.7.0" + resolved "https://registry.yarnpkg.com/jest-changed-files/-/jest-changed-files-29.7.0.tgz#1c06d07e77c78e1585d020424dedc10d6e17ac3a" + integrity sha512-fEArFiwf1BpQ+4bXSprcDc3/x4HSzL4al2tozwVpDFpsxALjLYdyiIK4e5Vz66GQJIbXJ82+35PtysofptNX2w== + dependencies: + execa "^5.0.0" + jest-util "^29.7.0" + p-limit "^3.1.0" + +jest-circus@^27.5.1: + version "27.5.1" + resolved "https://registry.yarnpkg.com/jest-circus/-/jest-circus-27.5.1.tgz#37a5a4459b7bf4406e53d637b49d22c65d125ecc" + integrity sha512-D95R7x5UtlMA5iBYsOHFFbMD/GVA4R/Kdq15f7xYWUfWHBto9NYRsOvnSauTgdF+ogCpJ4tyKOXhUifxS65gdw== + dependencies: + "@jest/environment" "^27.5.1" + "@jest/test-result" "^27.5.1" + "@jest/types" "^27.5.1" + "@types/node" "*" + chalk "^4.0.0" + co "^4.6.0" + dedent "^0.7.0" + expect "^27.5.1" + is-generator-fn "^2.0.0" + jest-each "^27.5.1" + jest-matcher-utils "^27.5.1" + jest-message-util "^27.5.1" + jest-runtime "^27.5.1" + jest-snapshot "^27.5.1" + jest-util "^27.5.1" + pretty-format "^27.5.1" + slash "^3.0.0" + stack-utils "^2.0.3" + throat "^6.0.1" + +jest-circus@^29.7.0: + version "29.7.0" + resolved "https://registry.yarnpkg.com/jest-circus/-/jest-circus-29.7.0.tgz#b6817a45fcc835d8b16d5962d0c026473ee3668a" + integrity sha512-3E1nCMgipcTkCocFwM90XXQab9bS+GMsjdpmPrlelaxwD93Ad8iVEjX/vvHPdLPnFf+L40u+5+iutRdA1N9myw== + dependencies: + "@jest/environment" "^29.7.0" + "@jest/expect" "^29.7.0" + "@jest/test-result" "^29.7.0" + "@jest/types" "^29.6.3" + "@types/node" "*" + chalk "^4.0.0" + co "^4.6.0" + dedent "^1.0.0" + is-generator-fn "^2.0.0" + jest-each "^29.7.0" + jest-matcher-utils "^29.7.0" + jest-message-util "^29.7.0" + jest-runtime "^29.7.0" + jest-snapshot "^29.7.0" + jest-util "^29.7.0" + p-limit "^3.1.0" + pretty-format "^29.7.0" + pure-rand "^6.0.0" + slash "^3.0.0" + stack-utils "^2.0.3" + +jest-cli@^27.5.1: + version "27.5.1" + resolved "https://registry.yarnpkg.com/jest-cli/-/jest-cli-27.5.1.tgz#278794a6e6458ea8029547e6c6cbf673bd30b145" + integrity sha512-Hc6HOOwYq4/74/c62dEE3r5elx8wjYqxY0r0G/nFrLDPMFRu6RA/u8qINOIkvhxG7mMQ5EJsOGfRpI8L6eFUVw== + dependencies: + "@jest/core" "^27.5.1" + "@jest/test-result" "^27.5.1" + "@jest/types" "^27.5.1" + chalk "^4.0.0" + exit "^0.1.2" + graceful-fs "^4.2.9" + import-local "^3.0.2" + jest-config "^27.5.1" + jest-util "^27.5.1" + jest-validate "^27.5.1" + prompts "^2.0.1" + yargs "^16.2.0" + +jest-cli@^29.7.0: + version "29.7.0" + resolved "https://registry.yarnpkg.com/jest-cli/-/jest-cli-29.7.0.tgz#5592c940798e0cae677eec169264f2d839a37995" + integrity sha512-OVVobw2IubN/GSYsxETi+gOe7Ka59EFMR/twOU3Jb2GnKKeMGJB5SGUUrEz3SFVmJASUdZUzy83sLNNQ2gZslg== + dependencies: + "@jest/core" "^29.7.0" + "@jest/test-result" "^29.7.0" + "@jest/types" "^29.6.3" + chalk "^4.0.0" + create-jest "^29.7.0" + exit "^0.1.2" + import-local "^3.0.2" + jest-config "^29.7.0" + jest-util "^29.7.0" + jest-validate "^29.7.0" + yargs "^17.3.1" + +jest-config@^27.5.1: + version "27.5.1" + resolved "https://registry.yarnpkg.com/jest-config/-/jest-config-27.5.1.tgz#5c387de33dca3f99ad6357ddeccd91bf3a0e4a41" + integrity sha512-5sAsjm6tGdsVbW9ahcChPAFCk4IlkQUknH5AvKjuLTSlcO/wCZKyFdn7Rg0EkC+OGgWODEy2hDpWB1PgzH0JNA== + dependencies: + "@babel/core" "^7.8.0" + "@jest/test-sequencer" "^27.5.1" + "@jest/types" "^27.5.1" + babel-jest "^27.5.1" + chalk "^4.0.0" + ci-info "^3.2.0" + deepmerge "^4.2.2" + glob "^7.1.1" + graceful-fs "^4.2.9" + jest-circus "^27.5.1" + jest-environment-jsdom "^27.5.1" + jest-environment-node "^27.5.1" + jest-get-type "^27.5.1" + jest-jasmine2 "^27.5.1" + jest-regex-util "^27.5.1" + jest-resolve "^27.5.1" + jest-runner "^27.5.1" + jest-util "^27.5.1" + jest-validate "^27.5.1" + micromatch "^4.0.4" + parse-json "^5.2.0" + pretty-format "^27.5.1" + slash "^3.0.0" + strip-json-comments "^3.1.1" + +jest-config@^29.7.0: + version "29.7.0" + resolved "https://registry.yarnpkg.com/jest-config/-/jest-config-29.7.0.tgz#bcbda8806dbcc01b1e316a46bb74085a84b0245f" + integrity sha512-uXbpfeQ7R6TZBqI3/TxCU4q4ttk3u0PJeC+E0zbfSoSjq6bJ7buBPxzQPL0ifrkY4DNu4JUdk0ImlBUYi840eQ== + dependencies: + "@babel/core" "^7.11.6" + "@jest/test-sequencer" "^29.7.0" + "@jest/types" "^29.6.3" + babel-jest "^29.7.0" + chalk "^4.0.0" + ci-info "^3.2.0" + deepmerge "^4.2.2" + glob "^7.1.3" + graceful-fs "^4.2.9" + jest-circus "^29.7.0" + jest-environment-node "^29.7.0" + jest-get-type "^29.6.3" + jest-regex-util "^29.6.3" + jest-resolve "^29.7.0" + jest-runner "^29.7.0" + jest-util "^29.7.0" + jest-validate "^29.7.0" + micromatch "^4.0.4" + parse-json "^5.2.0" + pretty-format "^29.7.0" + slash "^3.0.0" + strip-json-comments "^3.1.1" + +jest-diff@^27.5.1: + version "27.5.1" + resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-27.5.1.tgz#a07f5011ac9e6643cf8a95a462b7b1ecf6680def" + integrity sha512-m0NvkX55LDt9T4mctTEgnZk3fmEg3NRYutvMPWM/0iPnkFj2wIeF45O1718cMSOFO1vINkqmxqD8vE37uTEbqw== + dependencies: + chalk "^4.0.0" + diff-sequences "^27.5.1" + jest-get-type "^27.5.1" + pretty-format "^27.5.1" + +jest-diff@^29.7.0: + version "29.7.0" + resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-29.7.0.tgz#017934a66ebb7ecf6f205e84699be10afd70458a" + integrity sha512-LMIgiIrhigmPrs03JHpxUh2yISK3vLFPkAodPeo0+BuF7wA2FoQbkEg1u8gBYBThncu7e1oEDUfIXVuTqLRUjw== + dependencies: + chalk "^4.0.0" + diff-sequences "^29.6.3" + jest-get-type "^29.6.3" + pretty-format "^29.7.0" + +jest-docblock@^27.5.1: + version "27.5.1" + resolved "https://registry.yarnpkg.com/jest-docblock/-/jest-docblock-27.5.1.tgz#14092f364a42c6108d42c33c8cf30e058e25f6c0" + integrity sha512-rl7hlABeTsRYxKiUfpHrQrG4e2obOiTQWfMEH3PxPjOtdsfLQO4ReWSZaQ7DETm4xu07rl4q/h4zcKXyU0/OzQ== + dependencies: + detect-newline "^3.0.0" + +jest-docblock@^29.7.0: + version "29.7.0" + resolved "https://registry.yarnpkg.com/jest-docblock/-/jest-docblock-29.7.0.tgz#8fddb6adc3cdc955c93e2a87f61cfd350d5d119a" + integrity sha512-q617Auw3A612guyaFgsbFeYpNP5t2aoUNLwBUbc/0kD1R4t9ixDbyFTHd1nok4epoVFpr7PmeWHrhvuV3XaJ4g== + dependencies: + detect-newline "^3.0.0" + +jest-each@^27.5.1: + version "27.5.1" + resolved "https://registry.yarnpkg.com/jest-each/-/jest-each-27.5.1.tgz#5bc87016f45ed9507fed6e4702a5b468a5b2c44e" + integrity sha512-1Ff6p+FbhT/bXQnEouYy00bkNSY7OUpfIcmdl8vZ31A1UUaurOLPA8a8BbJOF2RDUElwJhmeaV7LnagI+5UwNQ== + dependencies: + "@jest/types" "^27.5.1" + chalk "^4.0.0" + jest-get-type "^27.5.1" + jest-util "^27.5.1" + pretty-format "^27.5.1" + +jest-each@^29.7.0: + version "29.7.0" + resolved "https://registry.yarnpkg.com/jest-each/-/jest-each-29.7.0.tgz#162a9b3f2328bdd991beaabffbb74745e56577d1" + integrity sha512-gns+Er14+ZrEoC5fhOfYCY1LOHHr0TI+rQUHZS8Ttw2l7gl+80eHc/gFf2Ktkw0+SIACDTeWvpFcv3B04VembQ== + dependencies: + "@jest/types" "^29.6.3" + chalk "^4.0.0" + jest-get-type "^29.6.3" + jest-util "^29.7.0" + pretty-format "^29.7.0" + +jest-environment-jsdom@^27.5.1: + version "27.5.1" + resolved "https://registry.yarnpkg.com/jest-environment-jsdom/-/jest-environment-jsdom-27.5.1.tgz#ea9ccd1fc610209655a77898f86b2b559516a546" + integrity sha512-TFBvkTC1Hnnnrka/fUb56atfDtJ9VMZ94JkjTbggl1PEpwrYtUBKMezB3inLmWqQsXYLcMwNoDQwoBTAvFfsfw== + dependencies: + "@jest/environment" "^27.5.1" + "@jest/fake-timers" "^27.5.1" + "@jest/types" "^27.5.1" + "@types/node" "*" + jest-mock "^27.5.1" + jest-util "^27.5.1" + jsdom "^16.6.0" + +jest-environment-node@^27.5.1: + version "27.5.1" + resolved "https://registry.yarnpkg.com/jest-environment-node/-/jest-environment-node-27.5.1.tgz#dedc2cfe52fab6b8f5714b4808aefa85357a365e" + integrity sha512-Jt4ZUnxdOsTGwSRAfKEnE6BcwsSPNOijjwifq5sDFSA2kesnXTvNqKHYgM0hDq3549Uf/KzdXNYn4wMZJPlFLw== + dependencies: + "@jest/environment" "^27.5.1" + "@jest/fake-timers" "^27.5.1" + "@jest/types" "^27.5.1" + "@types/node" "*" + jest-mock "^27.5.1" + jest-util "^27.5.1" + +jest-environment-node@^29.7.0: + version "29.7.0" + resolved "https://registry.yarnpkg.com/jest-environment-node/-/jest-environment-node-29.7.0.tgz#0b93e111dda8ec120bc8300e6d1fb9576e164376" + integrity sha512-DOSwCRqXirTOyheM+4d5YZOrWcdu0LNZ87ewUoywbcb2XR4wKgqiG8vNeYwhjFMbEkfju7wx2GYH0P2gevGvFw== + dependencies: + "@jest/environment" "^29.7.0" + "@jest/fake-timers" "^29.7.0" + "@jest/types" "^29.6.3" + "@types/node" "*" + jest-mock "^29.7.0" + jest-util "^29.7.0" + +jest-get-type@^27.5.1: + version "27.5.1" + resolved "https://registry.yarnpkg.com/jest-get-type/-/jest-get-type-27.5.1.tgz#3cd613c507b0f7ace013df407a1c1cd578bcb4f1" + integrity sha512-2KY95ksYSaK7DMBWQn6dQz3kqAf3BB64y2udeG+hv4KfSOb9qwcYQstTJc1KCbsix+wLZWZYN8t7nwX3GOBLRw== + +jest-get-type@^29.6.3: + version "29.6.3" + resolved "https://registry.yarnpkg.com/jest-get-type/-/jest-get-type-29.6.3.tgz#36f499fdcea197c1045a127319c0481723908fd1" + integrity sha512-zrteXnqYxfQh7l5FHyL38jL39di8H8rHoecLH3JNxH3BwOrBsNeabdap5e0I23lD4HHI8W5VFBZqG4Eaq5LNcw== + +jest-haste-map@^27.5.1: + version "27.5.1" + resolved "https://registry.yarnpkg.com/jest-haste-map/-/jest-haste-map-27.5.1.tgz#9fd8bd7e7b4fa502d9c6164c5640512b4e811e7f" + integrity sha512-7GgkZ4Fw4NFbMSDSpZwXeBiIbx+t/46nJ2QitkOjvwPYyZmqttu2TDSimMHP1EkPOi4xUZAN1doE5Vd25H4Jng== + dependencies: + "@jest/types" "^27.5.1" + "@types/graceful-fs" "^4.1.2" + "@types/node" "*" + anymatch "^3.0.3" + fb-watchman "^2.0.0" + graceful-fs "^4.2.9" + jest-regex-util "^27.5.1" + jest-serializer "^27.5.1" + jest-util "^27.5.1" + jest-worker "^27.5.1" + micromatch "^4.0.4" + walker "^1.0.7" + optionalDependencies: + fsevents "^2.3.2" + +jest-haste-map@^29.7.0: + version "29.7.0" + resolved "https://registry.yarnpkg.com/jest-haste-map/-/jest-haste-map-29.7.0.tgz#3c2396524482f5a0506376e6c858c3bbcc17b104" + integrity sha512-fP8u2pyfqx0K1rGn1R9pyE0/KTn+G7PxktWidOBTqFPLYX0b9ksaMFkhK5vrS3DVun09pckLdlx90QthlW7AmA== + dependencies: + "@jest/types" "^29.6.3" + "@types/graceful-fs" "^4.1.3" + "@types/node" "*" + anymatch "^3.0.3" + fb-watchman "^2.0.0" + graceful-fs "^4.2.9" + jest-regex-util "^29.6.3" + jest-util "^29.7.0" + jest-worker "^29.7.0" + micromatch "^4.0.4" + walker "^1.0.8" + optionalDependencies: + fsevents "^2.3.2" + +jest-jasmine2@^27.5.1: + version "27.5.1" + resolved "https://registry.yarnpkg.com/jest-jasmine2/-/jest-jasmine2-27.5.1.tgz#a037b0034ef49a9f3d71c4375a796f3b230d1ac4" + integrity sha512-jtq7VVyG8SqAorDpApwiJJImd0V2wv1xzdheGHRGyuT7gZm6gG47QEskOlzsN1PG/6WNaCo5pmwMHDf3AkG2pQ== + dependencies: + "@jest/environment" "^27.5.1" + "@jest/source-map" "^27.5.1" + "@jest/test-result" "^27.5.1" + "@jest/types" "^27.5.1" + "@types/node" "*" + chalk "^4.0.0" + co "^4.6.0" + expect "^27.5.1" + is-generator-fn "^2.0.0" + jest-each "^27.5.1" + jest-matcher-utils "^27.5.1" + jest-message-util "^27.5.1" + jest-runtime "^27.5.1" + jest-snapshot "^27.5.1" + jest-util "^27.5.1" + pretty-format "^27.5.1" + throat "^6.0.1" + +jest-leak-detector@^27.5.1: + version "27.5.1" + resolved "https://registry.yarnpkg.com/jest-leak-detector/-/jest-leak-detector-27.5.1.tgz#6ec9d54c3579dd6e3e66d70e3498adf80fde3fb8" + integrity sha512-POXfWAMvfU6WMUXftV4HolnJfnPOGEu10fscNCA76KBpRRhcMN2c8d3iT2pxQS3HLbA+5X4sOUPzYO2NUyIlHQ== + dependencies: + jest-get-type "^27.5.1" + pretty-format "^27.5.1" + +jest-leak-detector@^29.7.0: + version "29.7.0" + resolved "https://registry.yarnpkg.com/jest-leak-detector/-/jest-leak-detector-29.7.0.tgz#5b7ec0dadfdfec0ca383dc9aa016d36b5ea4c728" + integrity sha512-kYA8IJcSYtST2BY9I+SMC32nDpBT3J2NvWJx8+JCuCdl/CR1I4EKUJROiP8XtCcxqgTTBGJNdbB1A8XRKbTetw== + dependencies: + jest-get-type "^29.6.3" + pretty-format "^29.7.0" + +jest-matcher-utils@^27.5.1: + version "27.5.1" + resolved "https://registry.yarnpkg.com/jest-matcher-utils/-/jest-matcher-utils-27.5.1.tgz#9c0cdbda8245bc22d2331729d1091308b40cf8ab" + integrity sha512-z2uTx/T6LBaCoNWNFWwChLBKYxTMcGBRjAt+2SbP929/Fflb9aa5LGma654Rz8z9HLxsrUaYzxE9T/EFIL/PAw== + dependencies: + chalk "^4.0.0" + jest-diff "^27.5.1" + jest-get-type "^27.5.1" + pretty-format "^27.5.1" + +jest-matcher-utils@^29.7.0: + version "29.7.0" + resolved "https://registry.yarnpkg.com/jest-matcher-utils/-/jest-matcher-utils-29.7.0.tgz#ae8fec79ff249fd592ce80e3ee474e83a6c44f12" + integrity sha512-sBkD+Xi9DtcChsI3L3u0+N0opgPYnCRPtGcQYrgXmR+hmt/fYfWAL0xRXYU8eWOdfuLgBe0YCW3AFtnRLagq/g== + dependencies: + chalk "^4.0.0" + jest-diff "^29.7.0" + jest-get-type "^29.6.3" + pretty-format "^29.7.0" + +jest-message-util@^27.5.1: + version "27.5.1" + resolved "https://registry.yarnpkg.com/jest-message-util/-/jest-message-util-27.5.1.tgz#bdda72806da10d9ed6425e12afff38cd1458b6cf" + integrity sha512-rMyFe1+jnyAAf+NHwTclDz0eAaLkVDdKVHHBFWsBWHnnh5YeJMNWWsv7AbFYXfK3oTqvL7VTWkhNLu1jX24D+g== + dependencies: + "@babel/code-frame" "^7.12.13" + "@jest/types" "^27.5.1" + "@types/stack-utils" "^2.0.0" + chalk "^4.0.0" + graceful-fs "^4.2.9" + micromatch "^4.0.4" + pretty-format "^27.5.1" + slash "^3.0.0" + stack-utils "^2.0.3" + +jest-message-util@^28.1.3: + version "28.1.3" + resolved "https://registry.yarnpkg.com/jest-message-util/-/jest-message-util-28.1.3.tgz#232def7f2e333f1eecc90649b5b94b0055e7c43d" + integrity sha512-PFdn9Iewbt575zKPf1286Ht9EPoJmYT7P0kY+RibeYZ2XtOr53pDLEFoTWXbd1h4JiGiWpTBC84fc8xMXQMb7g== + dependencies: + "@babel/code-frame" "^7.12.13" + "@jest/types" "^28.1.3" + "@types/stack-utils" "^2.0.0" + chalk "^4.0.0" + graceful-fs "^4.2.9" + micromatch "^4.0.4" + pretty-format "^28.1.3" + slash "^3.0.0" + stack-utils "^2.0.3" + +jest-message-util@^29.7.0: + version "29.7.0" + resolved "https://registry.yarnpkg.com/jest-message-util/-/jest-message-util-29.7.0.tgz#8bc392e204e95dfe7564abbe72a404e28e51f7f3" + integrity sha512-GBEV4GRADeP+qtB2+6u61stea8mGcOT4mCtrYISZwfu9/ISHFJ/5zOMXYbpBE9RsS5+Gb63DW4FgmnKJ79Kf6w== + dependencies: + "@babel/code-frame" "^7.12.13" + "@jest/types" "^29.6.3" + "@types/stack-utils" "^2.0.0" + chalk "^4.0.0" + graceful-fs "^4.2.9" + micromatch "^4.0.4" + pretty-format "^29.7.0" + slash "^3.0.0" + stack-utils "^2.0.3" + +jest-mock@^27.5.1: + version "27.5.1" + resolved "https://registry.yarnpkg.com/jest-mock/-/jest-mock-27.5.1.tgz#19948336d49ef4d9c52021d34ac7b5f36ff967d6" + integrity sha512-K4jKbY1d4ENhbrG2zuPWaQBvDly+iZ2yAW+T1fATN78hc0sInwn7wZB8XtlNnvHug5RMwV897Xm4LqmPM4e2Og== + dependencies: + "@jest/types" "^27.5.1" + "@types/node" "*" + +jest-mock@^29.7.0: + version "29.7.0" + resolved "https://registry.yarnpkg.com/jest-mock/-/jest-mock-29.7.0.tgz#4e836cf60e99c6fcfabe9f99d017f3fdd50a6347" + integrity sha512-ITOMZn+UkYS4ZFh83xYAOzWStloNzJFO2s8DWrE4lhtGD+AorgnbkiKERe4wQVBydIGPx059g6riW5Btp6Llnw== + dependencies: + "@jest/types" "^29.6.3" + "@types/node" "*" + jest-util "^29.7.0" + +jest-pnp-resolver@^1.2.2: + version "1.2.3" + resolved "https://registry.yarnpkg.com/jest-pnp-resolver/-/jest-pnp-resolver-1.2.3.tgz#930b1546164d4ad5937d5540e711d4d38d4cad2e" + integrity sha512-+3NpwQEnRoIBtx4fyhblQDPgJI0H1IEIkX7ShLUjPGA7TtUTvI1oiKi3SR4oBR0hQhQR80l4WAe5RrXBwWMA8w== + +jest-regex-util@^27.5.1: + version "27.5.1" + resolved "https://registry.yarnpkg.com/jest-regex-util/-/jest-regex-util-27.5.1.tgz#4da143f7e9fd1e542d4aa69617b38e4a78365b95" + integrity sha512-4bfKq2zie+x16okqDXjXn9ql2B0dScQu+vcwe4TvFVhkVyuWLqpZrZtXxLLWoXYgn0E87I6r6GRYHF7wFZBUvg== + +jest-regex-util@^28.0.0: + version "28.0.2" + resolved "https://registry.yarnpkg.com/jest-regex-util/-/jest-regex-util-28.0.2.tgz#afdc377a3b25fb6e80825adcf76c854e5bf47ead" + integrity sha512-4s0IgyNIy0y9FK+cjoVYoxamT7Zeo7MhzqRGx7YDYmaQn1wucY9rotiGkBzzcMXTtjrCAP/f7f+E0F7+fxPNdw== + +jest-regex-util@^29.6.3: + version "29.6.3" + resolved "https://registry.yarnpkg.com/jest-regex-util/-/jest-regex-util-29.6.3.tgz#4a556d9c776af68e1c5f48194f4d0327d24e8a52" + integrity sha512-KJJBsRCyyLNWCNBOvZyRDnAIfUiRJ8v+hOBQYGn8gDyF3UegwiP4gwRR3/SDa42g1YbVycTidUF3rKjyLFDWbg== + +jest-resolve-dependencies@^27.5.1: + version "27.5.1" + resolved "https://registry.yarnpkg.com/jest-resolve-dependencies/-/jest-resolve-dependencies-27.5.1.tgz#d811ecc8305e731cc86dd79741ee98fed06f1da8" + integrity sha512-QQOOdY4PE39iawDn5rzbIePNigfe5B9Z91GDD1ae/xNDlu9kaat8QQ5EKnNmVWPV54hUdxCVwwj6YMgR2O7IOg== + dependencies: + "@jest/types" "^27.5.1" + jest-regex-util "^27.5.1" + jest-snapshot "^27.5.1" + +jest-resolve-dependencies@^29.7.0: + version "29.7.0" + resolved "https://registry.yarnpkg.com/jest-resolve-dependencies/-/jest-resolve-dependencies-29.7.0.tgz#1b04f2c095f37fc776ff40803dc92921b1e88428" + integrity sha512-un0zD/6qxJ+S0et7WxeI3H5XSe9lTBBR7bOHCHXkKR6luG5mwDDlIzVQ0V5cZCuoTgEdcdwzTghYkTWfubi+nA== + dependencies: + jest-regex-util "^29.6.3" + jest-snapshot "^29.7.0" + +jest-resolve@^27.4.2, jest-resolve@^27.5.1: + version "27.5.1" + resolved "https://registry.yarnpkg.com/jest-resolve/-/jest-resolve-27.5.1.tgz#a2f1c5a0796ec18fe9eb1536ac3814c23617b384" + integrity sha512-FFDy8/9E6CV83IMbDpcjOhumAQPDyETnU2KZ1O98DwTnz8AOBsW/Xv3GySr1mOZdItLR+zDZ7I/UdTFbgSOVCw== + dependencies: + "@jest/types" "^27.5.1" + chalk "^4.0.0" + graceful-fs "^4.2.9" + jest-haste-map "^27.5.1" + jest-pnp-resolver "^1.2.2" + jest-util "^27.5.1" + jest-validate "^27.5.1" + resolve "^1.20.0" + resolve.exports "^1.1.0" + slash "^3.0.0" + +jest-resolve@^29.7.0: + version "29.7.0" + resolved "https://registry.yarnpkg.com/jest-resolve/-/jest-resolve-29.7.0.tgz#64d6a8992dd26f635ab0c01e5eef4399c6bcbc30" + integrity sha512-IOVhZSrg+UvVAshDSDtHyFCCBUl/Q3AAJv8iZ6ZjnZ74xzvwuzLXid9IIIPgTnY62SJjfuupMKZsZQRsCvxEgA== + dependencies: + chalk "^4.0.0" + graceful-fs "^4.2.9" + jest-haste-map "^29.7.0" + jest-pnp-resolver "^1.2.2" + jest-util "^29.7.0" + jest-validate "^29.7.0" + resolve "^1.20.0" + resolve.exports "^2.0.0" + slash "^3.0.0" + +jest-runner@^27.5.1: + version "27.5.1" + resolved "https://registry.yarnpkg.com/jest-runner/-/jest-runner-27.5.1.tgz#071b27c1fa30d90540805c5645a0ec167c7b62e5" + integrity sha512-g4NPsM4mFCOwFKXO4p/H/kWGdJp9V8kURY2lX8Me2drgXqG7rrZAx5kv+5H7wtt/cdFIjhqYx1HrlqWHaOvDaQ== + dependencies: + "@jest/console" "^27.5.1" + "@jest/environment" "^27.5.1" + "@jest/test-result" "^27.5.1" + "@jest/transform" "^27.5.1" + "@jest/types" "^27.5.1" + "@types/node" "*" + chalk "^4.0.0" + emittery "^0.8.1" + graceful-fs "^4.2.9" + jest-docblock "^27.5.1" + jest-environment-jsdom "^27.5.1" + jest-environment-node "^27.5.1" + jest-haste-map "^27.5.1" + jest-leak-detector "^27.5.1" + jest-message-util "^27.5.1" + jest-resolve "^27.5.1" + jest-runtime "^27.5.1" + jest-util "^27.5.1" + jest-worker "^27.5.1" + source-map-support "^0.5.6" + throat "^6.0.1" + +jest-runner@^29.7.0: + version "29.7.0" + resolved "https://registry.yarnpkg.com/jest-runner/-/jest-runner-29.7.0.tgz#809af072d408a53dcfd2e849a4c976d3132f718e" + integrity sha512-fsc4N6cPCAahybGBfTRcq5wFR6fpLznMg47sY5aDpsoejOcVYFb07AHuSnR0liMcPTgBsA3ZJL6kFOjPdoNipQ== + dependencies: + "@jest/console" "^29.7.0" + "@jest/environment" "^29.7.0" + "@jest/test-result" "^29.7.0" + "@jest/transform" "^29.7.0" + "@jest/types" "^29.6.3" + "@types/node" "*" + chalk "^4.0.0" + emittery "^0.13.1" + graceful-fs "^4.2.9" + jest-docblock "^29.7.0" + jest-environment-node "^29.7.0" + jest-haste-map "^29.7.0" + jest-leak-detector "^29.7.0" + jest-message-util "^29.7.0" + jest-resolve "^29.7.0" + jest-runtime "^29.7.0" + jest-util "^29.7.0" + jest-watcher "^29.7.0" + jest-worker "^29.7.0" + p-limit "^3.1.0" + source-map-support "0.5.13" + +jest-runtime@^27.5.1: + version "27.5.1" + resolved "https://registry.yarnpkg.com/jest-runtime/-/jest-runtime-27.5.1.tgz#4896003d7a334f7e8e4a53ba93fb9bcd3db0a1af" + integrity sha512-o7gxw3Gf+H2IGt8fv0RiyE1+r83FJBRruoA+FXrlHw6xEyBsU8ugA6IPfTdVyA0w8HClpbK+DGJxH59UrNMx8A== + dependencies: + "@jest/environment" "^27.5.1" + "@jest/fake-timers" "^27.5.1" + "@jest/globals" "^27.5.1" + "@jest/source-map" "^27.5.1" + "@jest/test-result" "^27.5.1" + "@jest/transform" "^27.5.1" + "@jest/types" "^27.5.1" + chalk "^4.0.0" + cjs-module-lexer "^1.0.0" + collect-v8-coverage "^1.0.0" + execa "^5.0.0" + glob "^7.1.3" + graceful-fs "^4.2.9" + jest-haste-map "^27.5.1" + jest-message-util "^27.5.1" + jest-mock "^27.5.1" + jest-regex-util "^27.5.1" + jest-resolve "^27.5.1" + jest-snapshot "^27.5.1" + jest-util "^27.5.1" + slash "^3.0.0" + strip-bom "^4.0.0" + +jest-runtime@^29.7.0: + version "29.7.0" + resolved "https://registry.yarnpkg.com/jest-runtime/-/jest-runtime-29.7.0.tgz#efecb3141cf7d3767a3a0cc8f7c9990587d3d817" + integrity sha512-gUnLjgwdGqW7B4LvOIkbKs9WGbn+QLqRQQ9juC6HndeDiezIwhDP+mhMwHWCEcfQ5RUXa6OPnFF8BJh5xegwwQ== + dependencies: + "@jest/environment" "^29.7.0" + "@jest/fake-timers" "^29.7.0" + "@jest/globals" "^29.7.0" + "@jest/source-map" "^29.6.3" + "@jest/test-result" "^29.7.0" + "@jest/transform" "^29.7.0" + "@jest/types" "^29.6.3" + "@types/node" "*" + chalk "^4.0.0" + cjs-module-lexer "^1.0.0" + collect-v8-coverage "^1.0.0" + glob "^7.1.3" + graceful-fs "^4.2.9" + jest-haste-map "^29.7.0" + jest-message-util "^29.7.0" + jest-mock "^29.7.0" + jest-regex-util "^29.6.3" + jest-resolve "^29.7.0" + jest-snapshot "^29.7.0" + jest-util "^29.7.0" + slash "^3.0.0" + strip-bom "^4.0.0" + +jest-serializer@^27.5.1: + version "27.5.1" + resolved "https://registry.yarnpkg.com/jest-serializer/-/jest-serializer-27.5.1.tgz#81438410a30ea66fd57ff730835123dea1fb1f64" + integrity sha512-jZCyo6iIxO1aqUxpuBlwTDMkzOAJS4a3eYz3YzgxxVQFwLeSA7Jfq5cbqCY+JLvTDrWirgusI/0KwxKMgrdf7w== + dependencies: + "@types/node" "*" + graceful-fs "^4.2.9" + +jest-snapshot@^27.5.1: + version "27.5.1" + resolved "https://registry.yarnpkg.com/jest-snapshot/-/jest-snapshot-27.5.1.tgz#b668d50d23d38054a51b42c4039cab59ae6eb6a1" + integrity sha512-yYykXI5a0I31xX67mgeLw1DZ0bJB+gpq5IpSuCAoyDi0+BhgU/RIrL+RTzDmkNTchvDFWKP8lp+w/42Z3us5sA== + dependencies: + "@babel/core" "^7.7.2" + "@babel/generator" "^7.7.2" + "@babel/plugin-syntax-typescript" "^7.7.2" + "@babel/traverse" "^7.7.2" + "@babel/types" "^7.0.0" + "@jest/transform" "^27.5.1" + "@jest/types" "^27.5.1" + "@types/babel__traverse" "^7.0.4" + "@types/prettier" "^2.1.5" + babel-preset-current-node-syntax "^1.0.0" + chalk "^4.0.0" + expect "^27.5.1" + graceful-fs "^4.2.9" + jest-diff "^27.5.1" + jest-get-type "^27.5.1" + jest-haste-map "^27.5.1" + jest-matcher-utils "^27.5.1" + jest-message-util "^27.5.1" + jest-util "^27.5.1" + natural-compare "^1.4.0" + pretty-format "^27.5.1" + semver "^7.3.2" + +jest-snapshot@^29.7.0: + version "29.7.0" + resolved "https://registry.yarnpkg.com/jest-snapshot/-/jest-snapshot-29.7.0.tgz#c2c574c3f51865da1bb329036778a69bf88a6be5" + integrity sha512-Rm0BMWtxBcioHr1/OX5YCP8Uov4riHvKPknOGs804Zg9JGZgmIBkbtlxJC/7Z4msKYVbIJtfU+tKb8xlYNfdkw== + dependencies: + "@babel/core" "^7.11.6" + "@babel/generator" "^7.7.2" + "@babel/plugin-syntax-jsx" "^7.7.2" + "@babel/plugin-syntax-typescript" "^7.7.2" + "@babel/types" "^7.3.3" + "@jest/expect-utils" "^29.7.0" + "@jest/transform" "^29.7.0" + "@jest/types" "^29.6.3" + babel-preset-current-node-syntax "^1.0.0" + chalk "^4.0.0" + expect "^29.7.0" + graceful-fs "^4.2.9" + jest-diff "^29.7.0" + jest-get-type "^29.6.3" + jest-matcher-utils "^29.7.0" + jest-message-util "^29.7.0" + jest-util "^29.7.0" + natural-compare "^1.4.0" + pretty-format "^29.7.0" + semver "^7.5.3" + +jest-util@^27.5.1: + version "27.5.1" + resolved "https://registry.yarnpkg.com/jest-util/-/jest-util-27.5.1.tgz#3ba9771e8e31a0b85da48fe0b0891fb86c01c2f9" + integrity sha512-Kv2o/8jNvX1MQ0KGtw480E/w4fBCDOnH6+6DmeKi6LZUIlKA5kwY0YNdlzaWTiVgxqAqik11QyxDOKk543aKXw== + dependencies: + "@jest/types" "^27.5.1" + "@types/node" "*" + chalk "^4.0.0" + ci-info "^3.2.0" + graceful-fs "^4.2.9" + picomatch "^2.2.3" + +jest-util@^28.1.3: + version "28.1.3" + resolved "https://registry.yarnpkg.com/jest-util/-/jest-util-28.1.3.tgz#f4f932aa0074f0679943220ff9cbba7e497028b0" + integrity sha512-XdqfpHwpcSRko/C35uLYFM2emRAltIIKZiJ9eAmhjsj0CqZMa0p1ib0R5fWIqGhn1a103DebTbpqIaP1qCQ6tQ== + dependencies: + "@jest/types" "^28.1.3" + "@types/node" "*" + chalk "^4.0.0" + ci-info "^3.2.0" + graceful-fs "^4.2.9" + picomatch "^2.2.3" + +jest-util@^29.7.0: + version "29.7.0" + resolved "https://registry.yarnpkg.com/jest-util/-/jest-util-29.7.0.tgz#23c2b62bfb22be82b44de98055802ff3710fc0bc" + integrity sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA== + dependencies: + "@jest/types" "^29.6.3" + "@types/node" "*" + chalk "^4.0.0" + ci-info "^3.2.0" + graceful-fs "^4.2.9" + picomatch "^2.2.3" + +jest-validate@^27.5.1: + version "27.5.1" + resolved "https://registry.yarnpkg.com/jest-validate/-/jest-validate-27.5.1.tgz#9197d54dc0bdb52260b8db40b46ae668e04df067" + integrity sha512-thkNli0LYTmOI1tDB3FI1S1RTp/Bqyd9pTarJwL87OIBFuqEb5Apv5EaApEudYg4g86e3CT6kM0RowkhtEnCBQ== + dependencies: + "@jest/types" "^27.5.1" + camelcase "^6.2.0" + chalk "^4.0.0" + jest-get-type "^27.5.1" + leven "^3.1.0" + pretty-format "^27.5.1" + +jest-validate@^29.7.0: + version "29.7.0" + resolved "https://registry.yarnpkg.com/jest-validate/-/jest-validate-29.7.0.tgz#7bf705511c64da591d46b15fce41400d52147d9c" + integrity sha512-ZB7wHqaRGVw/9hST/OuFUReG7M8vKeq0/J2egIGLdvjHCmYqGARhzXmtgi+gVeZ5uXFF219aOc3Ls2yLg27tkw== + dependencies: + "@jest/types" "^29.6.3" + camelcase "^6.2.0" + chalk "^4.0.0" + jest-get-type "^29.6.3" + leven "^3.1.0" + pretty-format "^29.7.0" + +jest-watch-typeahead@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/jest-watch-typeahead/-/jest-watch-typeahead-1.1.0.tgz#b4a6826dfb9c9420da2f7bc900de59dad11266a9" + integrity sha512-Va5nLSJTN7YFtC2jd+7wsoe1pNe5K4ShLux/E5iHEwlB9AxaxmggY7to9KUqKojhaJw3aXqt5WAb4jGPOolpEw== + dependencies: + ansi-escapes "^4.3.1" + chalk "^4.0.0" + jest-regex-util "^28.0.0" + jest-watcher "^28.0.0" + slash "^4.0.0" + string-length "^5.0.1" + strip-ansi "^7.0.1" + +jest-watcher@^27.5.1: + version "27.5.1" + resolved "https://registry.yarnpkg.com/jest-watcher/-/jest-watcher-27.5.1.tgz#71bd85fb9bde3a2c2ec4dc353437971c43c642a2" + integrity sha512-z676SuD6Z8o8qbmEGhoEUFOM1+jfEiL3DXHK/xgEiG2EyNYfFG60jluWcupY6dATjfEsKQuibReS1djInQnoVw== + dependencies: + "@jest/test-result" "^27.5.1" + "@jest/types" "^27.5.1" + "@types/node" "*" + ansi-escapes "^4.2.1" + chalk "^4.0.0" + jest-util "^27.5.1" + string-length "^4.0.1" + +jest-watcher@^28.0.0: + version "28.1.3" + resolved "https://registry.yarnpkg.com/jest-watcher/-/jest-watcher-28.1.3.tgz#c6023a59ba2255e3b4c57179fc94164b3e73abd4" + integrity sha512-t4qcqj9hze+jviFPUN3YAtAEeFnr/azITXQEMARf5cMwKY2SMBRnCQTXLixTl20OR6mLh9KLMrgVJgJISym+1g== + dependencies: + "@jest/test-result" "^28.1.3" + "@jest/types" "^28.1.3" + "@types/node" "*" + ansi-escapes "^4.2.1" + chalk "^4.0.0" + emittery "^0.10.2" + jest-util "^28.1.3" + string-length "^4.0.1" + +jest-watcher@^29.7.0: + version "29.7.0" + resolved "https://registry.yarnpkg.com/jest-watcher/-/jest-watcher-29.7.0.tgz#7810d30d619c3a62093223ce6bb359ca1b28a2f2" + integrity sha512-49Fg7WXkU3Vl2h6LbLtMQ/HyB6rXSIX7SqvBLQmssRBGN9I0PNvPmAmCWSOY6SOvrjhI/F7/bGAv9RtnsPA03g== + dependencies: + "@jest/test-result" "^29.7.0" + "@jest/types" "^29.6.3" + "@types/node" "*" + ansi-escapes "^4.2.1" + chalk "^4.0.0" + emittery "^0.13.1" + jest-util "^29.7.0" + string-length "^4.0.1" + +jest-worker@^26.2.1: + version "26.6.2" + resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-26.6.2.tgz#7f72cbc4d643c365e27b9fd775f9d0eaa9c7a8ed" + integrity sha512-KWYVV1c4i+jbMpaBC+U++4Va0cp8OisU185o73T1vo99hqi7w8tSJfUXYswwqqrjzwxa6KpRK54WhPvwf5w6PQ== + dependencies: + "@types/node" "*" + merge-stream "^2.0.0" + supports-color "^7.0.0" + +jest-worker@^27.0.2, jest-worker@^27.4.5, jest-worker@^27.5.1: + version "27.5.1" + resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-27.5.1.tgz#8d146f0900e8973b106b6f73cc1e9a8cb86f8db0" + integrity sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg== + dependencies: + "@types/node" "*" + merge-stream "^2.0.0" + supports-color "^8.0.0" + +jest-worker@^28.0.2: + version "28.1.3" + resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-28.1.3.tgz#7e3c4ce3fa23d1bb6accb169e7f396f98ed4bb98" + integrity sha512-CqRA220YV/6jCo8VWvAt1KKx6eek1VIHMPeLEbpcfSfkEeWyBNppynM/o6q+Wmw+sOhos2ml34wZbSX3G13//g== + dependencies: + "@types/node" "*" + merge-stream "^2.0.0" + supports-color "^8.0.0" + +jest-worker@^29.7.0: + version "29.7.0" + resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-29.7.0.tgz#acad073acbbaeb7262bd5389e1bcf43e10058d4a" + integrity sha512-eIz2msL/EzL9UFTFFx7jBTkeZfku0yUAyZZZmJ93H2TYEiroIx2PQjEXcwYtYl8zXCxb+PAmA2hLIt/6ZEkPHw== + dependencies: + "@types/node" "*" + jest-util "^29.7.0" + merge-stream "^2.0.0" + supports-color "^8.0.0" + +jest@^27.4.3: + version "27.5.1" + resolved "https://registry.yarnpkg.com/jest/-/jest-27.5.1.tgz#dadf33ba70a779be7a6fc33015843b51494f63fc" + integrity sha512-Yn0mADZB89zTtjkPJEXwrac3LHudkQMR+Paqa8uxJHCBr9agxztUifWCyiYrjhMPBoUVBjyny0I7XH6ozDr7QQ== + dependencies: + "@jest/core" "^27.5.1" + import-local "^3.0.2" + jest-cli "^27.5.1" + +jest@^29.7.0: + version "29.7.0" + resolved "https://registry.yarnpkg.com/jest/-/jest-29.7.0.tgz#994676fc24177f088f1c5e3737f5697204ff2613" + integrity sha512-NIy3oAFp9shda19hy4HK0HRTWKtPJmGdnvywu01nOqNC2vZg+Z+fvJDxpMQA88eb2I9EcafcdjYgsDthnYTvGw== + dependencies: + "@jest/core" "^29.7.0" + "@jest/types" "^29.6.3" + import-local "^3.0.2" + jest-cli "^29.7.0" + +jiti@^1.19.1: + version "1.21.0" + resolved "https://registry.yarnpkg.com/jiti/-/jiti-1.21.0.tgz#7c97f8fe045724e136a397f7340475244156105d" + integrity sha512-gFqAIbuKyyso/3G2qhiO2OM6shY6EPP/R0+mkDbyspxKazh8BXDC5FiFsUjlczgdNz/vfra0da2y+aHrusLG/Q== + +"js-tokens@^3.0.0 || ^4.0.0", js-tokens@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" + integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== + +js-yaml@^3.13.1: + version "3.14.1" + resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.14.1.tgz#dae812fdb3825fa306609a8717383c50c36a0537" + integrity sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g== + dependencies: + argparse "^1.0.7" + esprima "^4.0.0" + +js-yaml@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-4.1.0.tgz#c1fb65f8f5017901cdd2c951864ba18458a10602" + integrity sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA== + dependencies: + argparse "^2.0.1" + +jsdom@^16.6.0: + version "16.7.0" + resolved "https://registry.yarnpkg.com/jsdom/-/jsdom-16.7.0.tgz#918ae71965424b197c819f8183a754e18977b710" + integrity sha512-u9Smc2G1USStM+s/x1ru5Sxrl6mPYCbByG1U/hUmqaVsm4tbNyS7CicOSRyuGQYZhTu0h84qkZZQ/I+dzizSVw== + dependencies: + abab "^2.0.5" + acorn "^8.2.4" + acorn-globals "^6.0.0" + cssom "^0.4.4" + cssstyle "^2.3.0" + data-urls "^2.0.0" + decimal.js "^10.2.1" + domexception "^2.0.1" + escodegen "^2.0.0" + form-data "^3.0.0" + html-encoding-sniffer "^2.0.1" + http-proxy-agent "^4.0.1" + https-proxy-agent "^5.0.0" + is-potential-custom-element-name "^1.0.1" + nwsapi "^2.2.0" + parse5 "6.0.1" + saxes "^5.0.1" + symbol-tree "^3.2.4" + tough-cookie "^4.0.0" + w3c-hr-time "^1.0.2" + w3c-xmlserializer "^2.0.0" + webidl-conversions "^6.1.0" + whatwg-encoding "^1.0.5" + whatwg-mimetype "^2.3.0" + whatwg-url "^8.5.0" + ws "^7.4.6" + xml-name-validator "^3.0.0" + +jsesc@^2.5.1: + version "2.5.2" + resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-2.5.2.tgz#80564d2e483dacf6e8ef209650a67df3f0c283a4" + integrity sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA== + +jsesc@~0.5.0: + version "0.5.0" + resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-0.5.0.tgz#e7dee66e35d6fc16f710fe91d5cf69f70f08911d" + integrity sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA== + +json-buffer@3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/json-buffer/-/json-buffer-3.0.1.tgz#9338802a30d3b6605fbe0613e094008ca8c05a13" + integrity sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ== + +json-parse-even-better-errors@^2.3.0, json-parse-even-better-errors@^2.3.1: + version "2.3.1" + resolved "https://registry.yarnpkg.com/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz#7c47805a94319928e05777405dc12e1f7a4ee02d" + integrity sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w== + +json-schema-traverse@^0.4.1: + version "0.4.1" + resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660" + integrity sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg== + +json-schema-traverse@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz#ae7bcb3656ab77a73ba5c49bf654f38e6b6860e2" + integrity sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug== + +json-schema@^0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/json-schema/-/json-schema-0.4.0.tgz#f7de4cf6efab838ebaeb3236474cbba5a1930ab5" + integrity sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA== + +json-stable-stringify-without-jsonify@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz#9db7b59496ad3f3cfef30a75142d2d930ad72651" + integrity sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw== + +json5@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/json5/-/json5-1.0.2.tgz#63d98d60f21b313b77c4d6da18bfa69d80e1d593" + integrity sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA== + dependencies: + minimist "^1.2.0" + +json5@^2.1.2, json5@^2.2.0, json5@^2.2.3: + version "2.2.3" + resolved "https://registry.yarnpkg.com/json5/-/json5-2.2.3.tgz#78cd6f1a19bdc12b73db5ad0c61efd66c1e29283" + integrity sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg== + +jsonfile@^6.0.1: + version "6.1.0" + resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-6.1.0.tgz#bc55b2634793c679ec6403094eb13698a6ec0aae" + integrity sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ== + dependencies: + universalify "^2.0.0" + optionalDependencies: + graceful-fs "^4.1.6" + +jsonpath@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/jsonpath/-/jsonpath-1.1.1.tgz#0ca1ed8fb65bb3309248cc9d5466d12d5b0b9901" + integrity sha512-l6Cg7jRpixfbgoWgkrl77dgEj8RPvND0wMH6TwQmi9Qs4TFfS9u5cUFnbeKTwj5ga5Y3BTGGNI28k117LJ009w== + dependencies: + esprima "1.2.2" + static-eval "2.0.2" + underscore "1.12.1" + +jsonpointer@^5.0.0: + version "5.0.1" + resolved "https://registry.yarnpkg.com/jsonpointer/-/jsonpointer-5.0.1.tgz#2110e0af0900fd37467b5907ecd13a7884a1b559" + integrity sha512-p/nXbhSEcu3pZRdkW1OfJhpsVtW1gd4Wa1fnQc9YLiTfAjn0312eMKimbdIQzuZl9aa9xUGaRlP9T/CJE/ditQ== + +"jsx-ast-utils@^2.4.1 || ^3.0.0", jsx-ast-utils@^3.3.5: + version "3.3.5" + resolved "https://registry.yarnpkg.com/jsx-ast-utils/-/jsx-ast-utils-3.3.5.tgz#4766bd05a8e2a11af222becd19e15575e52a853a" + integrity sha512-ZZow9HBI5O6EPgSJLUb8n2NKgmVWTwCvHGwFuJlMjvLFqlGG6pjirPhtdsseaLZjSibD8eegzmYpUZwoIlj2cQ== + dependencies: + array-includes "^3.1.6" + array.prototype.flat "^1.3.1" + object.assign "^4.1.4" + object.values "^1.1.6" + +keyv@^4.5.3: + version "4.5.4" + resolved "https://registry.yarnpkg.com/keyv/-/keyv-4.5.4.tgz#a879a99e29452f942439f2a405e3af8b31d4de93" + integrity sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw== + dependencies: + json-buffer "3.0.1" + +kind-of@^6.0.2: + version "6.0.3" + resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-6.0.3.tgz#07c05034a6c349fa06e24fa35aa76db4580ce4dd" + integrity sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw== + +kleur@^3.0.3: + version "3.0.3" + resolved "https://registry.yarnpkg.com/kleur/-/kleur-3.0.3.tgz#a79c9ecc86ee1ce3fa6206d1216c501f147fc07e" + integrity sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w== + +klona@^2.0.4, klona@^2.0.5: + version "2.0.6" + resolved "https://registry.yarnpkg.com/klona/-/klona-2.0.6.tgz#85bffbf819c03b2f53270412420a4555ef882e22" + integrity sha512-dhG34DXATL5hSxJbIexCft8FChFXtmskoZYnoPWjXQuebWYCNkVeV3KkGegCK9CP1oswI/vQibS2GY7Em/sJJA== + +language-subtag-registry@^0.3.20: + version "0.3.22" + resolved "https://registry.yarnpkg.com/language-subtag-registry/-/language-subtag-registry-0.3.22.tgz#2e1500861b2e457eba7e7ae86877cbd08fa1fd1d" + integrity sha512-tN0MCzyWnoz/4nHS6uxdlFWoUZT7ABptwKPQ52Ea7URk6vll88bWBVhodtnlfEuCcKWNGoc+uGbw1cwa9IKh/w== + +language-tags@^1.0.9: + version "1.0.9" + resolved "https://registry.yarnpkg.com/language-tags/-/language-tags-1.0.9.tgz#1ffdcd0ec0fafb4b1be7f8b11f306ad0f9c08777" + integrity sha512-MbjN408fEndfiQXbFQ1vnd+1NoLDsnQW41410oQBXiyXDMYH5z505juWa4KUE1LqxRC7DgOgZDbKLxHIwm27hA== + dependencies: + language-subtag-registry "^0.3.20" + +launch-editor@^2.6.0: + version "2.6.1" + resolved "https://registry.yarnpkg.com/launch-editor/-/launch-editor-2.6.1.tgz#f259c9ef95cbc9425620bbbd14b468fcdb4ffe3c" + integrity sha512-eB/uXmFVpY4zezmGp5XtU21kwo7GBbKB+EQ+UZeWtGb9yAM5xt/Evk+lYH3eRNAtId+ej4u7TYPFZ07w4s7rRw== + dependencies: + picocolors "^1.0.0" + shell-quote "^1.8.1" + +leven@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/leven/-/leven-3.1.0.tgz#77891de834064cccba82ae7842bb6b14a13ed7f2" + integrity sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A== + +levn@^0.4.1: + version "0.4.1" + resolved "https://registry.yarnpkg.com/levn/-/levn-0.4.1.tgz#ae4562c007473b932a6200d403268dd2fffc6ade" + integrity sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ== + dependencies: + prelude-ls "^1.2.1" + type-check "~0.4.0" + +levn@~0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/levn/-/levn-0.3.0.tgz#3b09924edf9f083c0490fdd4c0bc4421e04764ee" + integrity sha512-0OO4y2iOHix2W6ujICbKIaEQXvFQHue65vUG3pb5EUomzPI90z9hsA1VsO/dbIIpC53J8gxM9Q4Oho0jrCM/yA== + dependencies: + prelude-ls "~1.1.2" + type-check "~0.3.2" + +lilconfig@^2.0.3, lilconfig@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/lilconfig/-/lilconfig-2.1.0.tgz#78e23ac89ebb7e1bfbf25b18043de756548e7f52" + integrity sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ== + +lilconfig@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/lilconfig/-/lilconfig-3.0.0.tgz#f8067feb033b5b74dab4602a5f5029420be749bc" + integrity sha512-K2U4W2Ff5ibV7j7ydLr+zLAkIg5JJ4lPn1Ltsdt+Tz/IjQ8buJ55pZAxoP34lqIiwtF9iAvtLv3JGv7CAyAg+g== + +lines-and-columns@^1.1.6: + version "1.2.4" + resolved "https://registry.yarnpkg.com/lines-and-columns/-/lines-and-columns-1.2.4.tgz#eca284f75d2965079309dc0ad9255abb2ebc1632" + integrity sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg== + +loader-runner@^4.2.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/loader-runner/-/loader-runner-4.3.0.tgz#c1b4a163b99f614830353b16755e7149ac2314e1" + integrity sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg== + +loader-utils@^2.0.0, loader-utils@^2.0.4: + version "2.0.4" + resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-2.0.4.tgz#8b5cb38b5c34a9a018ee1fc0e6a066d1dfcc528c" + integrity sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw== + dependencies: + big.js "^5.2.2" + emojis-list "^3.0.0" + json5 "^2.1.2" + +loader-utils@^3.2.0: + version "3.2.1" + resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-3.2.1.tgz#4fb104b599daafd82ef3e1a41fb9265f87e1f576" + integrity sha512-ZvFw1KWS3GVyYBYb7qkmRM/WwL2TQQBxgCK62rlvm4WpVQ23Nb4tYjApUlfjrEGvOs7KHEsmyUn75OHZrJMWPw== + +locate-path@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-3.0.0.tgz#dbec3b3ab759758071b58fe59fc41871af21400e" + integrity sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A== + dependencies: + p-locate "^3.0.0" + path-exists "^3.0.0" + +locate-path@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-5.0.0.tgz#1afba396afd676a6d42504d0a67a3a7eb9f62aa0" + integrity sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g== + dependencies: + p-locate "^4.1.0" + +locate-path@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-6.0.0.tgz#55321eb309febbc59c4801d931a72452a681d286" + integrity sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw== + dependencies: + p-locate "^5.0.0" + +lodash-es@^4.17.21: + version "4.17.21" + resolved "https://registry.yarnpkg.com/lodash-es/-/lodash-es-4.17.21.tgz#43e626c46e6591b7750beb2b50117390c609e3ee" + integrity sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw== + +lodash.debounce@^4.0.8: + version "4.0.8" + resolved "https://registry.yarnpkg.com/lodash.debounce/-/lodash.debounce-4.0.8.tgz#82d79bff30a67c4005ffd5e2515300ad9ca4d7af" + integrity sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow== + +lodash.memoize@^4.1.2: + version "4.1.2" + resolved "https://registry.yarnpkg.com/lodash.memoize/-/lodash.memoize-4.1.2.tgz#bcc6c49a42a2840ed997f323eada5ecd182e0bfe" + integrity sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag== + +lodash.merge@^4.6.2: + version "4.6.2" + resolved "https://registry.yarnpkg.com/lodash.merge/-/lodash.merge-4.6.2.tgz#558aa53b43b661e1925a0afdfa36a9a1085fe57a" + integrity sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ== + +lodash.sortby@^4.7.0: + version "4.7.0" + resolved "https://registry.yarnpkg.com/lodash.sortby/-/lodash.sortby-4.7.0.tgz#edd14c824e2cc9c1e0b0a1b42bb5210516a42438" + integrity sha512-HDWXG8isMntAyRF5vZ7xKuEvOhT4AhlRt/3czTSjvGUxjYCBVRQY48ViDHyfYz9VIoBkW4TMGQNapx+l3RUwdA== + +lodash.uniq@^4.5.0: + version "4.5.0" + resolved "https://registry.yarnpkg.com/lodash.uniq/-/lodash.uniq-4.5.0.tgz#d0225373aeb652adc1bc82e4945339a842754773" + integrity sha512-xfBaXQd9ryd9dlSDvnvI0lvxfLJlYAZzXomUYzLKtUeOQvOP5piqAWuGtrhWeqaXK9hhoM/iyJc5AV+XfsX3HQ== + +lodash@4.17.21, lodash@^4.17.15, lodash@^4.17.20, lodash@^4.17.21, lodash@^4.7.0: + version "4.17.21" + resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" + integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== + +loose-envify@^1.1.0, loose-envify@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.4.0.tgz#71ee51fa7be4caec1a63839f7e682d8132d30caf" + integrity sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q== + dependencies: + js-tokens "^3.0.0 || ^4.0.0" + +lower-case@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/lower-case/-/lower-case-2.0.2.tgz#6fa237c63dbdc4a82ca0fd882e4722dc5e634e28" + integrity sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg== + dependencies: + tslib "^2.0.3" + +lru-cache@^4.0.1: + version "4.1.5" + resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-4.1.5.tgz#8bbe50ea85bed59bc9e33dcab8235ee9bcf443cd" + integrity sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g== + dependencies: + pseudomap "^1.0.2" + yallist "^2.1.2" + +lru-cache@^5.1.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-5.1.1.tgz#1da27e6710271947695daf6848e847f01d84b920" + integrity sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w== + dependencies: + yallist "^3.0.2" + +lru-cache@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-6.0.0.tgz#6d6fe6570ebd96aaf90fcad1dafa3b2566db3a94" + integrity sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA== + dependencies: + yallist "^4.0.0" + +"lru-cache@^9.1.1 || ^10.0.0": + version "10.2.0" + resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-10.2.0.tgz#0bd445ca57363465900f4d1f9bd8db343a4d95c3" + integrity sha512-2bIM8x+VAf6JT4bKAljS1qUWgMsqZRPGJS6FSahIMPVvctcNhyVp7AJu7quxOW9jwkryBReKZY5tY5JYv2n/7Q== + +lz-string@^1.5.0: + version "1.5.0" + resolved "https://registry.yarnpkg.com/lz-string/-/lz-string-1.5.0.tgz#c1ab50f77887b712621201ba9fd4e3a6ed099941" + integrity sha512-h5bgJWpxJNswbU7qCrV0tIKQCaS3blPDrqKWx+QxzuzL1zGUzij9XCWLrSLsJPu5t+eWA/ycetzYAO5IOMcWAQ== + +magic-string@^0.25.0, magic-string@^0.25.7: + version "0.25.9" + resolved "https://registry.yarnpkg.com/magic-string/-/magic-string-0.25.9.tgz#de7f9faf91ef8a1c91d02c2e5314c8277dbcdd1c" + integrity sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ== + dependencies: + sourcemap-codec "^1.4.8" + +make-dir@^3.0.2, make-dir@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-3.1.0.tgz#415e967046b3a7f1d185277d84aa58203726a13f" + integrity sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw== + dependencies: + semver "^6.0.0" + +make-dir@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-4.0.0.tgz#c3c2307a771277cd9638305f915c29ae741b614e" + integrity sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw== + dependencies: + semver "^7.5.3" + +makeerror@1.0.12: + version "1.0.12" + resolved "https://registry.yarnpkg.com/makeerror/-/makeerror-1.0.12.tgz#3e5dd2079a82e812e983cc6610c4a2cb0eaa801a" + integrity sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg== + dependencies: + tmpl "1.0.5" + +mdn-data@2.0.14: + version "2.0.14" + resolved "https://registry.yarnpkg.com/mdn-data/-/mdn-data-2.0.14.tgz#7113fc4281917d63ce29b43446f701e68c25ba50" + integrity sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow== + +mdn-data@2.0.4: + version "2.0.4" + resolved "https://registry.yarnpkg.com/mdn-data/-/mdn-data-2.0.4.tgz#699b3c38ac6f1d728091a64650b65d388502fd5b" + integrity sha512-iV3XNKw06j5Q7mi6h+9vbx23Tv7JkjEVgKHW4pimwyDGWm0OIQntJJ+u1C6mg6mK1EaTv42XQ7w76yuzH7M2cA== + +media-typer@0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/media-typer/-/media-typer-0.3.0.tgz#8710d7af0aa626f8fffa1ce00168545263255748" + integrity sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ== + +memfs@^3.1.2, memfs@^3.4.3: + version "3.6.0" + resolved "https://registry.yarnpkg.com/memfs/-/memfs-3.6.0.tgz#d7a2110f86f79dd950a8b6df6d57bc984aa185f6" + integrity sha512-EGowvkkgbMcIChjMTMkESFDbZeSh8xZ7kNSF0hAiAN4Jh6jgHCRS0Ga/+C8y6Au+oqpezRHCfPsmJ2+DwAgiwQ== + dependencies: + fs-monkey "^1.0.4" + +merge-descriptors@1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/merge-descriptors/-/merge-descriptors-1.0.1.tgz#b00aaa556dd8b44568150ec9d1b953f3f90cbb61" + integrity sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w== + +merge-stream@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/merge-stream/-/merge-stream-2.0.0.tgz#52823629a14dd00c9770fb6ad47dc6310f2c1f60" + integrity sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w== + +merge2@^1.3.0, merge2@^1.4.1: + version "1.4.1" + resolved "https://registry.yarnpkg.com/merge2/-/merge2-1.4.1.tgz#4368892f885e907455a6fd7dc55c0c9d404990ae" + integrity sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg== + +methods@~1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/methods/-/methods-1.1.2.tgz#5529a4d67654134edcc5266656835b0f851afcee" + integrity sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w== + +micromatch@^4.0.2, micromatch@^4.0.4, micromatch@^4.0.5: + version "4.0.5" + resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.5.tgz#bc8999a7cbbf77cdc89f132f6e467051b49090c6" + integrity sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA== + dependencies: + braces "^3.0.2" + picomatch "^2.3.1" + +mime-db@1.52.0, "mime-db@>= 1.43.0 < 2": + version "1.52.0" + resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.52.0.tgz#bbabcdc02859f4987301c856e3387ce5ec43bf70" + integrity sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg== + +mime-types@^2.1.12, mime-types@^2.1.27, mime-types@^2.1.31, mime-types@~2.1.17, mime-types@~2.1.24, mime-types@~2.1.34: + version "2.1.35" + resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.35.tgz#381a871b62a734450660ae3deee44813f70d959a" + integrity sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw== + dependencies: + mime-db "1.52.0" + +mime@1.6.0: + version "1.6.0" + resolved "https://registry.yarnpkg.com/mime/-/mime-1.6.0.tgz#32cd9e5c64553bd58d19a568af452acff04981b1" + integrity sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg== + +mimic-fn@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b" + integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg== + +min-indent@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/min-indent/-/min-indent-1.0.1.tgz#a63f681673b30571fbe8bc25686ae746eefa9869" + integrity sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg== + +mini-css-extract-plugin@^2.4.5: + version "2.7.7" + resolved "https://registry.yarnpkg.com/mini-css-extract-plugin/-/mini-css-extract-plugin-2.7.7.tgz#4acf02f362c641c38fb913bfcb7ca2fc4a7cf339" + integrity sha512-+0n11YGyRavUR3IlaOzJ0/4Il1avMvJ1VJfhWfCn24ITQXhRr1gghbhhrda6tgtNcpZaWKdSuwKq20Jb7fnlyw== + dependencies: + schema-utils "^4.0.0" + +minimalistic-assert@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz#2e194de044626d4a10e7f7fbc00ce73e83e4d5c7" + integrity sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A== + +minimatch@9.0.3, minimatch@^9.0.1: + version "9.0.3" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-9.0.3.tgz#a6e00c3de44c3a542bfaae70abfc22420a6da825" + integrity sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg== + dependencies: + brace-expansion "^2.0.1" + +minimatch@^3.0.4, minimatch@^3.0.5, minimatch@^3.1.1, minimatch@^3.1.2: + version "3.1.2" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.1.2.tgz#19cd194bfd3e428f049a70817c038d89ab4be35b" + integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw== + dependencies: + brace-expansion "^1.1.7" + +minimatch@^5.0.1: + version "5.1.6" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-5.1.6.tgz#1cfcb8cf5522ea69952cd2af95ae09477f122a96" + integrity sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g== + dependencies: + brace-expansion "^2.0.1" + +minimist@^1.2.0, minimist@^1.2.6: + version "1.2.8" + resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.8.tgz#c1a464e7693302e082a075cee0c057741ac4772c" + integrity sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA== + +"minipass@^5.0.0 || ^6.0.2 || ^7.0.0": + version "7.0.4" + resolved "https://registry.yarnpkg.com/minipass/-/minipass-7.0.4.tgz#dbce03740f50a4786ba994c1fb908844d27b038c" + integrity sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ== + +mkdirp@~0.5.1: + version "0.5.6" + resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.6.tgz#7def03d2432dcae4ba1d611445c48396062255f6" + integrity sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw== + dependencies: + minimist "^1.2.6" + +ms@2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" + integrity sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A== + +ms@2.1.2: + version "2.1.2" + resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" + integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== + +ms@2.1.3, ms@^2.1.1: + version "2.1.3" + resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2" + integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== + +multicast-dns@^7.2.5: + version "7.2.5" + resolved "https://registry.yarnpkg.com/multicast-dns/-/multicast-dns-7.2.5.tgz#77eb46057f4d7adbd16d9290fa7299f6fa64cced" + integrity sha512-2eznPJP8z2BFLX50tf0LuODrpINqP1RVIm/CObbTcBRITQgmC/TjcREF1NeTBzIcR5XO/ukWo+YHOjBbFwIupg== + dependencies: + dns-packet "^5.2.2" + thunky "^1.0.2" + +mz@^2.7.0: + version "2.7.0" + resolved "https://registry.yarnpkg.com/mz/-/mz-2.7.0.tgz#95008057a56cafadc2bc63dde7f9ff6955948e32" + integrity sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q== + dependencies: + any-promise "^1.0.0" + object-assign "^4.0.1" + thenify-all "^1.0.0" + +nanoid@^3.3.7: + version "3.3.7" + resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.7.tgz#d0c301a691bc8d54efa0a2226ccf3fe2fd656bd8" + integrity sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g== + +natural-compare-lite@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/natural-compare-lite/-/natural-compare-lite-1.4.0.tgz#17b09581988979fddafe0201e931ba933c96cbb4" + integrity sha512-Tj+HTDSJJKaZnfiuw+iaF9skdPpTo2GtEly5JHnWV/hfv2Qj/9RKsGISQtLh2ox3l5EAGw487hnBee0sIJ6v2g== + +natural-compare@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" + integrity sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw== + +negotiator@0.6.3: + version "0.6.3" + resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.3.tgz#58e323a72fedc0d6f9cd4d31fe49f51479590ccd" + integrity sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg== + +neo-async@^2.6.2: + version "2.6.2" + resolved "https://registry.yarnpkg.com/neo-async/-/neo-async-2.6.2.tgz#b4aafb93e3aeb2d8174ca53cf163ab7d7308305f" + integrity sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw== + +nmtree@^1.0.6: + version "1.0.6" + resolved "https://registry.yarnpkg.com/nmtree/-/nmtree-1.0.6.tgz#953e057ad545e9e627f1275bd25fea4e92c1cf63" + integrity sha512-SUPCoyX5w/lOT6wD/PZEymR+J899984tYEOYjuDqQlIOeX5NSb1MEsCcT0az+dhZD0MLAj5hGBZEpKQxuDdniA== + dependencies: + commander "^2.11.0" + +no-case@^3.0.4: + version "3.0.4" + resolved "https://registry.yarnpkg.com/no-case/-/no-case-3.0.4.tgz#d361fd5c9800f558551a8369fc0dcd4662b6124d" + integrity sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg== + dependencies: + lower-case "^2.0.2" + tslib "^2.0.3" + +node-forge@^1: + version "1.3.1" + resolved "https://registry.yarnpkg.com/node-forge/-/node-forge-1.3.1.tgz#be8da2af243b2417d5f646a770663a92b7e9ded3" + integrity sha512-dPEtOeMvF9VMcYV/1Wb8CPoVAXtp6MKMlcbAt4ddqmGqUJ6fQZFXkNZNkNlfevtNkGtaSoXf/vNNNSvgrdXwtA== + +node-int64@^0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/node-int64/-/node-int64-0.4.0.tgz#87a9065cdb355d3182d8f94ce11188b825c68a3b" + integrity sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw== + +node-releases@^2.0.14: + version "2.0.14" + resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.14.tgz#2ffb053bceb8b2be8495ece1ab6ce600c4461b0b" + integrity sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw== + +normalize-path@^3.0.0, normalize-path@~3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65" + integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== + +normalize-range@^0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/normalize-range/-/normalize-range-0.1.2.tgz#2d10c06bdfd312ea9777695a4d28439456b75942" + integrity sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA== + +normalize-url@^6.0.1: + version "6.1.0" + resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-6.1.0.tgz#40d0885b535deffe3f3147bec877d05fe4c5668a" + integrity sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A== + +npm-run-path@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-4.0.1.tgz#b7ecd1e5ed53da8e37a55e1c2269e0b97ed748ea" + integrity sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw== + dependencies: + path-key "^3.0.0" + +nth-check@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/nth-check/-/nth-check-1.0.2.tgz#b2bd295c37e3dd58a3bf0700376663ba4d9cf05c" + integrity sha512-WeBOdju8SnzPN5vTUJYxYUxLeXpCaVP5i5e0LF8fg7WORF2Wd7wFX/pk0tYZk7s8T+J7VLy0Da6J1+wCT0AtHg== + dependencies: + boolbase "~1.0.0" + +nth-check@^2.0.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/nth-check/-/nth-check-2.1.1.tgz#c9eab428effce36cd6b92c924bdb000ef1f1ed1d" + integrity sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w== + dependencies: + boolbase "^1.0.0" + +nwsapi@^2.2.0: + version "2.2.7" + resolved "https://registry.yarnpkg.com/nwsapi/-/nwsapi-2.2.7.tgz#738e0707d3128cb750dddcfe90e4610482df0f30" + integrity sha512-ub5E4+FBPKwAZx0UwIQOjYWGHTEq5sPqHQNRN8Z9e4A7u3Tj1weLJsL59yH9vmvqEtBHaOmT6cYQKIZOxp35FQ== + +object-assign@^4.0.1, object-assign@^4.1.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" + integrity sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg== + +object-hash@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/object-hash/-/object-hash-3.0.0.tgz#73f97f753e7baffc0e2cc9d6e079079744ac82e9" + integrity sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw== + +object-inspect@^1.13.1, object-inspect@^1.9.0: + version "1.13.1" + resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.13.1.tgz#b96c6109324ccfef6b12216a956ca4dc2ff94bc2" + integrity sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ== + +object-is@^1.1.5: + version "1.1.5" + resolved "https://registry.yarnpkg.com/object-is/-/object-is-1.1.5.tgz#b9deeaa5fc7f1846a0faecdceec138e5778f53ac" + integrity sha512-3cyDsyHgtmi7I7DfSSI2LDp6SK2lwvtbg0p0R1e0RvTqF5ceGx+K2dfSjm1bKDMVCFEDAQvy+o8c6a7VujOddw== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.3" + +object-keys@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.1.1.tgz#1c47f272df277f3b1daf061677d9c82e2322c60e" + integrity sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA== + +object.assign@^4.1.4: + version "4.1.5" + resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.1.5.tgz#3a833f9ab7fdb80fc9e8d2300c803d216d8fdbb0" + integrity sha512-byy+U7gp+FVwmyzKPYhW2h5l3crpmGsxl7X2s8y43IgxvG4g3QZ6CffDtsNQy1WsmZpQbO+ybo0AlW7TY6DcBQ== + dependencies: + call-bind "^1.0.5" + define-properties "^1.2.1" + has-symbols "^1.0.3" + object-keys "^1.1.1" + +object.entries@^1.1.6, object.entries@^1.1.7: + version "1.1.7" + resolved "https://registry.yarnpkg.com/object.entries/-/object.entries-1.1.7.tgz#2b47760e2a2e3a752f39dd874655c61a7f03c131" + integrity sha512-jCBs/0plmPsOnrKAfFQXRG2NFjlhZgjjcBLSmTnEhU8U6vVTsVe8ANeQJCHTl3gSsI4J+0emOoCgoKlmQPMgmA== + dependencies: + call-bind "^1.0.2" + define-properties "^1.2.0" + es-abstract "^1.22.1" + +object.fromentries@^2.0.6, object.fromentries@^2.0.7: + version "2.0.7" + resolved "https://registry.yarnpkg.com/object.fromentries/-/object.fromentries-2.0.7.tgz#71e95f441e9a0ea6baf682ecaaf37fa2a8d7e616" + integrity sha512-UPbPHML6sL8PI/mOqPwsH4G6iyXcCGzLin8KvEPenOZN5lpCNBZZQ+V62vdjB1mQHrmqGQt5/OJzemUA+KJmEA== + dependencies: + call-bind "^1.0.2" + define-properties "^1.2.0" + es-abstract "^1.22.1" + +object.getownpropertydescriptors@^2.1.0: + version "2.1.7" + resolved "https://registry.yarnpkg.com/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.7.tgz#7a466a356cd7da4ba8b9e94ff6d35c3eeab5d56a" + integrity sha512-PrJz0C2xJ58FNn11XV2lr4Jt5Gzl94qpy9Lu0JlfEj14z88sqbSBJCBEzdlNUCzY2gburhbrwOZ5BHCmuNUy0g== + dependencies: + array.prototype.reduce "^1.0.6" + call-bind "^1.0.2" + define-properties "^1.2.0" + es-abstract "^1.22.1" + safe-array-concat "^1.0.0" + +object.groupby@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/object.groupby/-/object.groupby-1.0.1.tgz#d41d9f3c8d6c778d9cbac86b4ee9f5af103152ee" + integrity sha512-HqaQtqLnp/8Bn4GL16cj+CUYbnpe1bh0TtEaWvybszDG4tgxCJuRpV8VGuvNaI1fAnI4lUJzDG55MXcOH4JZcQ== + dependencies: + call-bind "^1.0.2" + define-properties "^1.2.0" + es-abstract "^1.22.1" + get-intrinsic "^1.2.1" + +object.hasown@^1.1.2: + version "1.1.3" + resolved "https://registry.yarnpkg.com/object.hasown/-/object.hasown-1.1.3.tgz#6a5f2897bb4d3668b8e79364f98ccf971bda55ae" + integrity sha512-fFI4VcYpRHvSLXxP7yiZOMAd331cPfd2p7PFDVbgUsYOfCT3tICVqXWngbjr4m49OvsBwUBQ6O2uQoJvy3RexA== + dependencies: + define-properties "^1.2.0" + es-abstract "^1.22.1" + +object.values@^1.1.0, object.values@^1.1.6, object.values@^1.1.7: + version "1.1.7" + resolved "https://registry.yarnpkg.com/object.values/-/object.values-1.1.7.tgz#617ed13272e7e1071b43973aa1655d9291b8442a" + integrity sha512-aU6xnDFYT3x17e/f0IiiwlGPTy2jzMySGfUB4fq6z7CV8l85CWHDk5ErhyhpfDHhrOMwGFhSQkhMGHaIotA6Ng== + dependencies: + call-bind "^1.0.2" + define-properties "^1.2.0" + es-abstract "^1.22.1" + +obuf@^1.0.0, obuf@^1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/obuf/-/obuf-1.1.2.tgz#09bea3343d41859ebd446292d11c9d4db619084e" + integrity sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg== + +on-finished@2.4.1: + version "2.4.1" + resolved "https://registry.yarnpkg.com/on-finished/-/on-finished-2.4.1.tgz#58c8c44116e54845ad57f14ab10b03533184ac3f" + integrity sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg== + dependencies: + ee-first "1.1.1" + +on-headers@~1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/on-headers/-/on-headers-1.0.2.tgz#772b0ae6aaa525c399e489adfad90c403eb3c28f" + integrity sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA== + +once@^1.3.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" + integrity sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w== + dependencies: + wrappy "1" + +onetime@^5.1.2: + version "5.1.2" + resolved "https://registry.yarnpkg.com/onetime/-/onetime-5.1.2.tgz#d0e96ebb56b07476df1dd9c4806e5237985ca45e" + integrity sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg== + dependencies: + mimic-fn "^2.1.0" + +open@^8.0.9, open@^8.4.0: + version "8.4.2" + resolved "https://registry.yarnpkg.com/open/-/open-8.4.2.tgz#5b5ffe2a8f793dcd2aad73e550cb87b59cb084f9" + integrity sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ== + dependencies: + define-lazy-prop "^2.0.0" + is-docker "^2.1.1" + is-wsl "^2.2.0" + +optionator@^0.8.1: + version "0.8.3" + resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.8.3.tgz#84fa1d036fe9d3c7e21d99884b601167ec8fb495" + integrity sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA== + dependencies: + deep-is "~0.1.3" + fast-levenshtein "~2.0.6" + levn "~0.3.0" + prelude-ls "~1.1.2" + type-check "~0.3.2" + word-wrap "~1.2.3" + +optionator@^0.9.3: + version "0.9.3" + resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.9.3.tgz#007397d44ed1872fdc6ed31360190f81814e2c64" + integrity sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg== + dependencies: + "@aashutoshrathi/word-wrap" "^1.2.3" + deep-is "^0.1.3" + fast-levenshtein "^2.0.6" + levn "^0.4.1" + prelude-ls "^1.2.1" + type-check "^0.4.0" + +p-limit@^2.0.0, p-limit@^2.2.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.3.0.tgz#3dd33c647a214fdfffd835933eb086da0dc21db1" + integrity sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w== + dependencies: + p-try "^2.0.0" + +p-limit@^3.0.2, p-limit@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-3.1.0.tgz#e1daccbe78d0d1388ca18c64fea38e3e57e3706b" + integrity sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ== + dependencies: + yocto-queue "^0.1.0" + +p-locate@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-3.0.0.tgz#322d69a05c0264b25997d9f40cd8a891ab0064a4" + integrity sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ== + dependencies: + p-limit "^2.0.0" + +p-locate@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-4.1.0.tgz#a3428bb7088b3a60292f66919278b7c297ad4f07" + integrity sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A== + dependencies: + p-limit "^2.2.0" + +p-locate@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-5.0.0.tgz#83c8315c6785005e3bd021839411c9e110e6d834" + integrity sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw== + dependencies: + p-limit "^3.0.2" + +p-retry@^4.5.0: + version "4.6.2" + resolved "https://registry.yarnpkg.com/p-retry/-/p-retry-4.6.2.tgz#9baae7184057edd4e17231cee04264106e092a16" + integrity sha512-312Id396EbJdvRONlngUx0NydfrIQ5lsYu0znKVUzVvArzEIt08V1qhtyESbGVd1FGX7UKtiFp5uwKZdM8wIuQ== + dependencies: + "@types/retry" "0.12.0" + retry "^0.13.1" + +p-try@^2.0.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/p-try/-/p-try-2.2.0.tgz#cb2868540e313d61de58fafbe35ce9004d5540e6" + integrity sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ== + +param-case@^3.0.4: + version "3.0.4" + resolved "https://registry.yarnpkg.com/param-case/-/param-case-3.0.4.tgz#7d17fe4aa12bde34d4a77d91acfb6219caad01c5" + integrity sha512-RXlj7zCYokReqWpOPH9oYivUzLYZ5vAPIfEmCTNViosC78F8F0H9y7T7gG2M39ymgutxF5gcFEsyZQSph9Bp3A== + dependencies: + dot-case "^3.0.4" + tslib "^2.0.3" + +parent-module@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/parent-module/-/parent-module-1.0.1.tgz#691d2709e78c79fae3a156622452d00762caaaa2" + integrity sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g== + dependencies: + callsites "^3.0.0" + +parse-json@^5.0.0, parse-json@^5.2.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-5.2.0.tgz#c76fc66dee54231c962b22bcc8a72cf2f99753cd" + integrity sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg== + dependencies: + "@babel/code-frame" "^7.0.0" + error-ex "^1.3.1" + json-parse-even-better-errors "^2.3.0" + lines-and-columns "^1.1.6" + +parse5@6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/parse5/-/parse5-6.0.1.tgz#e1a1c085c569b3dc08321184f19a39cc27f7c30b" + integrity sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw== + +parseurl@~1.3.2, parseurl@~1.3.3: + version "1.3.3" + resolved "https://registry.yarnpkg.com/parseurl/-/parseurl-1.3.3.tgz#9da19e7bee8d12dff0513ed5b76957793bc2e8d4" + integrity sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ== + +pascal-case@^3.1.2: + version "3.1.2" + resolved "https://registry.yarnpkg.com/pascal-case/-/pascal-case-3.1.2.tgz#b48e0ef2b98e205e7c1dae747d0b1508237660eb" + integrity sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g== + dependencies: + no-case "^3.0.4" + tslib "^2.0.3" + +path-exists@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-3.0.0.tgz#ce0ebeaa5f78cb18925ea7d810d7b59b010fd515" + integrity sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ== + +path-exists@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-4.0.0.tgz#513bdbe2d3b95d7762e8c1137efa195c6c61b5b3" + integrity sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w== + +path-is-absolute@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" + integrity sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg== + +path-key@^3.0.0, path-key@^3.1.0: + version "3.1.1" + resolved "https://registry.yarnpkg.com/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375" + integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q== + +path-parse@^1.0.7: + version "1.0.7" + resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.7.tgz#fbc114b60ca42b30d9daf5858e4bd68bbedb6735" + integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw== + +path-scurry@^1.10.1: + version "1.10.1" + resolved "https://registry.yarnpkg.com/path-scurry/-/path-scurry-1.10.1.tgz#9ba6bf5aa8500fe9fd67df4f0d9483b2b0bfc698" + integrity sha512-MkhCqzzBEpPvxxQ71Md0b1Kk51W01lrYvlMzSUaIzNsODdd7mqhiimSZlr+VegAz5Z6Vzt9Xg2ttE//XBhH3EQ== + dependencies: + lru-cache "^9.1.1 || ^10.0.0" + minipass "^5.0.0 || ^6.0.2 || ^7.0.0" + +path-to-regexp@0.1.7: + version "0.1.7" + resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-0.1.7.tgz#df604178005f522f15eb4490e7247a1bfaa67f8c" + integrity sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ== + +path-type@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/path-type/-/path-type-4.0.0.tgz#84ed01c0a7ba380afe09d90a8c180dcd9d03043b" + integrity sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw== + +performance-now@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/performance-now/-/performance-now-2.1.0.tgz#6309f4e0e5fa913ec1c69307ae364b4b377c9e7b" + integrity sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow== + +picocolors@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-0.2.1.tgz#570670f793646851d1ba135996962abad587859f" + integrity sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA== + +picocolors@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.0.0.tgz#cb5bdc74ff3f51892236eaf79d68bc44564ab81c" + integrity sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ== + +picomatch@^2.0.4, picomatch@^2.2.1, picomatch@^2.2.2, picomatch@^2.2.3, picomatch@^2.3.1: + version "2.3.1" + resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42" + integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA== + +pify@^2.3.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c" + integrity sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog== + +pirates@^4.0.1, pirates@^4.0.4: + version "4.0.6" + resolved "https://registry.yarnpkg.com/pirates/-/pirates-4.0.6.tgz#3018ae32ecfcff6c29ba2267cbf21166ac1f36b9" + integrity sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg== + +pkg-dir@^4.1.0, pkg-dir@^4.2.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-4.2.0.tgz#f099133df7ede422e81d1d8448270eeb3e4261f3" + integrity sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ== + dependencies: + find-up "^4.0.0" + +pkg-up@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/pkg-up/-/pkg-up-3.1.0.tgz#100ec235cc150e4fd42519412596a28512a0def5" + integrity sha512-nDywThFk1i4BQK4twPQ6TA4RT8bDY96yeuCVBWL3ePARCiEKDRSrNGbFIgUJpLp+XeIR65v8ra7WuJOFUBtkMA== + dependencies: + find-up "^3.0.0" + +postcss-attribute-case-insensitive@^5.0.2: + version "5.0.2" + resolved "https://registry.yarnpkg.com/postcss-attribute-case-insensitive/-/postcss-attribute-case-insensitive-5.0.2.tgz#03d761b24afc04c09e757e92ff53716ae8ea2741" + integrity sha512-XIidXV8fDr0kKt28vqki84fRK8VW8eTuIa4PChv2MqKuT6C9UjmSKzen6KaWhWEoYvwxFCa7n/tC1SZ3tyq4SQ== + dependencies: + postcss-selector-parser "^6.0.10" + +postcss-browser-comments@^4: + version "4.0.0" + resolved "https://registry.yarnpkg.com/postcss-browser-comments/-/postcss-browser-comments-4.0.0.tgz#bcfc86134df5807f5d3c0eefa191d42136b5e72a" + integrity sha512-X9X9/WN3KIvY9+hNERUqX9gncsgBA25XaeR+jshHz2j8+sYyHktHw1JdKuMjeLpGktXidqDhA7b/qm1mrBDmgg== + +postcss-calc@^8.2.3: + version "8.2.4" + resolved "https://registry.yarnpkg.com/postcss-calc/-/postcss-calc-8.2.4.tgz#77b9c29bfcbe8a07ff6693dc87050828889739a5" + integrity sha512-SmWMSJmB8MRnnULldx0lQIyhSNvuDl9HfrZkaqqE/WHAhToYsAvDq+yAsA/kIyINDszOp3Rh0GFoNuH5Ypsm3Q== + dependencies: + postcss-selector-parser "^6.0.9" + postcss-value-parser "^4.2.0" + +postcss-clamp@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/postcss-clamp/-/postcss-clamp-4.1.0.tgz#7263e95abadd8c2ba1bd911b0b5a5c9c93e02363" + integrity sha512-ry4b1Llo/9zz+PKC+030KUnPITTJAHeOwjfAyyB60eT0AorGLdzp52s31OsPRHRf8NchkgFoG2y6fCfn1IV1Ow== + dependencies: + postcss-value-parser "^4.2.0" + +postcss-color-functional-notation@^4.2.4: + version "4.2.4" + resolved "https://registry.yarnpkg.com/postcss-color-functional-notation/-/postcss-color-functional-notation-4.2.4.tgz#21a909e8d7454d3612d1659e471ce4696f28caec" + integrity sha512-2yrTAUZUab9s6CpxkxC4rVgFEVaR6/2Pipvi6qcgvnYiVqZcbDHEoBDhrXzyb7Efh2CCfHQNtcqWcIruDTIUeg== + dependencies: + postcss-value-parser "^4.2.0" + +postcss-color-hex-alpha@^8.0.4: + version "8.0.4" + resolved "https://registry.yarnpkg.com/postcss-color-hex-alpha/-/postcss-color-hex-alpha-8.0.4.tgz#c66e2980f2fbc1a63f5b079663340ce8b55f25a5" + integrity sha512-nLo2DCRC9eE4w2JmuKgVA3fGL3d01kGq752pVALF68qpGLmx2Qrk91QTKkdUqqp45T1K1XV8IhQpcu1hoAQflQ== + dependencies: + postcss-value-parser "^4.2.0" + +postcss-color-rebeccapurple@^7.1.1: + version "7.1.1" + resolved "https://registry.yarnpkg.com/postcss-color-rebeccapurple/-/postcss-color-rebeccapurple-7.1.1.tgz#63fdab91d878ebc4dd4b7c02619a0c3d6a56ced0" + integrity sha512-pGxkuVEInwLHgkNxUc4sdg4g3py7zUeCQ9sMfwyHAT+Ezk8a4OaaVZ8lIY5+oNqA/BXXgLyXv0+5wHP68R79hg== + dependencies: + postcss-value-parser "^4.2.0" + +postcss-colormin@^5.3.1: + version "5.3.1" + resolved "https://registry.yarnpkg.com/postcss-colormin/-/postcss-colormin-5.3.1.tgz#86c27c26ed6ba00d96c79e08f3ffb418d1d1988f" + integrity sha512-UsWQG0AqTFQmpBegeLLc1+c3jIqBNB0zlDGRWR+dQ3pRKJL1oeMzyqmH3o2PIfn9MBdNrVPWhDbT769LxCTLJQ== + dependencies: + browserslist "^4.21.4" + caniuse-api "^3.0.0" + colord "^2.9.1" + postcss-value-parser "^4.2.0" + +postcss-convert-values@^5.1.3: + version "5.1.3" + resolved "https://registry.yarnpkg.com/postcss-convert-values/-/postcss-convert-values-5.1.3.tgz#04998bb9ba6b65aa31035d669a6af342c5f9d393" + integrity sha512-82pC1xkJZtcJEfiLw6UXnXVXScgtBrjlO5CBmuDQc+dlb88ZYheFsjTn40+zBVi3DkfF7iezO0nJUPLcJK3pvA== + dependencies: + browserslist "^4.21.4" + postcss-value-parser "^4.2.0" + +postcss-custom-media@^8.0.2: + version "8.0.2" + resolved "https://registry.yarnpkg.com/postcss-custom-media/-/postcss-custom-media-8.0.2.tgz#c8f9637edf45fef761b014c024cee013f80529ea" + integrity sha512-7yi25vDAoHAkbhAzX9dHx2yc6ntS4jQvejrNcC+csQJAXjj15e7VcWfMgLqBNAbOvqi5uIa9huOVwdHbf+sKqg== + dependencies: + postcss-value-parser "^4.2.0" + +postcss-custom-properties@^12.1.10: + version "12.1.11" + resolved "https://registry.yarnpkg.com/postcss-custom-properties/-/postcss-custom-properties-12.1.11.tgz#d14bb9b3989ac4d40aaa0e110b43be67ac7845cf" + integrity sha512-0IDJYhgU8xDv1KY6+VgUwuQkVtmYzRwu+dMjnmdMafXYv86SWqfxkc7qdDvWS38vsjaEtv8e0vGOUQrAiMBLpQ== + dependencies: + postcss-value-parser "^4.2.0" + +postcss-custom-selectors@^6.0.3: + version "6.0.3" + resolved "https://registry.yarnpkg.com/postcss-custom-selectors/-/postcss-custom-selectors-6.0.3.tgz#1ab4684d65f30fed175520f82d223db0337239d9" + integrity sha512-fgVkmyiWDwmD3JbpCmB45SvvlCD6z9CG6Ie6Iere22W5aHea6oWa7EM2bpnv2Fj3I94L3VbtvX9KqwSi5aFzSg== + dependencies: + postcss-selector-parser "^6.0.4" + +postcss-dir-pseudo-class@^6.0.5: + version "6.0.5" + resolved "https://registry.yarnpkg.com/postcss-dir-pseudo-class/-/postcss-dir-pseudo-class-6.0.5.tgz#2bf31de5de76added44e0a25ecf60ae9f7c7c26c" + integrity sha512-eqn4m70P031PF7ZQIvSgy9RSJ5uI2171O/OO/zcRNYpJbvaeKFUlar1aJ7rmgiQtbm0FSPsRewjpdS0Oew7MPA== + dependencies: + postcss-selector-parser "^6.0.10" + +postcss-discard-comments@^5.1.2: + version "5.1.2" + resolved "https://registry.yarnpkg.com/postcss-discard-comments/-/postcss-discard-comments-5.1.2.tgz#8df5e81d2925af2780075840c1526f0660e53696" + integrity sha512-+L8208OVbHVF2UQf1iDmRcbdjJkuBF6IS29yBDSiWUIzpYaAhtNl6JYnYm12FnkeCwQqF5LeklOu6rAqgfBZqQ== + +postcss-discard-duplicates@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/postcss-discard-duplicates/-/postcss-discard-duplicates-5.1.0.tgz#9eb4fe8456706a4eebd6d3b7b777d07bad03e848" + integrity sha512-zmX3IoSI2aoenxHV6C7plngHWWhUOV3sP1T8y2ifzxzbtnuhk1EdPwm0S1bIUNaJ2eNbWeGLEwzw8huPD67aQw== + +postcss-discard-empty@^5.1.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/postcss-discard-empty/-/postcss-discard-empty-5.1.1.tgz#e57762343ff7f503fe53fca553d18d7f0c369c6c" + integrity sha512-zPz4WljiSuLWsI0ir4Mcnr4qQQ5e1Ukc3i7UfE2XcrwKK2LIPIqE5jxMRxO6GbI3cv//ztXDsXwEWT3BHOGh3A== + +postcss-discard-overridden@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/postcss-discard-overridden/-/postcss-discard-overridden-5.1.0.tgz#7e8c5b53325747e9d90131bb88635282fb4a276e" + integrity sha512-21nOL7RqWR1kasIVdKs8HNqQJhFxLsyRfAnUDm4Fe4t4mCWL9OJiHvlHPjcd8zc5Myu89b/7wZDnOSjFgeWRtw== + +postcss-double-position-gradients@^3.1.2: + version "3.1.2" + resolved "https://registry.yarnpkg.com/postcss-double-position-gradients/-/postcss-double-position-gradients-3.1.2.tgz#b96318fdb477be95997e86edd29c6e3557a49b91" + integrity sha512-GX+FuE/uBR6eskOK+4vkXgT6pDkexLokPaz/AbJna9s5Kzp/yl488pKPjhy0obB475ovfT1Wv8ho7U/cHNaRgQ== + dependencies: + "@csstools/postcss-progressive-custom-properties" "^1.1.0" + postcss-value-parser "^4.2.0" + +postcss-env-function@^4.0.6: + version "4.0.6" + resolved "https://registry.yarnpkg.com/postcss-env-function/-/postcss-env-function-4.0.6.tgz#7b2d24c812f540ed6eda4c81f6090416722a8e7a" + integrity sha512-kpA6FsLra+NqcFnL81TnsU+Z7orGtDTxcOhl6pwXeEq1yFPpRMkCDpHhrz8CFQDr/Wfm0jLiNQ1OsGGPjlqPwA== + dependencies: + postcss-value-parser "^4.2.0" + +postcss-flexbugs-fixes@^5.0.2: + version "5.0.2" + resolved "https://registry.yarnpkg.com/postcss-flexbugs-fixes/-/postcss-flexbugs-fixes-5.0.2.tgz#2028e145313074fc9abe276cb7ca14e5401eb49d" + integrity sha512-18f9voByak7bTktR2QgDveglpn9DTbBWPUzSOe9g0N4WR/2eSt6Vrcbf0hmspvMI6YWGywz6B9f7jzpFNJJgnQ== + +postcss-focus-visible@^6.0.4: + version "6.0.4" + resolved "https://registry.yarnpkg.com/postcss-focus-visible/-/postcss-focus-visible-6.0.4.tgz#50c9ea9afa0ee657fb75635fabad25e18d76bf9e" + integrity sha512-QcKuUU/dgNsstIK6HELFRT5Y3lbrMLEOwG+A4s5cA+fx3A3y/JTq3X9LaOj3OC3ALH0XqyrgQIgey/MIZ8Wczw== + dependencies: + postcss-selector-parser "^6.0.9" + +postcss-focus-within@^5.0.4: + version "5.0.4" + resolved "https://registry.yarnpkg.com/postcss-focus-within/-/postcss-focus-within-5.0.4.tgz#5b1d2ec603195f3344b716c0b75f61e44e8d2e20" + integrity sha512-vvjDN++C0mu8jz4af5d52CB184ogg/sSxAFS+oUJQq2SuCe7T5U2iIsVJtsCp2d6R4j0jr5+q3rPkBVZkXD9fQ== + dependencies: + postcss-selector-parser "^6.0.9" + +postcss-font-variant@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/postcss-font-variant/-/postcss-font-variant-5.0.0.tgz#efd59b4b7ea8bb06127f2d031bfbb7f24d32fa66" + integrity sha512-1fmkBaCALD72CK2a9i468mA/+tr9/1cBxRRMXOUaZqO43oWPR5imcyPjXwuv7PXbCid4ndlP5zWhidQVVa3hmA== + +postcss-gap-properties@^3.0.5: + version "3.0.5" + resolved "https://registry.yarnpkg.com/postcss-gap-properties/-/postcss-gap-properties-3.0.5.tgz#f7e3cddcf73ee19e94ccf7cb77773f9560aa2fff" + integrity sha512-IuE6gKSdoUNcvkGIqdtjtcMtZIFyXZhmFd5RUlg97iVEvp1BZKV5ngsAjCjrVy+14uhGBQl9tzmi1Qwq4kqVOg== + +postcss-image-set-function@^4.0.7: + version "4.0.7" + resolved "https://registry.yarnpkg.com/postcss-image-set-function/-/postcss-image-set-function-4.0.7.tgz#08353bd756f1cbfb3b6e93182c7829879114481f" + integrity sha512-9T2r9rsvYzm5ndsBE8WgtrMlIT7VbtTfE7b3BQnudUqnBcBo7L758oc+o+pdj/dUV0l5wjwSdjeOH2DZtfv8qw== + dependencies: + postcss-value-parser "^4.2.0" + +postcss-import@^15.1.0: + version "15.1.0" + resolved "https://registry.yarnpkg.com/postcss-import/-/postcss-import-15.1.0.tgz#41c64ed8cc0e23735a9698b3249ffdbf704adc70" + integrity sha512-hpr+J05B2FVYUAXHeK1YyI267J/dDDhMU6B6civm8hSY1jYJnBXxzKDKDswzJmtLHryrjhnDjqqp/49t8FALew== + dependencies: + postcss-value-parser "^4.0.0" + read-cache "^1.0.0" + resolve "^1.1.7" + +postcss-initial@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/postcss-initial/-/postcss-initial-4.0.1.tgz#529f735f72c5724a0fb30527df6fb7ac54d7de42" + integrity sha512-0ueD7rPqX8Pn1xJIjay0AZeIuDoF+V+VvMt/uOnn+4ezUKhZM/NokDeP6DwMNyIoYByuN/94IQnt5FEkaN59xQ== + +postcss-js@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/postcss-js/-/postcss-js-4.0.1.tgz#61598186f3703bab052f1c4f7d805f3991bee9d2" + integrity sha512-dDLF8pEO191hJMtlHFPRa8xsizHaM82MLfNkUHdUtVEV3tgTp5oj+8qbEqYM57SLfc74KSbw//4SeJma2LRVIw== + dependencies: + camelcase-css "^2.0.1" + +postcss-lab-function@^4.2.1: + version "4.2.1" + resolved "https://registry.yarnpkg.com/postcss-lab-function/-/postcss-lab-function-4.2.1.tgz#6fe4c015102ff7cd27d1bd5385582f67ebdbdc98" + integrity sha512-xuXll4isR03CrQsmxyz92LJB2xX9n+pZJ5jE9JgcnmsCammLyKdlzrBin+25dy6wIjfhJpKBAN80gsTlCgRk2w== + dependencies: + "@csstools/postcss-progressive-custom-properties" "^1.1.0" + postcss-value-parser "^4.2.0" + +postcss-load-config@^4.0.1: + version "4.0.2" + resolved "https://registry.yarnpkg.com/postcss-load-config/-/postcss-load-config-4.0.2.tgz#7159dcf626118d33e299f485d6afe4aff7c4a3e3" + integrity sha512-bSVhyJGL00wMVoPUzAVAnbEoWyqRxkjv64tUl427SKnPrENtq6hJwUojroMz2VB+Q1edmi4IfrAPpami5VVgMQ== + dependencies: + lilconfig "^3.0.0" + yaml "^2.3.4" + +postcss-loader@^6.2.1: + version "6.2.1" + resolved "https://registry.yarnpkg.com/postcss-loader/-/postcss-loader-6.2.1.tgz#0895f7346b1702103d30fdc66e4d494a93c008ef" + integrity sha512-WbbYpmAaKcux/P66bZ40bpWsBucjx/TTgVVzRZ9yUO8yQfVBlameJ0ZGVaPfH64hNSBh63a+ICP5nqOpBA0w+Q== + dependencies: + cosmiconfig "^7.0.0" + klona "^2.0.5" + semver "^7.3.5" + +postcss-logical@^5.0.4: + version "5.0.4" + resolved "https://registry.yarnpkg.com/postcss-logical/-/postcss-logical-5.0.4.tgz#ec75b1ee54421acc04d5921576b7d8db6b0e6f73" + integrity sha512-RHXxplCeLh9VjinvMrZONq7im4wjWGlRJAqmAVLXyZaXwfDWP73/oq4NdIp+OZwhQUMj0zjqDfM5Fj7qby+B4g== + +postcss-media-minmax@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/postcss-media-minmax/-/postcss-media-minmax-5.0.0.tgz#7140bddec173e2d6d657edbd8554a55794e2a5b5" + integrity sha512-yDUvFf9QdFZTuCUg0g0uNSHVlJ5X1lSzDZjPSFaiCWvjgsvu8vEVxtahPrLMinIDEEGnx6cBe6iqdx5YWz08wQ== + +postcss-merge-longhand@^5.1.7: + version "5.1.7" + resolved "https://registry.yarnpkg.com/postcss-merge-longhand/-/postcss-merge-longhand-5.1.7.tgz#24a1bdf402d9ef0e70f568f39bdc0344d568fb16" + integrity sha512-YCI9gZB+PLNskrK0BB3/2OzPnGhPkBEwmwhfYk1ilBHYVAZB7/tkTHFBAnCrvBBOmeYyMYw3DMjT55SyxMBzjQ== + dependencies: + postcss-value-parser "^4.2.0" + stylehacks "^5.1.1" + +postcss-merge-rules@^5.1.4: + version "5.1.4" + resolved "https://registry.yarnpkg.com/postcss-merge-rules/-/postcss-merge-rules-5.1.4.tgz#2f26fa5cacb75b1402e213789f6766ae5e40313c" + integrity sha512-0R2IuYpgU93y9lhVbO/OylTtKMVcHb67zjWIfCiKR9rWL3GUk1677LAqD/BcHizukdZEjT8Ru3oHRoAYoJy44g== + dependencies: + browserslist "^4.21.4" + caniuse-api "^3.0.0" + cssnano-utils "^3.1.0" + postcss-selector-parser "^6.0.5" + +postcss-minify-font-values@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/postcss-minify-font-values/-/postcss-minify-font-values-5.1.0.tgz#f1df0014a726083d260d3bd85d7385fb89d1f01b" + integrity sha512-el3mYTgx13ZAPPirSVsHqFzl+BBBDrXvbySvPGFnQcTI4iNslrPaFq4muTkLZmKlGk4gyFAYUBMH30+HurREyA== + dependencies: + postcss-value-parser "^4.2.0" + +postcss-minify-gradients@^5.1.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/postcss-minify-gradients/-/postcss-minify-gradients-5.1.1.tgz#f1fe1b4f498134a5068240c2f25d46fcd236ba2c" + integrity sha512-VGvXMTpCEo4qHTNSa9A0a3D+dxGFZCYwR6Jokk+/3oB6flu2/PnPXAh2x7x52EkY5xlIHLm+Le8tJxe/7TNhzw== + dependencies: + colord "^2.9.1" + cssnano-utils "^3.1.0" + postcss-value-parser "^4.2.0" + +postcss-minify-params@^5.1.4: + version "5.1.4" + resolved "https://registry.yarnpkg.com/postcss-minify-params/-/postcss-minify-params-5.1.4.tgz#c06a6c787128b3208b38c9364cfc40c8aa5d7352" + integrity sha512-+mePA3MgdmVmv6g+30rn57USjOGSAyuxUmkfiWpzalZ8aiBkdPYjXWtHuwJGm1v5Ojy0Z0LaSYhHaLJQB0P8Jw== + dependencies: + browserslist "^4.21.4" + cssnano-utils "^3.1.0" + postcss-value-parser "^4.2.0" + +postcss-minify-selectors@^5.2.1: + version "5.2.1" + resolved "https://registry.yarnpkg.com/postcss-minify-selectors/-/postcss-minify-selectors-5.2.1.tgz#d4e7e6b46147b8117ea9325a915a801d5fe656c6" + integrity sha512-nPJu7OjZJTsVUmPdm2TcaiohIwxP+v8ha9NehQ2ye9szv4orirRU3SDdtUmKH+10nzn0bAyOXZ0UEr7OpvLehg== + dependencies: + postcss-selector-parser "^6.0.5" + +postcss-modules-extract-imports@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/postcss-modules-extract-imports/-/postcss-modules-extract-imports-3.0.0.tgz#cda1f047c0ae80c97dbe28c3e76a43b88025741d" + integrity sha512-bdHleFnP3kZ4NYDhuGlVK+CMrQ/pqUm8bx/oGL93K6gVwiclvX5x0n76fYMKuIGKzlABOy13zsvqjb0f92TEXw== + +postcss-modules-local-by-default@^4.0.4: + version "4.0.4" + resolved "https://registry.yarnpkg.com/postcss-modules-local-by-default/-/postcss-modules-local-by-default-4.0.4.tgz#7cbed92abd312b94aaea85b68226d3dec39a14e6" + integrity sha512-L4QzMnOdVwRm1Qb8m4x8jsZzKAaPAgrUF1r/hjDR2Xj7R+8Zsf97jAlSQzWtKx5YNiNGN8QxmPFIc/sh+RQl+Q== + dependencies: + icss-utils "^5.0.0" + postcss-selector-parser "^6.0.2" + postcss-value-parser "^4.1.0" + +postcss-modules-scope@^3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/postcss-modules-scope/-/postcss-modules-scope-3.1.1.tgz#32cfab55e84887c079a19bbb215e721d683ef134" + integrity sha512-uZgqzdTleelWjzJY+Fhti6F3C9iF1JR/dODLs/JDefozYcKTBCdD8BIl6nNPbTbcLnGrk56hzwZC2DaGNvYjzA== + dependencies: + postcss-selector-parser "^6.0.4" + +postcss-modules-values@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/postcss-modules-values/-/postcss-modules-values-4.0.0.tgz#d7c5e7e68c3bb3c9b27cbf48ca0bb3ffb4602c9c" + integrity sha512-RDxHkAiEGI78gS2ofyvCsu7iycRv7oqw5xMWn9iMoR0N/7mf9D50ecQqUo5BZ9Zh2vH4bCUR/ktCqbB9m8vJjQ== + dependencies: + icss-utils "^5.0.0" + +postcss-nested@^6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/postcss-nested/-/postcss-nested-6.0.1.tgz#f83dc9846ca16d2f4fa864f16e9d9f7d0961662c" + integrity sha512-mEp4xPMi5bSWiMbsgoPfcP74lsWLHkQbZc3sY+jWYd65CUwXrUaTp0fmNpa01ZcETKlIgUdFN/MpS2xZtqL9dQ== + dependencies: + postcss-selector-parser "^6.0.11" + +postcss-nesting@^10.2.0: + version "10.2.0" + resolved "https://registry.yarnpkg.com/postcss-nesting/-/postcss-nesting-10.2.0.tgz#0b12ce0db8edfd2d8ae0aaf86427370b898890be" + integrity sha512-EwMkYchxiDiKUhlJGzWsD9b2zvq/r2SSubcRrgP+jujMXFzqvANLt16lJANC+5uZ6hjI7lpRmI6O8JIl+8l1KA== + dependencies: + "@csstools/selector-specificity" "^2.0.0" + postcss-selector-parser "^6.0.10" + +postcss-normalize-charset@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/postcss-normalize-charset/-/postcss-normalize-charset-5.1.0.tgz#9302de0b29094b52c259e9b2cf8dc0879879f0ed" + integrity sha512-mSgUJ+pd/ldRGVx26p2wz9dNZ7ji6Pn8VWBajMXFf8jk7vUoSrZ2lt/wZR7DtlZYKesmZI680qjr2CeFF2fbUg== + +postcss-normalize-display-values@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/postcss-normalize-display-values/-/postcss-normalize-display-values-5.1.0.tgz#72abbae58081960e9edd7200fcf21ab8325c3da8" + integrity sha512-WP4KIM4o2dazQXWmFaqMmcvsKmhdINFblgSeRgn8BJ6vxaMyaJkwAzpPpuvSIoG/rmX3M+IrRZEz2H0glrQNEA== + dependencies: + postcss-value-parser "^4.2.0" + +postcss-normalize-positions@^5.1.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/postcss-normalize-positions/-/postcss-normalize-positions-5.1.1.tgz#ef97279d894087b59325b45c47f1e863daefbb92" + integrity sha512-6UpCb0G4eofTCQLFVuI3EVNZzBNPiIKcA1AKVka+31fTVySphr3VUgAIULBhxZkKgwLImhzMR2Bw1ORK+37INg== + dependencies: + postcss-value-parser "^4.2.0" + +postcss-normalize-repeat-style@^5.1.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/postcss-normalize-repeat-style/-/postcss-normalize-repeat-style-5.1.1.tgz#e9eb96805204f4766df66fd09ed2e13545420fb2" + integrity sha512-mFpLspGWkQtBcWIRFLmewo8aC3ImN2i/J3v8YCFUwDnPu3Xz4rLohDO26lGjwNsQxB3YF0KKRwspGzE2JEuS0g== + dependencies: + postcss-value-parser "^4.2.0" + +postcss-normalize-string@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/postcss-normalize-string/-/postcss-normalize-string-5.1.0.tgz#411961169e07308c82c1f8c55f3e8a337757e228" + integrity sha512-oYiIJOf4T9T1N4i+abeIc7Vgm/xPCGih4bZz5Nm0/ARVJ7K6xrDlLwvwqOydvyL3RHNf8qZk6vo3aatiw/go3w== + dependencies: + postcss-value-parser "^4.2.0" + +postcss-normalize-timing-functions@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/postcss-normalize-timing-functions/-/postcss-normalize-timing-functions-5.1.0.tgz#d5614410f8f0b2388e9f240aa6011ba6f52dafbb" + integrity sha512-DOEkzJ4SAXv5xkHl0Wa9cZLF3WCBhF3o1SKVxKQAa+0pYKlueTpCgvkFAHfk+Y64ezX9+nITGrDZeVGgITJXjg== + dependencies: + postcss-value-parser "^4.2.0" + +postcss-normalize-unicode@^5.1.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/postcss-normalize-unicode/-/postcss-normalize-unicode-5.1.1.tgz#f67297fca3fea7f17e0d2caa40769afc487aa030" + integrity sha512-qnCL5jzkNUmKVhZoENp1mJiGNPcsJCs1aaRmURmeJGES23Z/ajaln+EPTD+rBeNkSryI+2WTdW+lwcVdOikrpA== + dependencies: + browserslist "^4.21.4" + postcss-value-parser "^4.2.0" + +postcss-normalize-url@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/postcss-normalize-url/-/postcss-normalize-url-5.1.0.tgz#ed9d88ca82e21abef99f743457d3729a042adcdc" + integrity sha512-5upGeDO+PVthOxSmds43ZeMeZfKH+/DKgGRD7TElkkyS46JXAUhMzIKiCa7BabPeIy3AQcTkXwVVN7DbqsiCew== + dependencies: + normalize-url "^6.0.1" + postcss-value-parser "^4.2.0" + +postcss-normalize-whitespace@^5.1.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/postcss-normalize-whitespace/-/postcss-normalize-whitespace-5.1.1.tgz#08a1a0d1ffa17a7cc6efe1e6c9da969cc4493cfa" + integrity sha512-83ZJ4t3NUDETIHTa3uEg6asWjSBYL5EdkVB0sDncx9ERzOKBVJIUeDO9RyA9Zwtig8El1d79HBp0JEi8wvGQnA== + dependencies: + postcss-value-parser "^4.2.0" + +postcss-normalize@^10.0.1: + version "10.0.1" + resolved "https://registry.yarnpkg.com/postcss-normalize/-/postcss-normalize-10.0.1.tgz#464692676b52792a06b06880a176279216540dd7" + integrity sha512-+5w18/rDev5mqERcG3W5GZNMJa1eoYYNGo8gB7tEwaos0ajk3ZXAI4mHGcNT47NE+ZnZD1pEpUOFLvltIwmeJA== + dependencies: + "@csstools/normalize.css" "*" + postcss-browser-comments "^4" + sanitize.css "*" + +postcss-opacity-percentage@^1.1.2: + version "1.1.3" + resolved "https://registry.yarnpkg.com/postcss-opacity-percentage/-/postcss-opacity-percentage-1.1.3.tgz#5b89b35551a556e20c5d23eb5260fbfcf5245da6" + integrity sha512-An6Ba4pHBiDtyVpSLymUUERMo2cU7s+Obz6BTrS+gxkbnSBNKSuD0AVUc+CpBMrpVPKKfoVz0WQCX+Tnst0i4A== + +postcss-ordered-values@^5.1.3: + version "5.1.3" + resolved "https://registry.yarnpkg.com/postcss-ordered-values/-/postcss-ordered-values-5.1.3.tgz#b6fd2bd10f937b23d86bc829c69e7732ce76ea38" + integrity sha512-9UO79VUhPwEkzbb3RNpqqghc6lcYej1aveQteWY+4POIwlqkYE21HKWaLDF6lWNuqCobEAyTovVhtI32Rbv2RQ== + dependencies: + cssnano-utils "^3.1.0" + postcss-value-parser "^4.2.0" + +postcss-overflow-shorthand@^3.0.4: + version "3.0.4" + resolved "https://registry.yarnpkg.com/postcss-overflow-shorthand/-/postcss-overflow-shorthand-3.0.4.tgz#7ed6486fec44b76f0eab15aa4866cda5d55d893e" + integrity sha512-otYl/ylHK8Y9bcBnPLo3foYFLL6a6Ak+3EQBPOTR7luMYCOsiVTUk1iLvNf6tVPNGXcoL9Hoz37kpfriRIFb4A== + dependencies: + postcss-value-parser "^4.2.0" + +postcss-page-break@^3.0.4: + version "3.0.4" + resolved "https://registry.yarnpkg.com/postcss-page-break/-/postcss-page-break-3.0.4.tgz#7fbf741c233621622b68d435babfb70dd8c1ee5f" + integrity sha512-1JGu8oCjVXLa9q9rFTo4MbeeA5FMe00/9C7lN4va606Rdb+HkxXtXsmEDrIraQ11fGz/WvKWa8gMuCKkrXpTsQ== + +postcss-place@^7.0.5: + version "7.0.5" + resolved "https://registry.yarnpkg.com/postcss-place/-/postcss-place-7.0.5.tgz#95dbf85fd9656a3a6e60e832b5809914236986c4" + integrity sha512-wR8igaZROA6Z4pv0d+bvVrvGY4GVHihBCBQieXFY3kuSuMyOmEnnfFzHl/tQuqHZkfkIVBEbDvYcFfHmpSet9g== + dependencies: + postcss-value-parser "^4.2.0" + +postcss-preset-env@^7.0.1: + version "7.8.3" + resolved "https://registry.yarnpkg.com/postcss-preset-env/-/postcss-preset-env-7.8.3.tgz#2a50f5e612c3149cc7af75634e202a5b2ad4f1e2" + integrity sha512-T1LgRm5uEVFSEF83vHZJV2z19lHg4yJuZ6gXZZkqVsqv63nlr6zabMH3l4Pc01FQCyfWVrh2GaUeCVy9Po+Aag== + dependencies: + "@csstools/postcss-cascade-layers" "^1.1.1" + "@csstools/postcss-color-function" "^1.1.1" + "@csstools/postcss-font-format-keywords" "^1.0.1" + "@csstools/postcss-hwb-function" "^1.0.2" + "@csstools/postcss-ic-unit" "^1.0.1" + "@csstools/postcss-is-pseudo-class" "^2.0.7" + "@csstools/postcss-nested-calc" "^1.0.0" + "@csstools/postcss-normalize-display-values" "^1.0.1" + "@csstools/postcss-oklab-function" "^1.1.1" + "@csstools/postcss-progressive-custom-properties" "^1.3.0" + "@csstools/postcss-stepped-value-functions" "^1.0.1" + "@csstools/postcss-text-decoration-shorthand" "^1.0.0" + "@csstools/postcss-trigonometric-functions" "^1.0.2" + "@csstools/postcss-unset-value" "^1.0.2" + autoprefixer "^10.4.13" + browserslist "^4.21.4" + css-blank-pseudo "^3.0.3" + css-has-pseudo "^3.0.4" + css-prefers-color-scheme "^6.0.3" + cssdb "^7.1.0" + postcss-attribute-case-insensitive "^5.0.2" + postcss-clamp "^4.1.0" + postcss-color-functional-notation "^4.2.4" + postcss-color-hex-alpha "^8.0.4" + postcss-color-rebeccapurple "^7.1.1" + postcss-custom-media "^8.0.2" + postcss-custom-properties "^12.1.10" + postcss-custom-selectors "^6.0.3" + postcss-dir-pseudo-class "^6.0.5" + postcss-double-position-gradients "^3.1.2" + postcss-env-function "^4.0.6" + postcss-focus-visible "^6.0.4" + postcss-focus-within "^5.0.4" + postcss-font-variant "^5.0.0" + postcss-gap-properties "^3.0.5" + postcss-image-set-function "^4.0.7" + postcss-initial "^4.0.1" + postcss-lab-function "^4.2.1" + postcss-logical "^5.0.4" + postcss-media-minmax "^5.0.0" + postcss-nesting "^10.2.0" + postcss-opacity-percentage "^1.1.2" + postcss-overflow-shorthand "^3.0.4" + postcss-page-break "^3.0.4" + postcss-place "^7.0.5" + postcss-pseudo-class-any-link "^7.1.6" + postcss-replace-overflow-wrap "^4.0.0" + postcss-selector-not "^6.0.1" + postcss-value-parser "^4.2.0" + +postcss-pseudo-class-any-link@^7.1.6: + version "7.1.6" + resolved "https://registry.yarnpkg.com/postcss-pseudo-class-any-link/-/postcss-pseudo-class-any-link-7.1.6.tgz#2693b221902da772c278def85a4d9a64b6e617ab" + integrity sha512-9sCtZkO6f/5ML9WcTLcIyV1yz9D1rf0tWc+ulKcvV30s0iZKS/ONyETvoWsr6vnrmW+X+KmuK3gV/w5EWnT37w== + dependencies: + postcss-selector-parser "^6.0.10" + +postcss-reduce-initial@^5.1.2: + version "5.1.2" + resolved "https://registry.yarnpkg.com/postcss-reduce-initial/-/postcss-reduce-initial-5.1.2.tgz#798cd77b3e033eae7105c18c9d371d989e1382d6" + integrity sha512-dE/y2XRaqAi6OvjzD22pjTUQ8eOfc6m/natGHgKFBK9DxFmIm69YmaRVQrGgFlEfc1HePIurY0TmDeROK05rIg== + dependencies: + browserslist "^4.21.4" + caniuse-api "^3.0.0" + +postcss-reduce-transforms@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/postcss-reduce-transforms/-/postcss-reduce-transforms-5.1.0.tgz#333b70e7758b802f3dd0ddfe98bb1ccfef96b6e9" + integrity sha512-2fbdbmgir5AvpW9RLtdONx1QoYG2/EtqpNQbFASDlixBbAYuTcJ0dECwlqNqH7VbaUnEnh8SrxOe2sRIn24XyQ== + dependencies: + postcss-value-parser "^4.2.0" + +postcss-replace-overflow-wrap@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/postcss-replace-overflow-wrap/-/postcss-replace-overflow-wrap-4.0.0.tgz#d2df6bed10b477bf9c52fab28c568b4b29ca4319" + integrity sha512-KmF7SBPphT4gPPcKZc7aDkweHiKEEO8cla/GjcBK+ckKxiZslIu3C4GCRW3DNfL0o7yW7kMQu9xlZ1kXRXLXtw== + +postcss-selector-not@^6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/postcss-selector-not/-/postcss-selector-not-6.0.1.tgz#8f0a709bf7d4b45222793fc34409be407537556d" + integrity sha512-1i9affjAe9xu/y9uqWH+tD4r6/hDaXJruk8xn2x1vzxC2U3J3LKO3zJW4CyxlNhA56pADJ/djpEwpH1RClI2rQ== + dependencies: + postcss-selector-parser "^6.0.10" + +postcss-selector-parser@^6.0.10, postcss-selector-parser@^6.0.11, postcss-selector-parser@^6.0.2, postcss-selector-parser@^6.0.4, postcss-selector-parser@^6.0.5, postcss-selector-parser@^6.0.9: + version "6.0.15" + resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-6.0.15.tgz#11cc2b21eebc0b99ea374ffb9887174855a01535" + integrity sha512-rEYkQOMUCEMhsKbK66tbEU9QVIxbhN18YiniAwA7XQYTVBqrBy+P2p5JcdqsHgKM2zWylp8d7J6eszocfds5Sw== + dependencies: + cssesc "^3.0.0" + util-deprecate "^1.0.2" + +postcss-svgo@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/postcss-svgo/-/postcss-svgo-5.1.0.tgz#0a317400ced789f233a28826e77523f15857d80d" + integrity sha512-D75KsH1zm5ZrHyxPakAxJWtkyXew5qwS70v56exwvw542d9CRtTo78K0WeFxZB4G7JXKKMbEZtZayTGdIky/eA== + dependencies: + postcss-value-parser "^4.2.0" + svgo "^2.7.0" + +postcss-unique-selectors@^5.1.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/postcss-unique-selectors/-/postcss-unique-selectors-5.1.1.tgz#a9f273d1eacd09e9aa6088f4b0507b18b1b541b6" + integrity sha512-5JiODlELrz8L2HwxfPnhOWZYWDxVHWL83ufOv84NrcgipI7TaeRsatAhK4Tr2/ZiYldpK/wBvw5BD3qfaK96GA== + dependencies: + postcss-selector-parser "^6.0.5" + +postcss-value-parser@^4.0.0, postcss-value-parser@^4.1.0, postcss-value-parser@^4.2.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz#723c09920836ba6d3e5af019f92bc0971c02e514" + integrity sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ== + +postcss@^7.0.35: + version "7.0.39" + resolved "https://registry.yarnpkg.com/postcss/-/postcss-7.0.39.tgz#9624375d965630e2e1f2c02a935c82a59cb48309" + integrity sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA== + dependencies: + picocolors "^0.2.1" + source-map "^0.6.1" + +postcss@^8.3.5, postcss@^8.4.23, postcss@^8.4.32, postcss@^8.4.33, postcss@^8.4.4: + version "8.4.33" + resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.33.tgz#1378e859c9f69bf6f638b990a0212f43e2aaa742" + integrity sha512-Kkpbhhdjw2qQs2O2DGX+8m5OVqEcbB9HRBvuYM9pgrjEFUg30A9LmXNlTAUj4S9kgtGyrMbTzVjH7E+s5Re2yg== + dependencies: + nanoid "^3.3.7" + picocolors "^1.0.0" + source-map-js "^1.0.2" + +prelude-ls@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.2.1.tgz#debc6489d7a6e6b0e7611888cec880337d316396" + integrity sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g== + +prelude-ls@~1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.1.2.tgz#21932a549f5e52ffd9a827f570e04be62a97da54" + integrity sha512-ESF23V4SKG6lVSGZgYNpbsiaAkdab6ZgOxe52p7+Kid3W3u3bxR4Vfd/o21dmN7jSt0IwgZ4v5MUd26FEtXE9w== + +prettier@^3.2.4: + version "3.2.4" + resolved "https://registry.yarnpkg.com/prettier/-/prettier-3.2.4.tgz#4723cadeac2ce7c9227de758e5ff9b14e075f283" + integrity sha512-FWu1oLHKCrtpO1ypU6J0SbK2d9Ckwysq6bHj/uaCP26DxrPpppCLQRGVuqAxSTvhF00AcvDRyYrLNW7ocBhFFQ== + +pretty-bytes@^5.3.0, pretty-bytes@^5.4.1: + version "5.6.0" + resolved "https://registry.yarnpkg.com/pretty-bytes/-/pretty-bytes-5.6.0.tgz#356256f643804773c82f64723fe78c92c62beaeb" + integrity sha512-FFw039TmrBqFK8ma/7OL3sDz/VytdtJr044/QUJtH0wK9lb9jLq9tJyIxUwtQJHwar2BqtiA4iCWSwo9JLkzFg== + +pretty-error@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/pretty-error/-/pretty-error-4.0.0.tgz#90a703f46dd7234adb46d0f84823e9d1cb8f10d6" + integrity sha512-AoJ5YMAcXKYxKhuJGdcvse+Voc6v1RgnsR3nWcYU7q4t6z0Q6T86sv5Zq8VIRbOWWFpvdGE83LtdSMNd+6Y0xw== + dependencies: + lodash "^4.17.20" + renderkid "^3.0.0" + +pretty-format@^27.0.2, pretty-format@^27.5.1: + version "27.5.1" + resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-27.5.1.tgz#2181879fdea51a7a5851fb39d920faa63f01d88e" + integrity sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ== + dependencies: + ansi-regex "^5.0.1" + ansi-styles "^5.0.0" + react-is "^17.0.1" + +pretty-format@^28.1.3: + version "28.1.3" + resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-28.1.3.tgz#c9fba8cedf99ce50963a11b27d982a9ae90970d5" + integrity sha512-8gFb/To0OmxHR9+ZTb14Df2vNxdGCX8g1xWGUTqUw5TiZvcQf5sHKObd5UcPyLLyowNwDAMTF3XWOG1B6mxl1Q== + dependencies: + "@jest/schemas" "^28.1.3" + ansi-regex "^5.0.1" + ansi-styles "^5.0.0" + react-is "^18.0.0" + +pretty-format@^29.0.0, pretty-format@^29.7.0: + version "29.7.0" + resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-29.7.0.tgz#ca42c758310f365bfa71a0bda0a807160b776812" + integrity sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ== + dependencies: + "@jest/schemas" "^29.6.3" + ansi-styles "^5.0.0" + react-is "^18.0.0" + +process-nextick-args@~2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz#7820d9b16120cc55ca9ae7792680ae7dba6d7fe2" + integrity sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag== + +promise@^8.1.0: + version "8.3.0" + resolved "https://registry.yarnpkg.com/promise/-/promise-8.3.0.tgz#8cb333d1edeb61ef23869fbb8a4ea0279ab60e0a" + integrity sha512-rZPNPKTOYVNEEKFaq1HqTgOwZD+4/YHS5ukLzQCypkj+OkYx7iv0mA91lJlpPPZ8vMau3IIGj5Qlwrx+8iiSmg== + dependencies: + asap "~2.0.6" + +prompts@^2.0.1, prompts@^2.4.2: + version "2.4.2" + resolved "https://registry.yarnpkg.com/prompts/-/prompts-2.4.2.tgz#7b57e73b3a48029ad10ebd44f74b01722a4cb069" + integrity sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q== + dependencies: + kleur "^3.0.3" + sisteransi "^1.0.5" + +prop-types@^15.6.2, prop-types@^15.8.1: + version "15.8.1" + resolved "https://registry.yarnpkg.com/prop-types/-/prop-types-15.8.1.tgz#67d87bf1a694f48435cf332c24af10214a3140b5" + integrity sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg== + dependencies: + loose-envify "^1.4.0" + object-assign "^4.1.1" + react-is "^16.13.1" + +proxy-addr@~2.0.7: + version "2.0.7" + resolved "https://registry.yarnpkg.com/proxy-addr/-/proxy-addr-2.0.7.tgz#f19fe69ceab311eeb94b42e70e8c2070f9ba1025" + integrity sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg== + dependencies: + forwarded "0.2.0" + ipaddr.js "1.9.1" + +pseudomap@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/pseudomap/-/pseudomap-1.0.2.tgz#f052a28da70e618917ef0a8ac34c1ae5a68286b3" + integrity sha512-b/YwNhb8lk1Zz2+bXXpS/LK9OisiZZ1SNsSLxN1x2OXVEhW2Ckr/7mWE5vrC1ZTiJlD9g19jWszTmJsB+oEpFQ== + +psl@^1.1.33: + version "1.9.0" + resolved "https://registry.yarnpkg.com/psl/-/psl-1.9.0.tgz#d0df2a137f00794565fcaf3b2c00cd09f8d5a5a7" + integrity sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag== + +punycode@^2.1.0, punycode@^2.1.1: + version "2.3.1" + resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.3.1.tgz#027422e2faec0b25e1549c3e1bd8309b9133b6e5" + integrity sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg== + +pure-rand@^6.0.0: + version "6.0.4" + resolved "https://registry.yarnpkg.com/pure-rand/-/pure-rand-6.0.4.tgz#50b737f6a925468679bff00ad20eade53f37d5c7" + integrity sha512-LA0Y9kxMYv47GIPJy6MI84fqTd2HmYZI83W/kM/SkKfDlajnZYfmXFTxkbY+xSBPkLJxltMa9hIkmdc29eguMA== + +q@^1.1.2: + version "1.5.1" + resolved "https://registry.yarnpkg.com/q/-/q-1.5.1.tgz#7e32f75b41381291d04611f1bf14109ac00651d7" + integrity sha512-kV/CThkXo6xyFEZUugw/+pIOywXcDbFYgSct5cT3gqlbkBE1SJdwy6UQoZvodiWF/ckQLZyDE/Bu1M6gVu5lVw== + +qs@6.11.0: + version "6.11.0" + resolved "https://registry.yarnpkg.com/qs/-/qs-6.11.0.tgz#fd0d963446f7a65e1367e01abd85429453f0c37a" + integrity sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q== + dependencies: + side-channel "^1.0.4" + +querystringify@^2.1.1: + version "2.2.0" + resolved "https://registry.yarnpkg.com/querystringify/-/querystringify-2.2.0.tgz#3345941b4153cb9d082d8eee4cda2016a9aef7f6" + integrity sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ== + +queue-microtask@^1.2.2: + version "1.2.3" + resolved "https://registry.yarnpkg.com/queue-microtask/-/queue-microtask-1.2.3.tgz#4929228bbc724dfac43e0efb058caf7b6cfb6243" + integrity sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A== + +raf@^3.4.1: + version "3.4.1" + resolved "https://registry.yarnpkg.com/raf/-/raf-3.4.1.tgz#0742e99a4a6552f445d73e3ee0328af0ff1ede39" + integrity sha512-Sq4CW4QhwOHE8ucn6J34MqtZCeWFP2aQSmrlroYgqAV1PjStIhJXxYuTgUIfkEk7zTLjmIjLmU5q+fbD1NnOJA== + dependencies: + performance-now "^2.1.0" + +randombytes@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/randombytes/-/randombytes-2.1.0.tgz#df6f84372f0270dc65cdf6291349ab7a473d4f2a" + integrity sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ== + dependencies: + safe-buffer "^5.1.0" + +range-parser@^1.2.1, range-parser@~1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/range-parser/-/range-parser-1.2.1.tgz#3cf37023d199e1c24d1a55b84800c2f3e6468031" + integrity sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg== + +raw-body@2.5.1: + version "2.5.1" + resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-2.5.1.tgz#fe1b1628b181b700215e5fd42389f98b71392857" + integrity sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig== + dependencies: + bytes "3.1.2" + http-errors "2.0.0" + iconv-lite "0.4.24" + unpipe "1.0.0" + +react-app-polyfill@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/react-app-polyfill/-/react-app-polyfill-3.0.0.tgz#95221e0a9bd259e5ca6b177c7bb1cb6768f68fd7" + integrity sha512-sZ41cxiU5llIB003yxxQBYrARBqe0repqPTTYBTmMqTz9szeBbE37BehCE891NZsmdZqqP+xWKdT3eo3vOzN8w== + dependencies: + core-js "^3.19.2" + object-assign "^4.1.1" + promise "^8.1.0" + raf "^3.4.1" + regenerator-runtime "^0.13.9" + whatwg-fetch "^3.6.2" + +react-dev-utils@^12.0.1: + version "12.0.1" + resolved "https://registry.yarnpkg.com/react-dev-utils/-/react-dev-utils-12.0.1.tgz#ba92edb4a1f379bd46ccd6bcd4e7bc398df33e73" + integrity sha512-84Ivxmr17KjUupyqzFode6xKhjwuEJDROWKJy/BthkL7Wn6NJ8h4WE6k/exAv6ImS+0oZLRRW5j/aINMHyeGeQ== + dependencies: + "@babel/code-frame" "^7.16.0" + address "^1.1.2" + browserslist "^4.18.1" + chalk "^4.1.2" + cross-spawn "^7.0.3" + detect-port-alt "^1.1.6" + escape-string-regexp "^4.0.0" + filesize "^8.0.6" + find-up "^5.0.0" + fork-ts-checker-webpack-plugin "^6.5.0" + global-modules "^2.0.0" + globby "^11.0.4" + gzip-size "^6.0.0" + immer "^9.0.7" + is-root "^2.1.0" + loader-utils "^3.2.0" + open "^8.4.0" + pkg-up "^3.1.0" + prompts "^2.4.2" + react-error-overlay "^6.0.11" + recursive-readdir "^2.2.2" + shell-quote "^1.7.3" + strip-ansi "^6.0.1" + text-table "^0.2.0" + +react-dom@^18.2.0: + version "18.2.0" + resolved "https://registry.yarnpkg.com/react-dom/-/react-dom-18.2.0.tgz#22aaf38708db2674ed9ada224ca4aa708d821e3d" + integrity sha512-6IMTriUmvsjHUjNtEDudZfuDQUoWXVxKHhlEGSk81n4YFS+r/Kl99wXiwlVXtPBtJenozv2P+hxDsw9eA7Xo6g== + dependencies: + loose-envify "^1.1.0" + scheduler "^0.23.0" + +react-error-overlay@^6.0.11: + version "6.0.11" + resolved "https://registry.yarnpkg.com/react-error-overlay/-/react-error-overlay-6.0.11.tgz#92835de5841c5cf08ba00ddd2d677b6d17ff9adb" + integrity sha512-/6UZ2qgEyH2aqzYZgQPxEnz33NJ2gNsnHA2o5+o4wW9bLM/JYQitNP9xPhsXwC08hMMovfGe/8retsdDsczPRg== + +react-i18next@^13.0.3: + version "13.5.0" + resolved "https://registry.yarnpkg.com/react-i18next/-/react-i18next-13.5.0.tgz#44198f747628267a115c565f0c736a50a76b1ab0" + integrity sha512-CFJ5NDGJ2MUyBohEHxljOq/39NQ972rh1ajnadG9BjTk+UXbHLq4z5DKEbEQBDoIhUmmbuS/fIMJKo6VOax1HA== + dependencies: + "@babel/runtime" "^7.22.5" + html-parse-stringify "^3.0.1" + +react-is@^16.13.1, react-is@^16.7.0: + version "16.13.1" + resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.13.1.tgz#789729a4dc36de2999dc156dd6c1d9c18cea56a4" + integrity sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ== + +react-is@^17.0.1: + version "17.0.2" + resolved "https://registry.yarnpkg.com/react-is/-/react-is-17.0.2.tgz#e691d4a8e9c789365655539ab372762b0efb54f0" + integrity sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w== + +react-is@^18.0.0, react-is@^18.2.0: + version "18.2.0" + resolved "https://registry.yarnpkg.com/react-is/-/react-is-18.2.0.tgz#199431eeaaa2e09f86427efbb4f1473edb47609b" + integrity sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w== + +react-refresh@^0.11.0: + version "0.11.0" + resolved "https://registry.yarnpkg.com/react-refresh/-/react-refresh-0.11.0.tgz#77198b944733f0f1f1a90e791de4541f9f074046" + integrity sha512-F27qZr8uUqwhWZboondsPx8tnC3Ct3SxZA3V5WyEvujRyyNv0VYPhoBg1gZ8/MV5tubQp76Trw8lTv9hzRBa+A== + +react-refresh@^0.14.0: + version "0.14.0" + resolved "https://registry.yarnpkg.com/react-refresh/-/react-refresh-0.14.0.tgz#4e02825378a5f227079554d4284889354e5f553e" + integrity sha512-wViHqhAd8OHeLS/IRMJjTSDHF3U9eWi62F/MledQGPdJGDhodXJ9PBLNGr6WWL7qlH12Mt3TyTpbS+hGXMjCzQ== + +react-router-dom@^6.8.0: + version "6.21.3" + resolved "https://registry.yarnpkg.com/react-router-dom/-/react-router-dom-6.21.3.tgz#ef3a7956a3699c7b82c21fcb3dbc63c313ed8c5d" + integrity sha512-kNzubk7n4YHSrErzjLK72j0B5i969GsuCGazRl3G6j1zqZBLjuSlYBdVdkDOgzGdPIffUOc9nmgiadTEVoq91g== + dependencies: + "@remix-run/router" "1.14.2" + react-router "6.21.3" + +react-router@6.21.3: + version "6.21.3" + resolved "https://registry.yarnpkg.com/react-router/-/react-router-6.21.3.tgz#8086cea922c2bfebbb49c6594967418f1f167d70" + integrity sha512-a0H638ZXULv1OdkmiK6s6itNhoy33ywxmUFT/xtSoVyf9VnC7n7+VT4LjVzdIHSaF5TIh9ylUgxMXksHTgGrKg== + dependencies: + "@remix-run/router" "1.14.2" + +react-scripts@^5.0.0: + version "5.0.1" + resolved "https://registry.yarnpkg.com/react-scripts/-/react-scripts-5.0.1.tgz#6285dbd65a8ba6e49ca8d651ce30645a6d980003" + integrity sha512-8VAmEm/ZAwQzJ+GOMLbBsTdDKOpuZh7RPs0UymvBR2vRk4iZWCskjbFnxqjrzoIvlNNRZ3QJFx6/qDSi6zSnaQ== + dependencies: + "@babel/core" "^7.16.0" + "@pmmmwh/react-refresh-webpack-plugin" "^0.5.3" + "@svgr/webpack" "^5.5.0" + babel-jest "^27.4.2" + babel-loader "^8.2.3" + babel-plugin-named-asset-import "^0.3.8" + babel-preset-react-app "^10.0.1" + bfj "^7.0.2" + browserslist "^4.18.1" + camelcase "^6.2.1" + case-sensitive-paths-webpack-plugin "^2.4.0" + css-loader "^6.5.1" + css-minimizer-webpack-plugin "^3.2.0" + dotenv "^10.0.0" + dotenv-expand "^5.1.0" + eslint "^8.3.0" + eslint-config-react-app "^7.0.1" + eslint-webpack-plugin "^3.1.1" + file-loader "^6.2.0" + fs-extra "^10.0.0" + html-webpack-plugin "^5.5.0" + identity-obj-proxy "^3.0.0" + jest "^27.4.3" + jest-resolve "^27.4.2" + jest-watch-typeahead "^1.0.0" + mini-css-extract-plugin "^2.4.5" + postcss "^8.4.4" + postcss-flexbugs-fixes "^5.0.2" + postcss-loader "^6.2.1" + postcss-normalize "^10.0.1" + postcss-preset-env "^7.0.1" + prompts "^2.4.2" + react-app-polyfill "^3.0.0" + react-dev-utils "^12.0.1" + react-refresh "^0.11.0" + resolve "^1.20.0" + resolve-url-loader "^4.0.0" + sass-loader "^12.3.0" + semver "^7.3.5" + source-map-loader "^3.0.0" + style-loader "^3.3.1" + tailwindcss "^3.0.2" + terser-webpack-plugin "^5.2.5" + webpack "^5.64.4" + webpack-dev-server "^4.6.0" + webpack-manifest-plugin "^4.0.2" + workbox-webpack-plugin "^6.4.1" + optionalDependencies: + fsevents "^2.3.2" + +react-transition-group@^4.4.5: + version "4.4.5" + resolved "https://registry.yarnpkg.com/react-transition-group/-/react-transition-group-4.4.5.tgz#e53d4e3f3344da8521489fbef8f2581d42becdd1" + integrity sha512-pZcd1MCJoiKiBR2NRxeCRg13uCXbydPnmB4EOeRrY7480qNWO8IIgQG6zlDkm6uRMsURXPuKq0GWtiM59a5Q6g== + dependencies: + "@babel/runtime" "^7.5.5" + dom-helpers "^5.0.1" + loose-envify "^1.4.0" + prop-types "^15.6.2" + +react@^18.2.0: + version "18.2.0" + resolved "https://registry.yarnpkg.com/react/-/react-18.2.0.tgz#555bd98592883255fa00de14f1151a917b5d77d5" + integrity sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ== + dependencies: + loose-envify "^1.1.0" + +read-cache@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/read-cache/-/read-cache-1.0.0.tgz#e664ef31161166c9751cdbe8dbcf86b5fb58f774" + integrity sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA== + dependencies: + pify "^2.3.0" + +readable-stream@^2.0.1: + version "2.3.8" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.8.tgz#91125e8042bba1b9887f49345f6277027ce8be9b" + integrity sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA== + dependencies: + core-util-is "~1.0.0" + inherits "~2.0.3" + isarray "~1.0.0" + process-nextick-args "~2.0.0" + safe-buffer "~5.1.1" + string_decoder "~1.1.1" + util-deprecate "~1.0.1" + +readable-stream@^3.0.6: + version "3.6.2" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.6.2.tgz#56a9b36ea965c00c5a93ef31eb111a0f11056967" + integrity sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA== + dependencies: + inherits "^2.0.3" + string_decoder "^1.1.1" + util-deprecate "^1.0.1" + +readdirp@~3.6.0: + version "3.6.0" + resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.6.0.tgz#74a370bd857116e245b29cc97340cd431a02a6c7" + integrity sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA== + dependencies: + picomatch "^2.2.1" + +recursive-readdir@^2.2.2: + version "2.2.3" + resolved "https://registry.yarnpkg.com/recursive-readdir/-/recursive-readdir-2.2.3.tgz#e726f328c0d69153bcabd5c322d3195252379372" + integrity sha512-8HrF5ZsXk5FAH9dgsx3BlUer73nIhuj+9OrQwEbLTPOBzGkL1lsFCR01am+v+0m2Cmbs1nP12hLDl5FA7EszKA== + dependencies: + minimatch "^3.0.5" + +redent@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/redent/-/redent-3.0.0.tgz#e557b7998316bb53c9f1f56fa626352c6963059f" + integrity sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg== + dependencies: + indent-string "^4.0.0" + strip-indent "^3.0.0" + +reflect.getprototypeof@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/reflect.getprototypeof/-/reflect.getprototypeof-1.0.4.tgz#aaccbf41aca3821b87bb71d9dcbc7ad0ba50a3f3" + integrity sha512-ECkTw8TmJwW60lOTR+ZkODISW6RQ8+2CL3COqtiJKLd6MmB45hN51HprHFziKLGkAuTGQhBb91V8cy+KHlaCjw== + dependencies: + call-bind "^1.0.2" + define-properties "^1.2.0" + es-abstract "^1.22.1" + get-intrinsic "^1.2.1" + globalthis "^1.0.3" + which-builtin-type "^1.1.3" + +regenerate-unicode-properties@^10.1.0: + version "10.1.1" + resolved "https://registry.yarnpkg.com/regenerate-unicode-properties/-/regenerate-unicode-properties-10.1.1.tgz#6b0e05489d9076b04c436f318d9b067bba459480" + integrity sha512-X007RyZLsCJVVrjgEFVpLUTZwyOZk3oiL75ZcuYjlIWd6rNJtOjkBwQc5AsRrpbKVkxN6sklw/k/9m2jJYOf8Q== + dependencies: + regenerate "^1.4.2" + +regenerate@^1.4.2: + version "1.4.2" + resolved "https://registry.yarnpkg.com/regenerate/-/regenerate-1.4.2.tgz#b9346d8827e8f5a32f7ba29637d398b69014848a" + integrity sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A== + +regenerator-runtime@^0.13.9: + version "0.13.11" + resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.11.tgz#f6dca3e7ceec20590d07ada785636a90cdca17f9" + integrity sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg== + +regenerator-runtime@^0.14.0: + version "0.14.1" + resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.14.1.tgz#356ade10263f685dda125100cd862c1db895327f" + integrity sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw== + +regenerator-transform@^0.15.2: + version "0.15.2" + resolved "https://registry.yarnpkg.com/regenerator-transform/-/regenerator-transform-0.15.2.tgz#5bbae58b522098ebdf09bca2f83838929001c7a4" + integrity sha512-hfMp2BoF0qOk3uc5V20ALGDS2ddjQaLrdl7xrGXvAIow7qeWRM2VA2HuCHkUKk9slq3VwEwLNK3DFBqDfPGYtg== + dependencies: + "@babel/runtime" "^7.8.4" + +regex-parser@^2.2.11: + version "2.3.0" + resolved "https://registry.yarnpkg.com/regex-parser/-/regex-parser-2.3.0.tgz#4bb61461b1a19b8b913f3960364bb57887f920ee" + integrity sha512-TVILVSz2jY5D47F4mA4MppkBrafEaiUWJO/TcZHEIuI13AqoZMkK1WMA4Om1YkYbTx+9Ki1/tSUXbceyr9saRg== + +regexp.prototype.flags@^1.5.0, regexp.prototype.flags@^1.5.1: + version "1.5.1" + resolved "https://registry.yarnpkg.com/regexp.prototype.flags/-/regexp.prototype.flags-1.5.1.tgz#90ce989138db209f81492edd734183ce99f9677e" + integrity sha512-sy6TXMN+hnP/wMy+ISxg3krXx7BAtWVO4UouuCN/ziM9UEne0euamVNafDfvC83bRNr95y0V5iijeDQFUNpvrg== + dependencies: + call-bind "^1.0.2" + define-properties "^1.2.0" + set-function-name "^2.0.0" + +regexpu-core@^5.3.1: + version "5.3.2" + resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-5.3.2.tgz#11a2b06884f3527aec3e93dbbf4a3b958a95546b" + integrity sha512-RAM5FlZz+Lhmo7db9L298p2vHP5ZywrVXmVXpmAD9GuL5MPH6t9ROw1iA/wfHkQ76Qe7AaPF0nGuim96/IrQMQ== + dependencies: + "@babel/regjsgen" "^0.8.0" + regenerate "^1.4.2" + regenerate-unicode-properties "^10.1.0" + regjsparser "^0.9.1" + unicode-match-property-ecmascript "^2.0.0" + unicode-match-property-value-ecmascript "^2.1.0" + +regjsparser@^0.9.1: + version "0.9.1" + resolved "https://registry.yarnpkg.com/regjsparser/-/regjsparser-0.9.1.tgz#272d05aa10c7c1f67095b1ff0addae8442fc5709" + integrity sha512-dQUtn90WanSNl+7mQKcXAgZxvUe7Z0SqXlgzv0za4LwiUhyzBC58yQO3liFoUgu8GiJVInAhJjkj1N0EtQ5nkQ== + dependencies: + jsesc "~0.5.0" + +relateurl@^0.2.7: + version "0.2.7" + resolved "https://registry.yarnpkg.com/relateurl/-/relateurl-0.2.7.tgz#54dbf377e51440aca90a4cd274600d3ff2d888a9" + integrity sha512-G08Dxvm4iDN3MLM0EsP62EDV9IuhXPR6blNz6Utcp7zyV3tr4HVNINt6MpaRWbxoOHT3Q7YN2P+jaHX8vUbgog== + +renderkid@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/renderkid/-/renderkid-3.0.0.tgz#5fd823e4d6951d37358ecc9a58b1f06836b6268a" + integrity sha512-q/7VIQA8lmM1hF+jn+sFSPWGlMkSAeNYcPLmDQx2zzuiDfaLrOmumR8iaUKlenFgh0XRPIUeSPlH3A+AW3Z5pg== + dependencies: + css-select "^4.1.3" + dom-converter "^0.2.0" + htmlparser2 "^6.1.0" + lodash "^4.17.21" + strip-ansi "^6.0.1" + +require-directory@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" + integrity sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q== + +require-from-string@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/require-from-string/-/require-from-string-2.0.2.tgz#89a7fdd938261267318eafe14f9c32e598c36909" + integrity sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw== + +requires-port@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/requires-port/-/requires-port-1.0.0.tgz#925d2601d39ac485e091cf0da5c6e694dc3dcaff" + integrity sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ== + +resolve-cwd@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/resolve-cwd/-/resolve-cwd-3.0.0.tgz#0f0075f1bb2544766cf73ba6a6e2adfebcb13f2d" + integrity sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg== + dependencies: + resolve-from "^5.0.0" + +resolve-from@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-4.0.0.tgz#4abcd852ad32dd7baabfe9b40e00a36db5f392e6" + integrity sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g== + +resolve-from@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-5.0.0.tgz#c35225843df8f776df21c57557bc087e9dfdfc69" + integrity sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw== + +resolve-url-loader@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/resolve-url-loader/-/resolve-url-loader-4.0.0.tgz#d50d4ddc746bb10468443167acf800dcd6c3ad57" + integrity sha512-05VEMczVREcbtT7Bz+C+96eUO5HDNvdthIiMB34t7FcF8ehcu4wC0sSgPUubs3XW2Q3CNLJk/BJrCU9wVRymiA== + dependencies: + adjust-sourcemap-loader "^4.0.0" + convert-source-map "^1.7.0" + loader-utils "^2.0.0" + postcss "^7.0.35" + source-map "0.6.1" + +resolve.exports@^1.1.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/resolve.exports/-/resolve.exports-1.1.1.tgz#05cfd5b3edf641571fd46fa608b610dda9ead999" + integrity sha512-/NtpHNDN7jWhAaQ9BvBUYZ6YTXsRBgfqWFWP7BZBaoMJO/I3G5OFzvTuWNlZC3aPjins1F+TNrLKsGbH4rfsRQ== + +resolve.exports@^2.0.0: + version "2.0.2" + resolved "https://registry.yarnpkg.com/resolve.exports/-/resolve.exports-2.0.2.tgz#f8c934b8e6a13f539e38b7098e2e36134f01e800" + integrity sha512-X2UW6Nw3n/aMgDVy+0rSqgHlv39WZAlZrXCdnbyEiKm17DSqHX4MmQMaST3FbeWR5FTuRcUwYAziZajji0Y7mg== + +resolve@^1.1.7, resolve@^1.14.2, resolve@^1.19.0, resolve@^1.20.0, resolve@^1.22.2, resolve@^1.22.4: + version "1.22.8" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.8.tgz#b6c87a9f2aa06dfab52e3d70ac8cde321fa5a48d" + integrity sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw== + dependencies: + is-core-module "^2.13.0" + path-parse "^1.0.7" + supports-preserve-symlinks-flag "^1.0.0" + +resolve@^2.0.0-next.4: + version "2.0.0-next.5" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-2.0.0-next.5.tgz#6b0ec3107e671e52b68cd068ef327173b90dc03c" + integrity sha512-U7WjGVG9sH8tvjW5SmGbQuui75FiyjAX72HX15DwBBwF9dNiQZRQAg9nnPhYy+TUnE0+VcrttuvNI8oSxZcocA== + dependencies: + is-core-module "^2.13.0" + path-parse "^1.0.7" + supports-preserve-symlinks-flag "^1.0.0" + +retry@^0.13.1: + version "0.13.1" + resolved "https://registry.yarnpkg.com/retry/-/retry-0.13.1.tgz#185b1587acf67919d63b357349e03537b2484658" + integrity sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg== + +reusify@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/reusify/-/reusify-1.0.4.tgz#90da382b1e126efc02146e90845a88db12925d76" + integrity sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw== + +rimraf@^3.0.0, rimraf@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-3.0.2.tgz#f1a5402ba6220ad52cc1282bac1ae3aa49fd061a" + integrity sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA== + dependencies: + glob "^7.1.3" + +rollup-plugin-terser@^7.0.0: + version "7.0.2" + resolved "https://registry.yarnpkg.com/rollup-plugin-terser/-/rollup-plugin-terser-7.0.2.tgz#e8fbba4869981b2dc35ae7e8a502d5c6c04d324d" + integrity sha512-w3iIaU4OxcF52UUXiZNsNeuXIMDvFrr+ZXK6bFZ0Q60qyVfq4uLptoS4bbq3paG3x216eQllFZX7zt6TIImguQ== + dependencies: + "@babel/code-frame" "^7.10.4" + jest-worker "^26.2.1" + serialize-javascript "^4.0.0" + terser "^5.0.0" + +rollup@^2.43.1: + version "2.79.1" + resolved "https://registry.yarnpkg.com/rollup/-/rollup-2.79.1.tgz#bedee8faef7c9f93a2647ac0108748f497f081c7" + integrity sha512-uKxbd0IhMZOhjAiD5oAFp7BqvkA4Dv47qpOCtaNvng4HBwdbWtdOh8f5nZNuk2rp51PMGk3bzfWu5oayNEuYnw== + optionalDependencies: + fsevents "~2.3.2" + +rollup@^4.2.0: + version "4.9.6" + resolved "https://registry.yarnpkg.com/rollup/-/rollup-4.9.6.tgz#4515facb0318ecca254a2ee1315e22e09efc50a0" + integrity sha512-05lzkCS2uASX0CiLFybYfVkwNbKZG5NFQ6Go0VWyogFTXXbR039UVsegViTntkk4OglHBdF54ccApXRRuXRbsg== + dependencies: + "@types/estree" "1.0.5" + optionalDependencies: + "@rollup/rollup-android-arm-eabi" "4.9.6" + "@rollup/rollup-android-arm64" "4.9.6" + "@rollup/rollup-darwin-arm64" "4.9.6" + "@rollup/rollup-darwin-x64" "4.9.6" + "@rollup/rollup-linux-arm-gnueabihf" "4.9.6" + "@rollup/rollup-linux-arm64-gnu" "4.9.6" + "@rollup/rollup-linux-arm64-musl" "4.9.6" + "@rollup/rollup-linux-riscv64-gnu" "4.9.6" + "@rollup/rollup-linux-x64-gnu" "4.9.6" + "@rollup/rollup-linux-x64-musl" "4.9.6" + "@rollup/rollup-win32-arm64-msvc" "4.9.6" + "@rollup/rollup-win32-ia32-msvc" "4.9.6" + "@rollup/rollup-win32-x64-msvc" "4.9.6" + fsevents "~2.3.2" + +run-parallel@^1.1.9: + version "1.2.0" + resolved "https://registry.yarnpkg.com/run-parallel/-/run-parallel-1.2.0.tgz#66d1368da7bdf921eb9d95bd1a9229e7f21a43ee" + integrity sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA== + dependencies: + queue-microtask "^1.2.2" + +safe-array-concat@^1.0.0, safe-array-concat@^1.0.1: + version "1.1.0" + resolved "https://registry.yarnpkg.com/safe-array-concat/-/safe-array-concat-1.1.0.tgz#8d0cae9cb806d6d1c06e08ab13d847293ebe0692" + integrity sha512-ZdQ0Jeb9Ofti4hbt5lX3T2JcAamT9hfzYU1MNB+z/jaEbB6wfFfPIR/zEORmZqobkCCJhSjodobH6WHNmJ97dg== + dependencies: + call-bind "^1.0.5" + get-intrinsic "^1.2.2" + has-symbols "^1.0.3" + isarray "^2.0.5" + +safe-buffer@5.1.2, safe-buffer@~5.1.0, safe-buffer@~5.1.1: + version "5.1.2" + resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" + integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== + +safe-buffer@5.2.1, safe-buffer@>=5.1.0, safe-buffer@^5.1.0, safe-buffer@~5.2.0: + version "5.2.1" + resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" + integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== + +safe-regex-test@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/safe-regex-test/-/safe-regex-test-1.0.2.tgz#3ba32bdb3ea35f940ee87e5087c60ee786c3f6c5" + integrity sha512-83S9w6eFq12BBIJYvjMux6/dkirb8+4zJRA9cxNBVb7Wq5fJBW+Xze48WqR8pxua7bDuAaaAxtVVd4Idjp1dBQ== + dependencies: + call-bind "^1.0.5" + get-intrinsic "^1.2.2" + is-regex "^1.1.4" + +"safer-buffer@>= 2.1.2 < 3", "safer-buffer@>= 2.1.2 < 3.0.0": + version "2.1.2" + resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" + integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== + +sanitize.css@*: + version "13.0.0" + resolved "https://registry.yarnpkg.com/sanitize.css/-/sanitize.css-13.0.0.tgz#2675553974b27964c75562ade3bd85d79879f173" + integrity sha512-ZRwKbh/eQ6w9vmTjkuG0Ioi3HBwPFce0O+v//ve+aOq1oeCy7jMV2qzzAlpsNuqpqCBjjriM1lbtZbF/Q8jVyA== + +sass-loader@^12.3.0: + version "12.6.0" + resolved "https://registry.yarnpkg.com/sass-loader/-/sass-loader-12.6.0.tgz#5148362c8e2cdd4b950f3c63ac5d16dbfed37bcb" + integrity sha512-oLTaH0YCtX4cfnJZxKSLAyglED0naiYfNG1iXfU5w1LNZ+ukoA5DtyDIN5zmKVZwYNJP4KRc5Y3hkWga+7tYfA== + dependencies: + klona "^2.0.4" + neo-async "^2.6.2" + +sax@~1.2.4: + version "1.2.4" + resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.4.tgz#2816234e2378bddc4e5354fab5caa895df7100d9" + integrity sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw== + +saxes@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/saxes/-/saxes-5.0.1.tgz#eebab953fa3b7608dbe94e5dadb15c888fa6696d" + integrity sha512-5LBh1Tls8c9xgGjw3QrMwETmTMVk0oFgvrFSvWx62llR2hcEInrKNZ2GZCCuuy2lvWrdl5jhbpeqc5hRYKFOcw== + dependencies: + xmlchars "^2.2.0" + +scheduler@^0.23.0: + version "0.23.0" + resolved "https://registry.yarnpkg.com/scheduler/-/scheduler-0.23.0.tgz#ba8041afc3d30eb206a487b6b384002e4e61fdfe" + integrity sha512-CtuThmgHNg7zIZWAXi3AsyIzA3n4xx7aNyjwC2VJldO2LMVDhFK+63xGqq6CsJH4rTAt6/M+N4GhZiDYPx9eUw== + dependencies: + loose-envify "^1.1.0" + +schema-utils@2.7.0: + version "2.7.0" + resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-2.7.0.tgz#17151f76d8eae67fbbf77960c33c676ad9f4efc7" + integrity sha512-0ilKFI6QQF5nxDZLFn2dMjvc4hjg/Wkg7rHd3jK6/A4a1Hl9VFdQWvgB1UMGoU94pad1P/8N7fMcEnLnSiju8A== + dependencies: + "@types/json-schema" "^7.0.4" + ajv "^6.12.2" + ajv-keywords "^3.4.1" + +schema-utils@^2.6.5: + version "2.7.1" + resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-2.7.1.tgz#1ca4f32d1b24c590c203b8e7a50bf0ea4cd394d7" + integrity sha512-SHiNtMOUGWBQJwzISiVYKu82GiV4QYGePp3odlY1tuKO7gPtphAT5R/py0fA6xtbgLL/RvtJZnU9b8s0F1q0Xg== + dependencies: + "@types/json-schema" "^7.0.5" + ajv "^6.12.4" + ajv-keywords "^3.5.2" + +schema-utils@^3.0.0, schema-utils@^3.1.1, schema-utils@^3.2.0: + version "3.3.0" + resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-3.3.0.tgz#f50a88877c3c01652a15b622ae9e9795df7a60fe" + integrity sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg== + dependencies: + "@types/json-schema" "^7.0.8" + ajv "^6.12.5" + ajv-keywords "^3.5.2" + +schema-utils@^4.0.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-4.2.0.tgz#70d7c93e153a273a805801882ebd3bff20d89c8b" + integrity sha512-L0jRsrPpjdckP3oPug3/VxNKt2trR8TcabrM6FOAAlvC/9Phcmm+cuAgTlxBqdBR1WJx7Naj9WHw+aOmheSVbw== + dependencies: + "@types/json-schema" "^7.0.9" + ajv "^8.9.0" + ajv-formats "^2.1.1" + ajv-keywords "^5.1.0" + +select-hose@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/select-hose/-/select-hose-2.0.0.tgz#625d8658f865af43ec962bfc376a37359a4994ca" + integrity sha512-mEugaLK+YfkijB4fx0e6kImuJdCIt2LxCRcbEYPqRGCs4F2ogyfZU5IAZRdjCP8JPq2AtdNoC/Dux63d9Kiryg== + +selfsigned@^2.1.1: + version "2.4.1" + resolved "https://registry.yarnpkg.com/selfsigned/-/selfsigned-2.4.1.tgz#560d90565442a3ed35b674034cec4e95dceb4ae0" + integrity sha512-th5B4L2U+eGLq1TVh7zNRGBapioSORUeymIydxgFpwww9d2qyKvtuPU2jJuHvYAwwqi2Y596QBL3eEqcPEYL8Q== + dependencies: + "@types/node-forge" "^1.3.0" + node-forge "^1" + +semver@^6.0.0, semver@^6.3.0, semver@^6.3.1: + version "6.3.1" + resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.1.tgz#556d2ef8689146e46dcea4bfdd095f3434dffcb4" + integrity sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA== + +semver@^7.3.2, semver@^7.3.5, semver@^7.3.7, semver@^7.5.3, semver@^7.5.4: + version "7.5.4" + resolved "https://registry.yarnpkg.com/semver/-/semver-7.5.4.tgz#483986ec4ed38e1c6c48c34894a9182dbff68a6e" + integrity sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA== + dependencies: + lru-cache "^6.0.0" + +send@0.18.0: + version "0.18.0" + resolved "https://registry.yarnpkg.com/send/-/send-0.18.0.tgz#670167cc654b05f5aa4a767f9113bb371bc706be" + integrity sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg== + dependencies: + debug "2.6.9" + depd "2.0.0" + destroy "1.2.0" + encodeurl "~1.0.2" + escape-html "~1.0.3" + etag "~1.8.1" + fresh "0.5.2" + http-errors "2.0.0" + mime "1.6.0" + ms "2.1.3" + on-finished "2.4.1" + range-parser "~1.2.1" + statuses "2.0.1" + +serialize-javascript@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-4.0.0.tgz#b525e1238489a5ecfc42afacc3fe99e666f4b1aa" + integrity sha512-GaNA54380uFefWghODBWEGisLZFj00nS5ACs6yHa9nLqlLpVLO8ChDGeKRjZnV4Nh4n0Qi7nhYZD/9fCPzEqkw== + dependencies: + randombytes "^2.1.0" + +serialize-javascript@^6.0.0, serialize-javascript@^6.0.1: + version "6.0.2" + resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-6.0.2.tgz#defa1e055c83bf6d59ea805d8da862254eb6a6c2" + integrity sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g== + dependencies: + randombytes "^2.1.0" + +serve-index@^1.9.1: + version "1.9.1" + resolved "https://registry.yarnpkg.com/serve-index/-/serve-index-1.9.1.tgz#d3768d69b1e7d82e5ce050fff5b453bea12a9239" + integrity sha512-pXHfKNP4qujrtteMrSBb0rc8HJ9Ms/GrXwcUtUtD5s4ewDJI8bT3Cz2zTVRMKtri49pLx2e0Ya8ziP5Ya2pZZw== + dependencies: + accepts "~1.3.4" + batch "0.6.1" + debug "2.6.9" + escape-html "~1.0.3" + http-errors "~1.6.2" + mime-types "~2.1.17" + parseurl "~1.3.2" + +serve-static@1.15.0: + version "1.15.0" + resolved "https://registry.yarnpkg.com/serve-static/-/serve-static-1.15.0.tgz#faaef08cffe0a1a62f60cad0c4e513cff0ac9540" + integrity sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g== + dependencies: + encodeurl "~1.0.2" + escape-html "~1.0.3" + parseurl "~1.3.3" + send "0.18.0" + +set-function-length@^1.1.1: + version "1.2.0" + resolved "https://registry.yarnpkg.com/set-function-length/-/set-function-length-1.2.0.tgz#2f81dc6c16c7059bda5ab7c82c11f03a515ed8e1" + integrity sha512-4DBHDoyHlM1IRPGYcoxexgh67y4ueR53FKV1yyxwFMY7aCqcN/38M1+SwZ/qJQ8iLv7+ck385ot4CcisOAPT9w== + dependencies: + define-data-property "^1.1.1" + function-bind "^1.1.2" + get-intrinsic "^1.2.2" + gopd "^1.0.1" + has-property-descriptors "^1.0.1" + +set-function-name@^2.0.0, set-function-name@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/set-function-name/-/set-function-name-2.0.1.tgz#12ce38b7954310b9f61faa12701620a0c882793a" + integrity sha512-tMNCiqYVkXIZgc2Hnoy2IvC/f8ezc5koaRFkCjrpWzGpCd3qbZXPzVy9MAZzK1ch/X0jvSkojys3oqJN0qCmdA== + dependencies: + define-data-property "^1.0.1" + functions-have-names "^1.2.3" + has-property-descriptors "^1.0.0" + +setprototypeof@1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.1.0.tgz#d0bd85536887b6fe7c0d818cb962d9d91c54e656" + integrity sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ== + +setprototypeof@1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.2.0.tgz#66c9a24a73f9fc28cbe66b09fed3d33dcaf1b424" + integrity sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw== + +shebang-command@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-1.2.0.tgz#44aac65b695b03398968c39f363fee5deafdf1ea" + integrity sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg== + dependencies: + shebang-regex "^1.0.0" + +shebang-command@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-2.0.0.tgz#ccd0af4f8835fbdc265b82461aaf0c36663f34ea" + integrity sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA== + dependencies: + shebang-regex "^3.0.0" + +shebang-regex@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-1.0.0.tgz#da42f49740c0b42db2ca9728571cb190c98efea3" + integrity sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ== + +shebang-regex@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172" + integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== + +shell-quote@^1.7.3, shell-quote@^1.8.1: + version "1.8.1" + resolved "https://registry.yarnpkg.com/shell-quote/-/shell-quote-1.8.1.tgz#6dbf4db75515ad5bac63b4f1894c3a154c766680" + integrity sha512-6j1W9l1iAs/4xYBI1SYOVZyFcCis9b4KCLQ8fgAGG07QvzaRLVVRQvAy85yNmmZSjYjg4MWh4gNvlPujU/5LpA== + +side-channel@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/side-channel/-/side-channel-1.0.4.tgz#efce5c8fdc104ee751b25c58d4290011fa5ea2cf" + integrity sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw== + dependencies: + call-bind "^1.0.0" + get-intrinsic "^1.0.2" + object-inspect "^1.9.0" + +signal-exit@^3.0.2, signal-exit@^3.0.3, signal-exit@^3.0.7: + version "3.0.7" + resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.7.tgz#a9a1767f8af84155114eaabd73f99273c8f59ad9" + integrity sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ== + +signal-exit@^4.0.1: + version "4.1.0" + resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-4.1.0.tgz#952188c1cbd546070e2dd20d0f41c0ae0530cb04" + integrity sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw== + +simple-swizzle@^0.2.2: + version "0.2.2" + resolved "https://registry.yarnpkg.com/simple-swizzle/-/simple-swizzle-0.2.2.tgz#a4da6b635ffcccca33f70d17cb92592de95e557a" + integrity sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg== + dependencies: + is-arrayish "^0.3.1" + +sisteransi@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/sisteransi/-/sisteransi-1.0.5.tgz#134d681297756437cc05ca01370d3a7a571075ed" + integrity sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg== + +slash@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/slash/-/slash-3.0.0.tgz#6539be870c165adbd5240220dbe361f1bc4d4634" + integrity sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q== + +slash@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/slash/-/slash-4.0.0.tgz#2422372176c4c6c5addb5e2ada885af984b396a7" + integrity sha512-3dOsAHXXUkQTpOYcoAxLIorMTp4gIQr5IW3iVb7A7lFIp0VHhnynm9izx6TssdrIcVIESAlVjtnO2K8bg+Coew== + +sockjs@^0.3.24: + version "0.3.24" + resolved "https://registry.yarnpkg.com/sockjs/-/sockjs-0.3.24.tgz#c9bc8995f33a111bea0395ec30aa3206bdb5ccce" + integrity sha512-GJgLTZ7vYb/JtPSSZ10hsOYIvEYsjbNU+zPdIHcUaWVNUEPivzxku31865sSSud0Da0W4lEeOPlmw93zLQchuQ== + dependencies: + faye-websocket "^0.11.3" + uuid "^8.3.2" + websocket-driver "^0.7.4" + +sort-object-keys@^1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/sort-object-keys/-/sort-object-keys-1.1.3.tgz#bff833fe85cab147b34742e45863453c1e190b45" + integrity sha512-855pvK+VkU7PaKYPc+Jjnmt4EzejQHyhhF33q31qG8x7maDzkeFhAAThdCYay11CISO+qAMwjOBP+fPZe0IPyg== + +source-list-map@^2.0.0, source-list-map@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/source-list-map/-/source-list-map-2.0.1.tgz#3993bd873bfc48479cca9ea3a547835c7c154b34" + integrity sha512-qnQ7gVMxGNxsiL4lEuJwe/To8UnK7fAnmbGEEH8RpLouuKbeEm0lhbQVFIrNSuB+G7tVrAlVsZgETT5nljf+Iw== + +source-map-js@^1.0.1, source-map-js@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/source-map-js/-/source-map-js-1.0.2.tgz#adbc361d9c62df380125e7f161f71c826f1e490c" + integrity sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw== + +source-map-loader@^3.0.0: + version "3.0.2" + resolved "https://registry.yarnpkg.com/source-map-loader/-/source-map-loader-3.0.2.tgz#af23192f9b344daa729f6772933194cc5fa54fee" + integrity sha512-BokxPoLjyl3iOrgkWaakaxqnelAJSS+0V+De0kKIq6lyWrXuiPgYTGp6z3iHmqljKAaLXwZa+ctD8GccRJeVvg== + dependencies: + abab "^2.0.5" + iconv-lite "^0.6.3" + source-map-js "^1.0.1" + +source-map-support@0.5.13: + version "0.5.13" + resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.13.tgz#31b24a9c2e73c2de85066c0feb7d44767ed52932" + integrity sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w== + dependencies: + buffer-from "^1.0.0" + source-map "^0.6.0" + +source-map-support@^0.5.6, source-map-support@~0.5.20: + version "0.5.21" + resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.21.tgz#04fe7c7f9e1ed2d662233c28cb2b35b9f63f6e4f" + integrity sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w== + dependencies: + buffer-from "^1.0.0" + source-map "^0.6.0" + +source-map@0.6.1, source-map@^0.6.0, source-map@^0.6.1, source-map@~0.6.0, source-map@~0.6.1: + version "0.6.1" + resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" + integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== + +source-map@^0.5.7: + version "0.5.7" + resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc" + integrity sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ== + +source-map@^0.7.3: + version "0.7.4" + resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.7.4.tgz#a9bbe705c9d8846f4e08ff6765acf0f1b0898656" + integrity sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA== + +source-map@^0.8.0-beta.0: + version "0.8.0-beta.0" + resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.8.0-beta.0.tgz#d4c1bb42c3f7ee925f005927ba10709e0d1d1f11" + integrity sha512-2ymg6oRBpebeZi9UUNsgQ89bhx01TcTkmNTGnNO88imTmbSgy4nfujrgVEFKWpMTEGA11EDkTt7mqObTPdigIA== + dependencies: + whatwg-url "^7.0.0" + +sourcemap-codec@^1.4.8: + version "1.4.8" + resolved "https://registry.yarnpkg.com/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz#ea804bd94857402e6992d05a38ef1ae35a9ab4c4" + integrity sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA== + +spdy-transport@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/spdy-transport/-/spdy-transport-3.0.0.tgz#00d4863a6400ad75df93361a1608605e5dcdcf31" + integrity sha512-hsLVFE5SjA6TCisWeJXFKniGGOpBgMLmerfO2aCyCU5s7nJ/rpAepqmFifv/GCbSbueEeAJJnmSQ2rKC/g8Fcw== + dependencies: + debug "^4.1.0" + detect-node "^2.0.4" + hpack.js "^2.1.6" + obuf "^1.1.2" + readable-stream "^3.0.6" + wbuf "^1.7.3" + +spdy@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/spdy/-/spdy-4.0.2.tgz#b74f466203a3eda452c02492b91fb9e84a27677b" + integrity sha512-r46gZQZQV+Kl9oItvl1JZZqJKGr+oEkB08A6BzkiR7593/7IbtuncXHd2YoYeTsG4157ZssMu9KYvUHLcjcDoA== + dependencies: + debug "^4.1.0" + handle-thing "^2.0.0" + http-deceiver "^1.2.7" + select-hose "^2.0.0" + spdy-transport "^3.0.0" + +sprintf-js@~1.0.2: + version "1.0.3" + resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" + integrity sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g== + +stable@^0.1.8: + version "0.1.8" + resolved "https://registry.yarnpkg.com/stable/-/stable-0.1.8.tgz#836eb3c8382fe2936feaf544631017ce7d47a3cf" + integrity sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w== + +stack-utils@^2.0.3: + version "2.0.6" + resolved "https://registry.yarnpkg.com/stack-utils/-/stack-utils-2.0.6.tgz#aaf0748169c02fc33c8232abccf933f54a1cc34f" + integrity sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ== + dependencies: + escape-string-regexp "^2.0.0" + +stackframe@^1.3.4: + version "1.3.4" + resolved "https://registry.yarnpkg.com/stackframe/-/stackframe-1.3.4.tgz#b881a004c8c149a5e8efef37d51b16e412943310" + integrity sha512-oeVtt7eWQS+Na6F//S4kJ2K2VbRlS9D43mAlMyVpVWovy9o+jfgH8O9agzANzaiLjclA0oYzUXEM4PurhSUChw== + +static-eval@2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/static-eval/-/static-eval-2.0.2.tgz#2d1759306b1befa688938454c546b7871f806a42" + integrity sha512-N/D219Hcr2bPjLxPiV+TQE++Tsmrady7TqAJugLy7Xk1EumfDWS/f5dtBbkRCGE7wKKXuYockQoj8Rm2/pVKyg== + dependencies: + escodegen "^1.8.1" + +statuses@2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/statuses/-/statuses-2.0.1.tgz#55cb000ccf1d48728bd23c685a063998cf1a1b63" + integrity sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ== + +"statuses@>= 1.4.0 < 2": + version "1.5.0" + resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.5.0.tgz#161c7dac177659fd9811f43771fa99381478628c" + integrity sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA== + +stop-iteration-iterator@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/stop-iteration-iterator/-/stop-iteration-iterator-1.0.0.tgz#6a60be0b4ee757d1ed5254858ec66b10c49285e4" + integrity sha512-iCGQj+0l0HOdZ2AEeBADlsRC+vsnDsZsbdSiH1yNSjcfKM7fdpCMfqAL/dwF5BLiw/XhRft/Wax6zQbhq2BcjQ== + dependencies: + internal-slot "^1.0.4" + +string-length@^4.0.1: + version "4.0.2" + resolved "https://registry.yarnpkg.com/string-length/-/string-length-4.0.2.tgz#a8a8dc7bd5c1a82b9b3c8b87e125f66871b6e57a" + integrity sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ== + dependencies: + char-regex "^1.0.2" + strip-ansi "^6.0.0" + +string-length@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/string-length/-/string-length-5.0.1.tgz#3d647f497b6e8e8d41e422f7e0b23bc536c8381e" + integrity sha512-9Ep08KAMUn0OadnVaBuRdE2l615CQ508kr0XMadjClfYpdCyvrbFp6Taebo8yyxokQ4viUd/xPPUA4FGgUa0ow== + dependencies: + char-regex "^2.0.0" + strip-ansi "^7.0.1" + +string-natural-compare@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/string-natural-compare/-/string-natural-compare-3.0.1.tgz#7a42d58474454963759e8e8b7ae63d71c1e7fdf4" + integrity sha512-n3sPwynL1nwKi3WJ6AIsClwBMa0zTi54fn2oLU6ndfTSIO05xaznjSf15PcBZU6FNWbmN5Q6cxT4V5hGvB4taw== + +"string-width-cjs@npm:string-width@^4.2.0", string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.3: + version "4.2.3" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" + integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== + dependencies: + emoji-regex "^8.0.0" + is-fullwidth-code-point "^3.0.0" + strip-ansi "^6.0.1" + +string-width@^5.0.1, string-width@^5.1.2: + version "5.1.2" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-5.1.2.tgz#14f8daec6d81e7221d2a357e668cab73bdbca794" + integrity sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA== + dependencies: + eastasianwidth "^0.2.0" + emoji-regex "^9.2.2" + strip-ansi "^7.0.1" + +string.prototype.matchall@^4.0.6, string.prototype.matchall@^4.0.8: + version "4.0.10" + resolved "https://registry.yarnpkg.com/string.prototype.matchall/-/string.prototype.matchall-4.0.10.tgz#a1553eb532221d4180c51581d6072cd65d1ee100" + integrity sha512-rGXbGmOEosIQi6Qva94HUjgPs9vKW+dkG7Y8Q5O2OYkWL6wFaTRZO8zM4mhP94uX55wgyrXzfS2aGtGzUL7EJQ== + dependencies: + call-bind "^1.0.2" + define-properties "^1.2.0" + es-abstract "^1.22.1" + get-intrinsic "^1.2.1" + has-symbols "^1.0.3" + internal-slot "^1.0.5" + regexp.prototype.flags "^1.5.0" + set-function-name "^2.0.0" + side-channel "^1.0.4" + +string.prototype.trim@^1.2.8: + version "1.2.8" + resolved "https://registry.yarnpkg.com/string.prototype.trim/-/string.prototype.trim-1.2.8.tgz#f9ac6f8af4bd55ddfa8895e6aea92a96395393bd" + integrity sha512-lfjY4HcixfQXOfaqCvcBuOIapyaroTXhbkfJN3gcB1OtyupngWK4sEET9Knd0cXd28kTUqu/kHoV4HKSJdnjiQ== + dependencies: + call-bind "^1.0.2" + define-properties "^1.2.0" + es-abstract "^1.22.1" + +string.prototype.trimend@^1.0.7: + version "1.0.7" + resolved "https://registry.yarnpkg.com/string.prototype.trimend/-/string.prototype.trimend-1.0.7.tgz#1bb3afc5008661d73e2dc015cd4853732d6c471e" + integrity sha512-Ni79DqeB72ZFq1uH/L6zJ+DKZTkOtPIHovb3YZHQViE+HDouuU4mBrLOLDn5Dde3RF8qw5qVETEjhu9locMLvA== + dependencies: + call-bind "^1.0.2" + define-properties "^1.2.0" + es-abstract "^1.22.1" + +string.prototype.trimstart@^1.0.7: + version "1.0.7" + resolved "https://registry.yarnpkg.com/string.prototype.trimstart/-/string.prototype.trimstart-1.0.7.tgz#d4cdb44b83a4737ffbac2d406e405d43d0184298" + integrity sha512-NGhtDFu3jCEm7B4Fy0DpLewdJQOZcQ0rGbwQ/+stjnrp2i+rlKeCvos9hOIeCmqwratM47OBxY7uFZzjxHXmrg== + dependencies: + call-bind "^1.0.2" + define-properties "^1.2.0" + es-abstract "^1.22.1" + +string_decoder@^1.1.1: + version "1.3.0" + resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.3.0.tgz#42f114594a46cf1a8e30b0a84f56c78c3edac21e" + integrity sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA== + dependencies: + safe-buffer "~5.2.0" + +string_decoder@~1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.1.1.tgz#9cf1611ba62685d7030ae9e4ba34149c3af03fc8" + integrity sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg== + dependencies: + safe-buffer "~5.1.0" + +stringify-object@^3.3.0: + version "3.3.0" + resolved "https://registry.yarnpkg.com/stringify-object/-/stringify-object-3.3.0.tgz#703065aefca19300d3ce88af4f5b3956d7556629" + integrity sha512-rHqiFh1elqCQ9WPLIC8I0Q/g/wj5J1eMkyoiD6eoQApWHP0FtlK7rqnhmabL5VUY9JQCcqwwvlOaSuutekgyrw== + dependencies: + get-own-enumerable-property-symbols "^3.0.0" + is-obj "^1.0.1" + is-regexp "^1.0.0" + +"strip-ansi-cjs@npm:strip-ansi@^6.0.1", strip-ansi@^6.0.0, strip-ansi@^6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" + integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== + dependencies: + ansi-regex "^5.0.1" + +strip-ansi@^7.0.1: + version "7.1.0" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-7.1.0.tgz#d5b6568ca689d8561370b0707685d22434faff45" + integrity sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ== + dependencies: + ansi-regex "^6.0.1" + +strip-bom@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-3.0.0.tgz#2334c18e9c759f7bdd56fdef7e9ae3d588e68ed3" + integrity sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA== + +strip-bom@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-4.0.0.tgz#9c3505c1db45bcedca3d9cf7a16f5c5aa3901878" + integrity sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w== + +strip-comments@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/strip-comments/-/strip-comments-2.0.1.tgz#4ad11c3fbcac177a67a40ac224ca339ca1c1ba9b" + integrity sha512-ZprKx+bBLXv067WTCALv8SSz5l2+XhpYCsVtSqlMnkAXMWDq+/ekVbl1ghqP9rUHTzv6sm/DwCOiYutU/yp1fw== + +strip-final-newline@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/strip-final-newline/-/strip-final-newline-2.0.0.tgz#89b852fb2fcbe936f6f4b3187afb0a12c1ab58ad" + integrity sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA== + +strip-indent@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/strip-indent/-/strip-indent-3.0.0.tgz#c32e1cee940b6b3432c771bc2c54bcce73cd3001" + integrity sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ== + dependencies: + min-indent "^1.0.0" + +strip-json-comments@^3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz#31f1281b3832630434831c310c01cccda8cbe006" + integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig== + +style-loader@^3.3.1: + version "3.3.4" + resolved "https://registry.yarnpkg.com/style-loader/-/style-loader-3.3.4.tgz#f30f786c36db03a45cbd55b6a70d930c479090e7" + integrity sha512-0WqXzrsMTyb8yjZJHDqwmnwRJvhALK9LfRtRc6B4UTWe8AijYLZYZ9thuJTZc2VfQWINADW/j+LiJnfy2RoC1w== + +stylehacks@^5.1.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/stylehacks/-/stylehacks-5.1.1.tgz#7934a34eb59d7152149fa69d6e9e56f2fc34bcc9" + integrity sha512-sBpcd5Hx7G6seo7b1LkpttvTz7ikD0LlH5RmdcBNb6fFR0Fl7LQwHDFr300q4cwUqi+IYrFGmsIHieMBfnN/Bw== + dependencies: + browserslist "^4.21.4" + postcss-selector-parser "^6.0.4" + +stylis@4.2.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/stylis/-/stylis-4.2.0.tgz#79daee0208964c8fe695a42fcffcac633a211a51" + integrity sha512-Orov6g6BB1sDfYgzWfTHDOxamtX1bE/zo104Dh9e6fqJ3PooipYyfJ0pUmrZO2wAvO8YbEyeFrkV91XTsGMSrw== + +sucrase@^3.32.0: + version "3.35.0" + resolved "https://registry.yarnpkg.com/sucrase/-/sucrase-3.35.0.tgz#57f17a3d7e19b36d8995f06679d121be914ae263" + integrity sha512-8EbVDiu9iN/nESwxeSxDKe0dunta1GOlHufmSSXxMD2z2/tMZpDMpvXQGsc+ajGo8y2uYUmixaSRUc/QPoQ0GA== + dependencies: + "@jridgewell/gen-mapping" "^0.3.2" + commander "^4.0.0" + glob "^10.3.10" + lines-and-columns "^1.1.6" + mz "^2.7.0" + pirates "^4.0.1" + ts-interface-checker "^0.1.9" + +supports-color@^5.3.0: + version "5.5.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" + integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow== + dependencies: + has-flag "^3.0.0" + +supports-color@^7.0.0, supports-color@^7.1.0: + version "7.2.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da" + integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw== + dependencies: + has-flag "^4.0.0" + +supports-color@^8.0.0: + version "8.1.1" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-8.1.1.tgz#cd6fc17e28500cff56c1b86c0a7fd4a54a73005c" + integrity sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q== + dependencies: + has-flag "^4.0.0" + +supports-hyperlinks@^2.0.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/supports-hyperlinks/-/supports-hyperlinks-2.3.0.tgz#3943544347c1ff90b15effb03fc14ae45ec10624" + integrity sha512-RpsAZlpWcDwOPQA22aCH4J0t7L8JmAvsCxfOSEwm7cQs3LshN36QaTkwd70DnBOXDWGssw2eUoc8CaRWT0XunA== + dependencies: + has-flag "^4.0.0" + supports-color "^7.0.0" + +supports-preserve-symlinks-flag@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz#6eda4bd344a3c94aea376d4cc31bc77311039e09" + integrity sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w== + +svg-parser@^2.0.2: + version "2.0.4" + resolved "https://registry.yarnpkg.com/svg-parser/-/svg-parser-2.0.4.tgz#fdc2e29e13951736140b76cb122c8ee6630eb6b5" + integrity sha512-e4hG1hRwoOdRb37cIMSgzNsxyzKfayW6VOflrwvR+/bzrkyxY/31WkbgnQpgtrNp1SdpJvpUAGTa/ZoiPNDuRQ== + +svgo@^1.2.2: + version "1.3.2" + resolved "https://registry.yarnpkg.com/svgo/-/svgo-1.3.2.tgz#b6dc511c063346c9e415b81e43401145b96d4167" + integrity sha512-yhy/sQYxR5BkC98CY7o31VGsg014AKLEPxdfhora76l36hD9Rdy5NZA/Ocn6yayNPgSamYdtX2rFJdcv07AYVw== + dependencies: + chalk "^2.4.1" + coa "^2.0.2" + css-select "^2.0.0" + css-select-base-adapter "^0.1.1" + css-tree "1.0.0-alpha.37" + csso "^4.0.2" + js-yaml "^3.13.1" + mkdirp "~0.5.1" + object.values "^1.1.0" + sax "~1.2.4" + stable "^0.1.8" + unquote "~1.1.1" + util.promisify "~1.0.0" + +svgo@^2.7.0: + version "2.8.0" + resolved "https://registry.yarnpkg.com/svgo/-/svgo-2.8.0.tgz#4ff80cce6710dc2795f0c7c74101e6764cfccd24" + integrity sha512-+N/Q9kV1+F+UeWYoSiULYo4xYSDQlTgb+ayMobAXPwMnLvop7oxKMo9OzIrX5x3eS4L4f2UHhc9axXwY8DpChg== + dependencies: + "@trysound/sax" "0.2.0" + commander "^7.2.0" + css-select "^4.1.3" + css-tree "^1.1.3" + csso "^4.2.0" + picocolors "^1.0.0" + stable "^0.1.8" + +symbol-tree@^3.2.4: + version "3.2.4" + resolved "https://registry.yarnpkg.com/symbol-tree/-/symbol-tree-3.2.4.tgz#430637d248ba77e078883951fb9aa0eed7c63fa2" + integrity sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw== + +synp@^1.9.10: + version "1.9.10" + resolved "https://registry.yarnpkg.com/synp/-/synp-1.9.10.tgz#53163321a600418c9b06af0db499939ffce12907" + integrity sha512-G9Z/TXTaBG1xNslUf3dHFidz/8tvvRaR560WWyOwyI7XrGGEGBTEIIg4hdRh1qFtz8mPYynAUYwWXUg/Zh0Pzw== + dependencies: + "@yarnpkg/lockfile" "^1.1.0" + bash-glob "^2.0.0" + colors "1.4.0" + commander "^7.2.0" + eol "^0.9.1" + lodash "4.17.21" + nmtree "^1.0.6" + semver "^7.3.5" + sort-object-keys "^1.1.3" + +tailwindcss@^3.0.2: + version "3.4.1" + resolved "https://registry.yarnpkg.com/tailwindcss/-/tailwindcss-3.4.1.tgz#f512ca5d1dd4c9503c7d3d28a968f1ad8f5c839d" + integrity sha512-qAYmXRfk3ENzuPBakNK0SRrUDipP8NQnEY6772uDhflcQz5EhRdD7JNZxyrFHVQNCwULPBn6FNPp9brpO7ctcA== + dependencies: + "@alloc/quick-lru" "^5.2.0" + arg "^5.0.2" + chokidar "^3.5.3" + didyoumean "^1.2.2" + dlv "^1.1.3" + fast-glob "^3.3.0" + glob-parent "^6.0.2" + is-glob "^4.0.3" + jiti "^1.19.1" + lilconfig "^2.1.0" + micromatch "^4.0.5" + normalize-path "^3.0.0" + object-hash "^3.0.0" + picocolors "^1.0.0" + postcss "^8.4.23" + postcss-import "^15.1.0" + postcss-js "^4.0.1" + postcss-load-config "^4.0.1" + postcss-nested "^6.0.1" + postcss-selector-parser "^6.0.11" + resolve "^1.22.2" + sucrase "^3.32.0" + +tapable@^1.0.0: + version "1.1.3" + resolved "https://registry.yarnpkg.com/tapable/-/tapable-1.1.3.tgz#a1fccc06b58db61fd7a45da2da44f5f3a3e67ba2" + integrity sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA== + +tapable@^2.0.0, tapable@^2.1.1, tapable@^2.2.0: + version "2.2.1" + resolved "https://registry.yarnpkg.com/tapable/-/tapable-2.2.1.tgz#1967a73ef4060a82f12ab96af86d52fdb76eeca0" + integrity sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ== + +temp-dir@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/temp-dir/-/temp-dir-2.0.0.tgz#bde92b05bdfeb1516e804c9c00ad45177f31321e" + integrity sha512-aoBAniQmmwtcKp/7BzsH8Cxzv8OL736p7v1ihGb5e9DJ9kTwGWHrQrVB5+lfVDzfGrdRzXch+ig7LHaY1JTOrg== + +tempy@^0.6.0: + version "0.6.0" + resolved "https://registry.yarnpkg.com/tempy/-/tempy-0.6.0.tgz#65e2c35abc06f1124a97f387b08303442bde59f3" + integrity sha512-G13vtMYPT/J8A4X2SjdtBTphZlrp1gKv6hZiOjw14RCWg6GbHuQBGtjlx75xLbYV/wEc0D7G5K4rxKP/cXk8Bw== + dependencies: + is-stream "^2.0.0" + temp-dir "^2.0.0" + type-fest "^0.16.0" + unique-string "^2.0.0" + +terminal-link@^2.0.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/terminal-link/-/terminal-link-2.1.1.tgz#14a64a27ab3c0df933ea546fba55f2d078edc994" + integrity sha512-un0FmiRUQNr5PJqy9kP7c40F5BOfpGlYTrxonDChEZB7pzZxRNp/bt+ymiy9/npwXya9KH99nJ/GXFIiUkYGFQ== + dependencies: + ansi-escapes "^4.2.1" + supports-hyperlinks "^2.0.0" + +terser-webpack-plugin@^5.2.5, terser-webpack-plugin@^5.3.10: + version "5.3.10" + resolved "https://registry.yarnpkg.com/terser-webpack-plugin/-/terser-webpack-plugin-5.3.10.tgz#904f4c9193c6fd2a03f693a2150c62a92f40d199" + integrity sha512-BKFPWlPDndPs+NGGCr1U59t0XScL5317Y0UReNrHaw9/FwhPENlq6bfgs+4yPfyP51vqC1bQ4rp1EfXW5ZSH9w== + dependencies: + "@jridgewell/trace-mapping" "^0.3.20" + jest-worker "^27.4.5" + schema-utils "^3.1.1" + serialize-javascript "^6.0.1" + terser "^5.26.0" + +terser@^5.0.0, terser@^5.10.0, terser@^5.26.0: + version "5.27.0" + resolved "https://registry.yarnpkg.com/terser/-/terser-5.27.0.tgz#70108689d9ab25fef61c4e93e808e9fd092bf20c" + integrity sha512-bi1HRwVRskAjheeYl291n3JC4GgO/Ty4z1nVs5AAsmonJulGxpSektecnNedrwK9C7vpvVtcX3cw00VSLt7U2A== + dependencies: + "@jridgewell/source-map" "^0.3.3" + acorn "^8.8.2" + commander "^2.20.0" + source-map-support "~0.5.20" + +test-exclude@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/test-exclude/-/test-exclude-6.0.0.tgz#04a8698661d805ea6fa293b6cb9e63ac044ef15e" + integrity sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w== + dependencies: + "@istanbuljs/schema" "^0.1.2" + glob "^7.1.4" + minimatch "^3.0.4" + +text-table@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4" + integrity sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw== + +thenify-all@^1.0.0: + version "1.6.0" + resolved "https://registry.yarnpkg.com/thenify-all/-/thenify-all-1.6.0.tgz#1a1918d402d8fc3f98fbf234db0bcc8cc10e9726" + integrity sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA== + dependencies: + thenify ">= 3.1.0 < 4" + +"thenify@>= 3.1.0 < 4": + version "3.3.1" + resolved "https://registry.yarnpkg.com/thenify/-/thenify-3.3.1.tgz#8932e686a4066038a016dd9e2ca46add9838a95f" + integrity sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw== + dependencies: + any-promise "^1.0.0" + +throat@^6.0.1: + version "6.0.2" + resolved "https://registry.yarnpkg.com/throat/-/throat-6.0.2.tgz#51a3fbb5e11ae72e2cf74861ed5c8020f89f29fe" + integrity sha512-WKexMoJj3vEuK0yFEapj8y64V0A6xcuPuK9Gt1d0R+dzCSJc0lHqQytAbSB4cDAK0dWh4T0E2ETkoLE2WZ41OQ== + +thunky@^1.0.2: + version "1.1.0" + resolved "https://registry.yarnpkg.com/thunky/-/thunky-1.1.0.tgz#5abaf714a9405db0504732bbccd2cedd9ef9537d" + integrity sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA== + +tmpl@1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/tmpl/-/tmpl-1.0.5.tgz#8683e0b902bb9c20c4f726e3c0b69f36518c07cc" + integrity sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw== + +to-fast-properties@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-2.0.0.tgz#dc5e698cbd079265bc73e0377681a4e4e83f616e" + integrity sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog== + +to-regex-range@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4" + integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ== + dependencies: + is-number "^7.0.0" + +toidentifier@1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/toidentifier/-/toidentifier-1.0.1.tgz#3be34321a88a820ed1bd80dfaa33e479fbb8dd35" + integrity sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA== + +tough-cookie@^4.0.0: + version "4.1.3" + resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-4.1.3.tgz#97b9adb0728b42280aa3d814b6b999b2ff0318bf" + integrity sha512-aX/y5pVRkfRnfmuX+OdbSdXvPe6ieKX/G2s7e98f4poJHnqH3281gDPm/metm6E/WRamfx7WC4HUqkWHfQHprw== + dependencies: + psl "^1.1.33" + punycode "^2.1.1" + universalify "^0.2.0" + url-parse "^1.5.3" + +tr46@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/tr46/-/tr46-1.0.1.tgz#a8b13fd6bfd2489519674ccde55ba3693b706d09" + integrity sha512-dTpowEjclQ7Kgx5SdBkqRzVhERQXov8/l9Ft9dVM9fmg0W0KQSVaXX9T4i6twCPNtYiZM53lpSSUAwJbFPOHxA== + dependencies: + punycode "^2.1.0" + +tr46@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/tr46/-/tr46-2.1.0.tgz#fa87aa81ca5d5941da8cbf1f9b749dc969a4e240" + integrity sha512-15Ih7phfcdP5YxqiB+iDtLoaTz4Nd35+IiAv0kQ5FNKHzXgdWqPoTIqEDDJmXceQt4JZk6lVPT8lnDlPpGDppw== + dependencies: + punycode "^2.1.1" + +tryer@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/tryer/-/tryer-1.0.1.tgz#f2c85406800b9b0f74c9f7465b81eaad241252f8" + integrity sha512-c3zayb8/kWWpycWYg87P71E1S1ZL6b6IJxfb5fvsUgsf0S2MVGaDhDXXjDMpdCpfWXqptc+4mXwmiy1ypXqRAA== + +ts-api-utils@^1.0.1: + version "1.0.3" + resolved "https://registry.yarnpkg.com/ts-api-utils/-/ts-api-utils-1.0.3.tgz#f12c1c781d04427313dbac808f453f050e54a331" + integrity sha512-wNMeqtMz5NtwpT/UZGY5alT+VoKdSsOOP/kqHFcUW1P/VRhH2wJ48+DN2WwUliNbQ976ETwDL0Ifd2VVvgonvg== + +ts-interface-checker@^0.1.9: + version "0.1.13" + resolved "https://registry.yarnpkg.com/ts-interface-checker/-/ts-interface-checker-0.1.13.tgz#784fd3d679722bc103b1b4b8030bcddb5db2a699" + integrity sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA== + +tsconfig-paths@^3.15.0: + version "3.15.0" + resolved "https://registry.yarnpkg.com/tsconfig-paths/-/tsconfig-paths-3.15.0.tgz#5299ec605e55b1abb23ec939ef15edaf483070d4" + integrity sha512-2Ac2RgzDe/cn48GvOe3M+o82pEFewD3UPbyoUHHdKasHwJKjds4fLXWf/Ux5kATBKN20oaFGu+jbElp1pos0mg== + dependencies: + "@types/json5" "^0.0.29" + json5 "^1.0.2" + minimist "^1.2.6" + strip-bom "^3.0.0" + +tslib@^1.8.1: + version "1.14.1" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00" + integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg== + +tslib@^2.0.3: + version "2.6.2" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.6.2.tgz#703ac29425e7b37cd6fd456e92404d46d1f3e4ae" + integrity sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q== + +tsutils@^3.21.0: + version "3.21.0" + resolved "https://registry.yarnpkg.com/tsutils/-/tsutils-3.21.0.tgz#b48717d394cea6c1e096983eed58e9d61715b623" + integrity sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA== + dependencies: + tslib "^1.8.1" + +type-check@^0.4.0, type-check@~0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.4.0.tgz#07b8203bfa7056c0657050e3ccd2c37730bab8f1" + integrity sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew== + dependencies: + prelude-ls "^1.2.1" + +type-check@~0.3.2: + version "0.3.2" + resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.3.2.tgz#5884cab512cf1d355e3fb784f30804b2b520db72" + integrity sha512-ZCmOJdvOWDBYJlzAoFkC+Q0+bUyEOS1ltgp1MGU03fqHG+dbi9tBFU2Rd9QKiDZFAYrhPh2JUf7rZRIuHRKtOg== + dependencies: + prelude-ls "~1.1.2" + +type-detect@4.0.8: + version "4.0.8" + resolved "https://registry.yarnpkg.com/type-detect/-/type-detect-4.0.8.tgz#7646fb5f18871cfbb7749e69bd39a6388eb7450c" + integrity sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g== + +type-fest@^0.16.0: + version "0.16.0" + resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.16.0.tgz#3240b891a78b0deae910dbeb86553e552a148860" + integrity sha512-eaBzG6MxNzEn9kiwvtre90cXaNLkmadMWa1zQMs3XORCXNbsH/OewwbxC5ia9dCxIxnTAsSxXJaa/p5y8DlvJg== + +type-fest@^0.20.2: + version "0.20.2" + resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.20.2.tgz#1bf207f4b28f91583666cb5fbd327887301cd5f4" + integrity sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ== + +type-fest@^0.21.3: + version "0.21.3" + resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.21.3.tgz#d260a24b0198436e133fa26a524a6d65fa3b2e37" + integrity sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w== + +type-is@~1.6.18: + version "1.6.18" + resolved "https://registry.yarnpkg.com/type-is/-/type-is-1.6.18.tgz#4e552cd05df09467dcbc4ef739de89f2cf37c131" + integrity sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g== + dependencies: + media-typer "0.3.0" + mime-types "~2.1.24" + +typed-array-buffer@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/typed-array-buffer/-/typed-array-buffer-1.0.0.tgz#18de3e7ed7974b0a729d3feecb94338d1472cd60" + integrity sha512-Y8KTSIglk9OZEr8zywiIHG/kmQ7KWyjseXs1CbSo8vC42w7hg2HgYTxSWwP0+is7bWDc1H+Fo026CpHFwm8tkw== + dependencies: + call-bind "^1.0.2" + get-intrinsic "^1.2.1" + is-typed-array "^1.1.10" + +typed-array-byte-length@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/typed-array-byte-length/-/typed-array-byte-length-1.0.0.tgz#d787a24a995711611fb2b87a4052799517b230d0" + integrity sha512-Or/+kvLxNpeQ9DtSydonMxCx+9ZXOswtwJn17SNLvhptaXYDJvkFFP5zbfU/uLmvnBJlI4yrnXRxpdWH/M5tNA== + dependencies: + call-bind "^1.0.2" + for-each "^0.3.3" + has-proto "^1.0.1" + is-typed-array "^1.1.10" + +typed-array-byte-offset@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/typed-array-byte-offset/-/typed-array-byte-offset-1.0.0.tgz#cbbe89b51fdef9cd6aaf07ad4707340abbc4ea0b" + integrity sha512-RD97prjEt9EL8YgAgpOkf3O4IF9lhJFr9g0htQkm0rchFp/Vx7LW5Q8fSXXub7BXAODyUQohRMyOc3faCPd0hg== + dependencies: + available-typed-arrays "^1.0.5" + call-bind "^1.0.2" + for-each "^0.3.3" + has-proto "^1.0.1" + is-typed-array "^1.1.10" + +typed-array-length@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/typed-array-length/-/typed-array-length-1.0.4.tgz#89d83785e5c4098bec72e08b319651f0eac9c1bb" + integrity sha512-KjZypGq+I/H7HI5HlOoGHkWUUGq+Q0TPhQurLbyrVrvnKTBgzLhIJ7j6J/XTQOi0d1RjyZ0wdas8bKs2p0x3Ng== + dependencies: + call-bind "^1.0.2" + for-each "^0.3.3" + is-typed-array "^1.1.9" + +typedarray-to-buffer@^3.1.5: + version "3.1.5" + resolved "https://registry.yarnpkg.com/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz#a97ee7a9ff42691b9f783ff1bc5112fe3fca9080" + integrity sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q== + dependencies: + is-typedarray "^1.0.0" + +typescript@^5.3.3: + version "5.3.3" + resolved "https://registry.yarnpkg.com/typescript/-/typescript-5.3.3.tgz#b3ce6ba258e72e6305ba66f5c9b452aaee3ffe37" + integrity sha512-pXWcraxM0uxAS+tN0AG/BF2TyqmHO014Z070UsJ+pFvYuRSq8KH8DmWpnbXe0pEPDHXZV3FcAbJkijJ5oNEnWw== + +unbox-primitive@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/unbox-primitive/-/unbox-primitive-1.0.2.tgz#29032021057d5e6cdbd08c5129c226dff8ed6f9e" + integrity sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw== + dependencies: + call-bind "^1.0.2" + has-bigints "^1.0.2" + has-symbols "^1.0.3" + which-boxed-primitive "^1.0.2" + +underscore@1.12.1: + version "1.12.1" + resolved "https://registry.yarnpkg.com/underscore/-/underscore-1.12.1.tgz#7bb8cc9b3d397e201cf8553336d262544ead829e" + integrity sha512-hEQt0+ZLDVUMhebKxL4x1BTtDY7bavVofhZ9KZ4aI26X9SRaE+Y3m83XUL1UP2jn8ynjndwCCpEHdUG+9pP1Tw== + +undici-types@~5.26.4: + version "5.26.5" + resolved "https://registry.yarnpkg.com/undici-types/-/undici-types-5.26.5.tgz#bcd539893d00b56e964fd2657a4866b221a65617" + integrity sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA== + +unicode-canonical-property-names-ecmascript@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.0.tgz#301acdc525631670d39f6146e0e77ff6bbdebddc" + integrity sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ== + +unicode-match-property-ecmascript@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-2.0.0.tgz#54fd16e0ecb167cf04cf1f756bdcc92eba7976c3" + integrity sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q== + dependencies: + unicode-canonical-property-names-ecmascript "^2.0.0" + unicode-property-aliases-ecmascript "^2.0.0" + +unicode-match-property-value-ecmascript@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.1.0.tgz#cb5fffdcd16a05124f5a4b0bf7c3770208acbbe0" + integrity sha512-qxkjQt6qjg/mYscYMC0XKRn3Rh0wFPlfxB0xkt9CfyTvpX1Ra0+rAmdX2QyAobptSEvuy4RtpPRui6XkV+8wjA== + +unicode-property-aliases-ecmascript@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.1.0.tgz#43d41e3be698bd493ef911077c9b131f827e8ccd" + integrity sha512-6t3foTQI9qne+OZoVQB/8x8rk2k1eVy1gRXhV3oFQ5T6R1dqQ1xtin3XqSlx3+ATBkliTaR/hHyJBm+LVPNM8w== + +unique-string@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/unique-string/-/unique-string-2.0.0.tgz#39c6451f81afb2749de2b233e3f7c5e8843bd89d" + integrity sha512-uNaeirEPvpZWSgzwsPGtU2zVSTrn/8L5q/IexZmH0eH6SA73CmAA5U4GwORTxQAZs95TAXLNqeLoPPNO5gZfWg== + dependencies: + crypto-random-string "^2.0.0" + +universalify@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/universalify/-/universalify-0.2.0.tgz#6451760566fa857534745ab1dde952d1b1761be0" + integrity sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg== + +universalify@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/universalify/-/universalify-2.0.1.tgz#168efc2180964e6386d061e094df61afe239b18d" + integrity sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw== + +unpipe@1.0.0, unpipe@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec" + integrity sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ== + +unquote@~1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/unquote/-/unquote-1.1.1.tgz#8fded7324ec6e88a0ff8b905e7c098cdc086d544" + integrity sha512-vRCqFv6UhXpWxZPyGDh/F3ZpNv8/qo7w6iufLpQg9aKnQ71qM4B5KiI7Mia9COcjEhrO9LueHpMYjYzsWH3OIg== + +upath@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/upath/-/upath-1.2.0.tgz#8f66dbcd55a883acdae4408af8b035a5044c1894" + integrity sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg== + +update-browserslist-db@^1.0.13: + version "1.0.13" + resolved "https://registry.yarnpkg.com/update-browserslist-db/-/update-browserslist-db-1.0.13.tgz#3c5e4f5c083661bd38ef64b6328c26ed6c8248c4" + integrity sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg== + dependencies: + escalade "^3.1.1" + picocolors "^1.0.0" + +uri-js@^4.2.2: + version "4.4.1" + resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.4.1.tgz#9b1a52595225859e55f669d928f88c6c57f2a77e" + integrity sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg== + dependencies: + punycode "^2.1.0" + +url-parse@^1.5.3: + version "1.5.10" + resolved "https://registry.yarnpkg.com/url-parse/-/url-parse-1.5.10.tgz#9d3c2f736c1d75dd3bd2be507dcc111f1e2ea9c1" + integrity sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ== + dependencies: + querystringify "^2.1.1" + requires-port "^1.0.0" + +util-deprecate@^1.0.1, util-deprecate@^1.0.2, util-deprecate@~1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" + integrity sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw== + +util.promisify@~1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/util.promisify/-/util.promisify-1.0.1.tgz#6baf7774b80eeb0f7520d8b81d07982a59abbaee" + integrity sha512-g9JpC/3He3bm38zsLupWryXHoEcS22YHthuPQSJdMy6KNrzIRzWqcsHzD/WUnqe45whVou4VIsPew37DoXWNrA== + dependencies: + define-properties "^1.1.3" + es-abstract "^1.17.2" + has-symbols "^1.0.1" + object.getownpropertydescriptors "^2.1.0" + +utila@~0.4: + version "0.4.0" + resolved "https://registry.yarnpkg.com/utila/-/utila-0.4.0.tgz#8a16a05d445657a3aea5eecc5b12a4fa5379772c" + integrity sha512-Z0DbgELS9/L/75wZbro8xAnT50pBVFQZ+hUEueGDU5FN51YSCYM+jdxsfCiHjwNP/4LCDD0i/graKpeBnOXKRA== + +utils-merge@1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/utils-merge/-/utils-merge-1.0.1.tgz#9f95710f50a267947b2ccc124741c1028427e713" + integrity sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA== + +uuid@^8.3.2: + version "8.3.2" + resolved "https://registry.yarnpkg.com/uuid/-/uuid-8.3.2.tgz#80d5b5ced271bb9af6c445f21a1a04c606cefbe2" + integrity sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg== + +v8-to-istanbul@^8.1.0: + version "8.1.1" + resolved "https://registry.yarnpkg.com/v8-to-istanbul/-/v8-to-istanbul-8.1.1.tgz#77b752fd3975e31bbcef938f85e9bd1c7a8d60ed" + integrity sha512-FGtKtv3xIpR6BYhvgH8MI/y78oT7d8Au3ww4QIxymrCtZEh5b8gCw2siywE+puhEmuWKDtmfrvF5UlB298ut3w== + dependencies: + "@types/istanbul-lib-coverage" "^2.0.1" + convert-source-map "^1.6.0" + source-map "^0.7.3" + +v8-to-istanbul@^9.0.1: + version "9.2.0" + resolved "https://registry.yarnpkg.com/v8-to-istanbul/-/v8-to-istanbul-9.2.0.tgz#2ed7644a245cddd83d4e087b9b33b3e62dfd10ad" + integrity sha512-/EH/sDgxU2eGxajKdwLCDmQ4FWq+kpi3uCmBGpw1xJtnAxEjlD8j8PEiGWpCIMIs3ciNAgH0d3TTJiUkYzyZjA== + dependencies: + "@jridgewell/trace-mapping" "^0.3.12" + "@types/istanbul-lib-coverage" "^2.0.1" + convert-source-map "^2.0.0" + +vary@~1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/vary/-/vary-1.1.2.tgz#2299f02c6ded30d4a5961b0b9f74524a18f634fc" + integrity sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg== + +vite@^5.0.12: + version "5.0.12" + resolved "https://registry.yarnpkg.com/vite/-/vite-5.0.12.tgz#8a2ffd4da36c132aec4adafe05d7adde38333c47" + integrity sha512-4hsnEkG3q0N4Tzf1+t6NdN9dg/L3BM+q8SWgbSPnJvrgH2kgdyzfVJwbR1ic69/4uMJJ/3dqDZZE5/WwqW8U1w== + dependencies: + esbuild "^0.19.3" + postcss "^8.4.32" + rollup "^4.2.0" + optionalDependencies: + fsevents "~2.3.3" + +void-elements@3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/void-elements/-/void-elements-3.1.0.tgz#614f7fbf8d801f0bb5f0661f5b2f5785750e4f09" + integrity sha512-Dhxzh5HZuiHQhbvTW9AMetFfBHDMYpo23Uo9btPXgdYP+3T5S+p+jgNy7spra+veYhBP2dCSgxR/i2Y02h5/6w== + +w3c-hr-time@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/w3c-hr-time/-/w3c-hr-time-1.0.2.tgz#0a89cdf5cc15822df9c360543676963e0cc308cd" + integrity sha512-z8P5DvDNjKDoFIHK7q8r8lackT6l+jo/Ye3HOle7l9nICP9lf1Ci25fy9vHd0JOWewkIFzXIEig3TdKT7JQ5fQ== + dependencies: + browser-process-hrtime "^1.0.0" + +w3c-xmlserializer@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/w3c-xmlserializer/-/w3c-xmlserializer-2.0.0.tgz#3e7104a05b75146cc60f564380b7f683acf1020a" + integrity sha512-4tzD0mF8iSiMiNs30BiLO3EpfGLZUT2MSX/G+o7ZywDzliWQ3OPtTZ0PTC3B3ca1UAf4cJMHB+2Bf56EriJuRA== + dependencies: + xml-name-validator "^3.0.0" + +walker@^1.0.7, walker@^1.0.8: + version "1.0.8" + resolved "https://registry.yarnpkg.com/walker/-/walker-1.0.8.tgz#bd498db477afe573dc04185f011d3ab8a8d7653f" + integrity sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ== + dependencies: + makeerror "1.0.12" + +watchpack@^2.4.0: + version "2.4.0" + resolved "https://registry.yarnpkg.com/watchpack/-/watchpack-2.4.0.tgz#fa33032374962c78113f93c7f2fb4c54c9862a5d" + integrity sha512-Lcvm7MGST/4fup+ifyKi2hjyIAwcdI4HRgtvTpIUxBRhB+RFtUh8XtDOxUfctVCnhVi+QQj49i91OyvzkJl6cg== + dependencies: + glob-to-regexp "^0.4.1" + graceful-fs "^4.1.2" + +wbuf@^1.1.0, wbuf@^1.7.3: + version "1.7.3" + resolved "https://registry.yarnpkg.com/wbuf/-/wbuf-1.7.3.tgz#c1d8d149316d3ea852848895cb6a0bfe887b87df" + integrity sha512-O84QOnr0icsbFGLS0O3bI5FswxzRr8/gHwWkDlQFskhSPryQXvrTMxjxGP4+iWYoauLoBvfDpkrOauZ+0iZpDA== + dependencies: + minimalistic-assert "^1.0.0" + +webidl-conversions@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-4.0.2.tgz#a855980b1f0b6b359ba1d5d9fb39ae941faa63ad" + integrity sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg== + +webidl-conversions@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-5.0.0.tgz#ae59c8a00b121543a2acc65c0434f57b0fc11aff" + integrity sha512-VlZwKPCkYKxQgeSbH5EyngOmRp7Ww7I9rQLERETtf5ofd9pGeswWiOtogpEO850jziPRarreGxn5QIiTqpb2wA== + +webidl-conversions@^6.1.0: + version "6.1.0" + resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-6.1.0.tgz#9111b4d7ea80acd40f5270d666621afa78b69514" + integrity sha512-qBIvFLGiBpLjfwmYAaHPXsn+ho5xZnGvyGvsarywGNc8VyQJUMHJ8OBKGGrPER0okBeMDaan4mNBlgBROxuI8w== + +webpack-dev-middleware@^5.3.1: + version "5.3.3" + resolved "https://registry.yarnpkg.com/webpack-dev-middleware/-/webpack-dev-middleware-5.3.3.tgz#efae67c2793908e7311f1d9b06f2a08dcc97e51f" + integrity sha512-hj5CYrY0bZLB+eTO+x/j67Pkrquiy7kWepMHmUMoPsmcUaeEnQJqFzHJOyxgWlq746/wUuA64p9ta34Kyb01pA== + dependencies: + colorette "^2.0.10" + memfs "^3.4.3" + mime-types "^2.1.31" + range-parser "^1.2.1" + schema-utils "^4.0.0" + +webpack-dev-server@^4.6.0: + version "4.15.1" + resolved "https://registry.yarnpkg.com/webpack-dev-server/-/webpack-dev-server-4.15.1.tgz#8944b29c12760b3a45bdaa70799b17cb91b03df7" + integrity sha512-5hbAst3h3C3L8w6W4P96L5vaV0PxSmJhxZvWKYIdgxOQm8pNZ5dEOmmSLBVpP85ReeyRt6AS1QJNyo/oFFPeVA== + dependencies: + "@types/bonjour" "^3.5.9" + "@types/connect-history-api-fallback" "^1.3.5" + "@types/express" "^4.17.13" + "@types/serve-index" "^1.9.1" + "@types/serve-static" "^1.13.10" + "@types/sockjs" "^0.3.33" + "@types/ws" "^8.5.5" + ansi-html-community "^0.0.8" + bonjour-service "^1.0.11" + chokidar "^3.5.3" + colorette "^2.0.10" + compression "^1.7.4" + connect-history-api-fallback "^2.0.0" + default-gateway "^6.0.3" + express "^4.17.3" + graceful-fs "^4.2.6" + html-entities "^2.3.2" + http-proxy-middleware "^2.0.3" + ipaddr.js "^2.0.1" + launch-editor "^2.6.0" + open "^8.0.9" + p-retry "^4.5.0" + rimraf "^3.0.2" + schema-utils "^4.0.0" + selfsigned "^2.1.1" + serve-index "^1.9.1" + sockjs "^0.3.24" + spdy "^4.0.2" + webpack-dev-middleware "^5.3.1" + ws "^8.13.0" + +webpack-manifest-plugin@^4.0.2: + version "4.1.1" + resolved "https://registry.yarnpkg.com/webpack-manifest-plugin/-/webpack-manifest-plugin-4.1.1.tgz#10f8dbf4714ff93a215d5a45bcc416d80506f94f" + integrity sha512-YXUAwxtfKIJIKkhg03MKuiFAD72PlrqCiwdwO4VEXdRO5V0ORCNwaOwAZawPZalCbmH9kBDmXnNeQOw+BIEiow== + dependencies: + tapable "^2.0.0" + webpack-sources "^2.2.0" + +webpack-sources@^1.4.3: + version "1.4.3" + resolved "https://registry.yarnpkg.com/webpack-sources/-/webpack-sources-1.4.3.tgz#eedd8ec0b928fbf1cbfe994e22d2d890f330a933" + integrity sha512-lgTS3Xhv1lCOKo7SA5TjKXMjpSM4sBjNV5+q2bqesbSPs5FjGmU6jjtBSkX9b4qW87vDIsCIlUPOEhbZrMdjeQ== + dependencies: + source-list-map "^2.0.0" + source-map "~0.6.1" + +webpack-sources@^2.2.0: + version "2.3.1" + resolved "https://registry.yarnpkg.com/webpack-sources/-/webpack-sources-2.3.1.tgz#570de0af163949fe272233c2cefe1b56f74511fd" + integrity sha512-y9EI9AO42JjEcrTJFOYmVywVZdKVUfOvDUPsJea5GIr1JOEGFVqwlY2K098fFoIjOkDzHn2AjRvM8dsBZu+gCA== + dependencies: + source-list-map "^2.0.1" + source-map "^0.6.1" + +webpack-sources@^3.2.3: + version "3.2.3" + resolved "https://registry.yarnpkg.com/webpack-sources/-/webpack-sources-3.2.3.tgz#2d4daab8451fd4b240cc27055ff6a0c2ccea0cde" + integrity sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w== + +webpack@^5.64.4: + version "5.90.0" + resolved "https://registry.yarnpkg.com/webpack/-/webpack-5.90.0.tgz#313bfe16080d8b2fee6e29b6c986c0714ad4290e" + integrity sha512-bdmyXRCXeeNIePv6R6tGPyy20aUobw4Zy8r0LUS2EWO+U+Ke/gYDgsCh7bl5rB6jPpr4r0SZa6dPxBxLooDT3w== + dependencies: + "@types/eslint-scope" "^3.7.3" + "@types/estree" "^1.0.5" + "@webassemblyjs/ast" "^1.11.5" + "@webassemblyjs/wasm-edit" "^1.11.5" + "@webassemblyjs/wasm-parser" "^1.11.5" + acorn "^8.7.1" + acorn-import-assertions "^1.9.0" + browserslist "^4.21.10" + chrome-trace-event "^1.0.2" + enhanced-resolve "^5.15.0" + es-module-lexer "^1.2.1" + eslint-scope "5.1.1" + events "^3.2.0" + glob-to-regexp "^0.4.1" + graceful-fs "^4.2.9" + json-parse-even-better-errors "^2.3.1" + loader-runner "^4.2.0" + mime-types "^2.1.27" + neo-async "^2.6.2" + schema-utils "^3.2.0" + tapable "^2.1.1" + terser-webpack-plugin "^5.3.10" + watchpack "^2.4.0" + webpack-sources "^3.2.3" + +websocket-driver@>=0.5.1, websocket-driver@^0.7.4: + version "0.7.4" + resolved "https://registry.yarnpkg.com/websocket-driver/-/websocket-driver-0.7.4.tgz#89ad5295bbf64b480abcba31e4953aca706f5760" + integrity sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg== + dependencies: + http-parser-js ">=0.5.1" + safe-buffer ">=5.1.0" + websocket-extensions ">=0.1.1" + +websocket-extensions@>=0.1.1: + version "0.1.4" + resolved "https://registry.yarnpkg.com/websocket-extensions/-/websocket-extensions-0.1.4.tgz#7f8473bc839dfd87608adb95d7eb075211578a42" + integrity sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg== + +whatwg-encoding@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/whatwg-encoding/-/whatwg-encoding-1.0.5.tgz#5abacf777c32166a51d085d6b4f3e7d27113ddb0" + integrity sha512-b5lim54JOPN9HtzvK9HFXvBma/rnfFeqsic0hSpjtDbVxR3dJKLc+KB4V6GgiGOvl7CY/KNh8rxSo9DKQrnUEw== + dependencies: + iconv-lite "0.4.24" + +whatwg-fetch@^3.6.2: + version "3.6.20" + resolved "https://registry.yarnpkg.com/whatwg-fetch/-/whatwg-fetch-3.6.20.tgz#580ce6d791facec91d37c72890995a0b48d31c70" + integrity sha512-EqhiFU6daOA8kpjOWTL0olhVOF3i7OrFzSYiGsEMB8GcXS+RrzauAERX65xMeNWVqxA6HXH2m69Z9LaKKdisfg== + +whatwg-mimetype@^2.3.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/whatwg-mimetype/-/whatwg-mimetype-2.3.0.tgz#3d4b1e0312d2079879f826aff18dbeeca5960fbf" + integrity sha512-M4yMwr6mAnQz76TbJm914+gPpB/nCwvZbJU28cUD6dR004SAxDLOOSUaB1JDRqLtaOV/vi0IC5lEAGFgrjGv/g== + +whatwg-url@^7.0.0: + version "7.1.0" + resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-7.1.0.tgz#c2c492f1eca612988efd3d2266be1b9fc6170d06" + integrity sha512-WUu7Rg1DroM7oQvGWfOiAK21n74Gg+T4elXEQYkOhtyLeWiJFoOGLXPKI/9gzIie9CtwVLm8wtw6YJdKyxSjeg== + dependencies: + lodash.sortby "^4.7.0" + tr46 "^1.0.1" + webidl-conversions "^4.0.2" + +whatwg-url@^8.0.0, whatwg-url@^8.5.0: + version "8.7.0" + resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-8.7.0.tgz#656a78e510ff8f3937bc0bcbe9f5c0ac35941b77" + integrity sha512-gAojqb/m9Q8a5IV96E3fHJM70AzCkgt4uXYX2O7EmuyOnLrViCQlsEBmF9UQIu3/aeAIp2U17rtbpZWNntQqdg== + dependencies: + lodash "^4.7.0" + tr46 "^2.1.0" + webidl-conversions "^6.1.0" + +which-boxed-primitive@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz#13757bc89b209b049fe5d86430e21cf40a89a8e6" + integrity sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg== + dependencies: + is-bigint "^1.0.1" + is-boolean-object "^1.1.0" + is-number-object "^1.0.4" + is-string "^1.0.5" + is-symbol "^1.0.3" + +which-builtin-type@^1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/which-builtin-type/-/which-builtin-type-1.1.3.tgz#b1b8443707cc58b6e9bf98d32110ff0c2cbd029b" + integrity sha512-YmjsSMDBYsM1CaFiayOVT06+KJeXf0o5M/CAd4o1lTadFAtacTUM49zoYxr/oroopFDfhvN6iEcBxUyc3gvKmw== + dependencies: + function.prototype.name "^1.1.5" + has-tostringtag "^1.0.0" + is-async-function "^2.0.0" + is-date-object "^1.0.5" + is-finalizationregistry "^1.0.2" + is-generator-function "^1.0.10" + is-regex "^1.1.4" + is-weakref "^1.0.2" + isarray "^2.0.5" + which-boxed-primitive "^1.0.2" + which-collection "^1.0.1" + which-typed-array "^1.1.9" + +which-collection@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/which-collection/-/which-collection-1.0.1.tgz#70eab71ebbbd2aefaf32f917082fc62cdcb70906" + integrity sha512-W8xeTUwaln8i3K/cY1nGXzdnVZlidBcagyNFtBdD5kxnb4TvGKR7FfSIS3mYpwWS1QUCutfKz8IY8RjftB0+1A== + dependencies: + is-map "^2.0.1" + is-set "^2.0.1" + is-weakmap "^2.0.1" + is-weakset "^2.0.1" + +which-typed-array@^1.1.11, which-typed-array@^1.1.13, which-typed-array@^1.1.9: + version "1.1.13" + resolved "https://registry.yarnpkg.com/which-typed-array/-/which-typed-array-1.1.13.tgz#870cd5be06ddb616f504e7b039c4c24898184d36" + integrity sha512-P5Nra0qjSncduVPEAr7xhoF5guty49ArDTwzJ/yNuPIbZppyRxFQsRCWrocxIY+CnMVG+qfbU2FmDKyvSGClow== + dependencies: + available-typed-arrays "^1.0.5" + call-bind "^1.0.4" + for-each "^0.3.3" + gopd "^1.0.1" + has-tostringtag "^1.0.0" + +which@^1.2.9, which@^1.3.1: + version "1.3.1" + resolved "https://registry.yarnpkg.com/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a" + integrity sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ== + dependencies: + isexe "^2.0.0" + +which@^2.0.1: + version "2.0.2" + resolved "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1" + integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA== + dependencies: + isexe "^2.0.0" + +word-wrap@~1.2.3: + version "1.2.5" + resolved "https://registry.yarnpkg.com/word-wrap/-/word-wrap-1.2.5.tgz#d2c45c6dd4fbce621a66f136cbe328afd0410b34" + integrity sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA== + +workbox-background-sync@6.6.1: + version "6.6.1" + resolved "https://registry.yarnpkg.com/workbox-background-sync/-/workbox-background-sync-6.6.1.tgz#08d603a33717ce663e718c30cc336f74909aff2f" + integrity sha512-trJd3ovpWCvzu4sW0E8rV3FUyIcC0W8G+AZ+VcqzzA890AsWZlUGOTSxIMmIHVusUw/FDq1HFWfy/kC/WTRqSg== + dependencies: + idb "^7.0.1" + workbox-core "6.6.1" + +workbox-broadcast-update@6.6.1: + version "6.6.1" + resolved "https://registry.yarnpkg.com/workbox-broadcast-update/-/workbox-broadcast-update-6.6.1.tgz#0fad9454cf8e4ace0c293e5617c64c75d8a8c61e" + integrity sha512-fBhffRdaANdeQ1V8s692R9l/gzvjjRtydBOvR6WCSB0BNE2BacA29Z4r9/RHd9KaXCPl6JTdI9q0bR25YKP8TQ== + dependencies: + workbox-core "6.6.1" + +workbox-build@6.6.1: + version "6.6.1" + resolved "https://registry.yarnpkg.com/workbox-build/-/workbox-build-6.6.1.tgz#6010e9ce550910156761448f2dbea8cfcf759cb0" + integrity sha512-INPgDx6aRycAugUixbKgiEQBWD0MPZqU5r0jyr24CehvNuLPSXp/wGOpdRJmts656lNiXwqV7dC2nzyrzWEDnw== + dependencies: + "@apideck/better-ajv-errors" "^0.3.1" + "@babel/core" "^7.11.1" + "@babel/preset-env" "^7.11.0" + "@babel/runtime" "^7.11.2" + "@rollup/plugin-babel" "^5.2.0" + "@rollup/plugin-node-resolve" "^11.2.1" + "@rollup/plugin-replace" "^2.4.1" + "@surma/rollup-plugin-off-main-thread" "^2.2.3" + ajv "^8.6.0" + common-tags "^1.8.0" + fast-json-stable-stringify "^2.1.0" + fs-extra "^9.0.1" + glob "^7.1.6" + lodash "^4.17.20" + pretty-bytes "^5.3.0" + rollup "^2.43.1" + rollup-plugin-terser "^7.0.0" + source-map "^0.8.0-beta.0" + stringify-object "^3.3.0" + strip-comments "^2.0.1" + tempy "^0.6.0" + upath "^1.2.0" + workbox-background-sync "6.6.1" + workbox-broadcast-update "6.6.1" + workbox-cacheable-response "6.6.1" + workbox-core "6.6.1" + workbox-expiration "6.6.1" + workbox-google-analytics "6.6.1" + workbox-navigation-preload "6.6.1" + workbox-precaching "6.6.1" + workbox-range-requests "6.6.1" + workbox-recipes "6.6.1" + workbox-routing "6.6.1" + workbox-strategies "6.6.1" + workbox-streams "6.6.1" + workbox-sw "6.6.1" + workbox-window "6.6.1" + +workbox-cacheable-response@6.6.1: + version "6.6.1" + resolved "https://registry.yarnpkg.com/workbox-cacheable-response/-/workbox-cacheable-response-6.6.1.tgz#284c2b86be3f4fd191970ace8c8e99797bcf58e9" + integrity sha512-85LY4veT2CnTCDxaVG7ft3NKaFbH6i4urZXgLiU4AiwvKqS2ChL6/eILiGRYXfZ6gAwDnh5RkuDbr/GMS4KSag== + dependencies: + workbox-core "6.6.1" + +workbox-core@6.6.1: + version "6.6.1" + resolved "https://registry.yarnpkg.com/workbox-core/-/workbox-core-6.6.1.tgz#7184776d4134c5ed2f086878c882728fc9084265" + integrity sha512-ZrGBXjjaJLqzVothoE12qTbVnOAjFrHDXpZe7coCb6q65qI/59rDLwuFMO4PcZ7jcbxY+0+NhUVztzR/CbjEFw== + +workbox-expiration@6.6.1: + version "6.6.1" + resolved "https://registry.yarnpkg.com/workbox-expiration/-/workbox-expiration-6.6.1.tgz#a841fa36676104426dbfb9da1ef6a630b4f93739" + integrity sha512-qFiNeeINndiOxaCrd2DeL1Xh1RFug3JonzjxUHc5WkvkD2u5abY3gZL1xSUNt3vZKsFFGGORItSjVTVnWAZO4A== + dependencies: + idb "^7.0.1" + workbox-core "6.6.1" + +workbox-google-analytics@6.6.1: + version "6.6.1" + resolved "https://registry.yarnpkg.com/workbox-google-analytics/-/workbox-google-analytics-6.6.1.tgz#a07a6655ab33d89d1b0b0a935ffa5dea88618c5d" + integrity sha512-1TjSvbFSLmkpqLcBsF7FuGqqeDsf+uAXO/pjiINQKg3b1GN0nBngnxLcXDYo1n/XxK4N7RaRrpRlkwjY/3ocuA== + dependencies: + workbox-background-sync "6.6.1" + workbox-core "6.6.1" + workbox-routing "6.6.1" + workbox-strategies "6.6.1" + +workbox-navigation-preload@6.6.1: + version "6.6.1" + resolved "https://registry.yarnpkg.com/workbox-navigation-preload/-/workbox-navigation-preload-6.6.1.tgz#61a34fe125558dd88cf09237f11bd966504ea059" + integrity sha512-DQCZowCecO+wRoIxJI2V6bXWK6/53ff+hEXLGlQL4Rp9ZaPDLrgV/32nxwWIP7QpWDkVEtllTAK5h6cnhxNxDA== + dependencies: + workbox-core "6.6.1" + +workbox-precaching@6.6.1: + version "6.6.1" + resolved "https://registry.yarnpkg.com/workbox-precaching/-/workbox-precaching-6.6.1.tgz#dedeeba10a2d163d990bf99f1c2066ac0d1a19e2" + integrity sha512-K4znSJ7IKxCnCYEdhNkMr7X1kNh8cz+mFgx9v5jFdz1MfI84pq8C2zG+oAoeE5kFrUf7YkT5x4uLWBNg0DVZ5A== + dependencies: + workbox-core "6.6.1" + workbox-routing "6.6.1" + workbox-strategies "6.6.1" + +workbox-range-requests@6.6.1: + version "6.6.1" + resolved "https://registry.yarnpkg.com/workbox-range-requests/-/workbox-range-requests-6.6.1.tgz#ddaf7e73af11d362fbb2f136a9063a4c7f507a39" + integrity sha512-4BDzk28govqzg2ZpX0IFkthdRmCKgAKreontYRC5YsAPB2jDtPNxqx3WtTXgHw1NZalXpcH/E4LqUa9+2xbv1g== + dependencies: + workbox-core "6.6.1" + +workbox-recipes@6.6.1: + version "6.6.1" + resolved "https://registry.yarnpkg.com/workbox-recipes/-/workbox-recipes-6.6.1.tgz#ea70d2b2b0b0bce8de0a9d94f274d4a688e69fae" + integrity sha512-/oy8vCSzromXokDA+X+VgpeZJvtuf8SkQ8KL0xmRivMgJZrjwM3c2tpKTJn6PZA6TsbxGs3Sc7KwMoZVamcV2g== + dependencies: + workbox-cacheable-response "6.6.1" + workbox-core "6.6.1" + workbox-expiration "6.6.1" + workbox-precaching "6.6.1" + workbox-routing "6.6.1" + workbox-strategies "6.6.1" + +workbox-routing@6.6.1: + version "6.6.1" + resolved "https://registry.yarnpkg.com/workbox-routing/-/workbox-routing-6.6.1.tgz#cba9a1c7e0d1ea11e24b6f8c518840efdc94f581" + integrity sha512-j4ohlQvfpVdoR8vDYxTY9rA9VvxTHogkIDwGdJ+rb2VRZQ5vt1CWwUUZBeD/WGFAni12jD1HlMXvJ8JS7aBWTg== + dependencies: + workbox-core "6.6.1" + +workbox-strategies@6.6.1: + version "6.6.1" + resolved "https://registry.yarnpkg.com/workbox-strategies/-/workbox-strategies-6.6.1.tgz#38d0f0fbdddba97bd92e0c6418d0b1a2ccd5b8bf" + integrity sha512-WQLXkRnsk4L81fVPkkgon1rZNxnpdO5LsO+ws7tYBC6QQQFJVI6v98klrJEjFtZwzw/mB/HT5yVp7CcX0O+mrw== + dependencies: + workbox-core "6.6.1" + +workbox-streams@6.6.1: + version "6.6.1" + resolved "https://registry.yarnpkg.com/workbox-streams/-/workbox-streams-6.6.1.tgz#b2f7ba7b315c27a6e3a96a476593f99c5d227d26" + integrity sha512-maKG65FUq9e4BLotSKWSTzeF0sgctQdYyTMq529piEN24Dlu9b6WhrAfRpHdCncRS89Zi2QVpW5V33NX8PgH3Q== + dependencies: + workbox-core "6.6.1" + workbox-routing "6.6.1" + +workbox-sw@6.6.1: + version "6.6.1" + resolved "https://registry.yarnpkg.com/workbox-sw/-/workbox-sw-6.6.1.tgz#d4c4ca3125088e8b9fd7a748ed537fa0247bd72c" + integrity sha512-R7whwjvU2abHH/lR6kQTTXLHDFU2izht9kJOvBRYK65FbwutT4VvnUAJIgHvfWZ/fokrOPhfoWYoPCMpSgUKHQ== + +workbox-webpack-plugin@^6.4.1: + version "6.6.1" + resolved "https://registry.yarnpkg.com/workbox-webpack-plugin/-/workbox-webpack-plugin-6.6.1.tgz#4f81cc1ad4e5d2cd7477a86ba83c84ee2d187531" + integrity sha512-zpZ+ExFj9NmiI66cFEApyjk7hGsfJ1YMOaLXGXBoZf0v7Iu6hL0ZBe+83mnDq3YYWAfA3fnyFejritjOHkFcrA== + dependencies: + fast-json-stable-stringify "^2.1.0" + pretty-bytes "^5.4.1" + upath "^1.2.0" + webpack-sources "^1.4.3" + workbox-build "6.6.1" + +workbox-window@6.6.1: + version "6.6.1" + resolved "https://registry.yarnpkg.com/workbox-window/-/workbox-window-6.6.1.tgz#f22a394cbac36240d0dadcbdebc35f711bb7b89e" + integrity sha512-wil4nwOY58nTdCvif/KEZjQ2NP8uk3gGeRNy2jPBbzypU4BT4D9L8xiwbmDBpZlSgJd2xsT9FvSNU0gsxV51JQ== + dependencies: + "@types/trusted-types" "^2.0.2" + workbox-core "6.6.1" + +"wrap-ansi-cjs@npm:wrap-ansi@^7.0.0", wrap-ansi@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43" + integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== + dependencies: + ansi-styles "^4.0.0" + string-width "^4.1.0" + strip-ansi "^6.0.0" + +wrap-ansi@^8.1.0: + version "8.1.0" + resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-8.1.0.tgz#56dc22368ee570face1b49819975d9b9a5ead214" + integrity sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ== + dependencies: + ansi-styles "^6.1.0" + string-width "^5.0.1" + strip-ansi "^7.0.1" + +wrappy@1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" + integrity sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ== + +write-file-atomic@^3.0.0: + version "3.0.3" + resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-3.0.3.tgz#56bd5c5a5c70481cd19c571bd39ab965a5de56e8" + integrity sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q== + dependencies: + imurmurhash "^0.1.4" + is-typedarray "^1.0.0" + signal-exit "^3.0.2" + typedarray-to-buffer "^3.1.5" + +write-file-atomic@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-4.0.2.tgz#a9df01ae5b77858a027fd2e80768ee433555fcfd" + integrity sha512-7KxauUdBmSdWnmpaGFg+ppNjKF8uNLry8LyzjauQDOVONfFLNKrKvQOxZ/VuTIcS/gge/YNahf5RIIQWTSarlg== + dependencies: + imurmurhash "^0.1.4" + signal-exit "^3.0.7" + +ws@^7.4.6: + version "7.5.9" + resolved "https://registry.yarnpkg.com/ws/-/ws-7.5.9.tgz#54fa7db29f4c7cec68b1ddd3a89de099942bb591" + integrity sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q== + +ws@^8.13.0: + version "8.16.0" + resolved "https://registry.yarnpkg.com/ws/-/ws-8.16.0.tgz#d1cd774f36fbc07165066a60e40323eab6446fd4" + integrity sha512-HS0c//TP7Ina87TfiPUz1rQzMhHrl/SG2guqRcTOIUYD2q8uhUdNHZYJUaQ8aTGPzCh+c6oawMKW35nFl1dxyQ== + +xml-name-validator@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/xml-name-validator/-/xml-name-validator-3.0.0.tgz#6ae73e06de4d8c6e47f9fb181f78d648ad457c6a" + integrity sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw== + +xmlchars@^2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/xmlchars/-/xmlchars-2.2.0.tgz#060fe1bcb7f9c76fe2a17db86a9bc3ab894210cb" + integrity sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw== + +y18n@^5.0.5: + version "5.0.8" + resolved "https://registry.yarnpkg.com/y18n/-/y18n-5.0.8.tgz#7f4934d0f7ca8c56f95314939ddcd2dd91ce1d55" + integrity sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA== + +yallist@^2.1.2: + version "2.1.2" + resolved "https://registry.yarnpkg.com/yallist/-/yallist-2.1.2.tgz#1c11f9218f076089a47dd512f93c6699a6a81d52" + integrity sha512-ncTzHV7NvsQZkYe1DW7cbDLm0YpzHmZF5r/iyP3ZnQtMiJ+pjzisCiMNI+Sj+xQF5pXhSHxSB3uDbsBTzY/c2A== + +yallist@^3.0.2: + version "3.1.1" + resolved "https://registry.yarnpkg.com/yallist/-/yallist-3.1.1.tgz#dbb7daf9bfd8bac9ab45ebf602b8cbad0d5d08fd" + integrity sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g== + +yallist@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/yallist/-/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72" + integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A== + +yaml@^1.10.0, yaml@^1.10.2, yaml@^1.7.2: + version "1.10.2" + resolved "https://registry.yarnpkg.com/yaml/-/yaml-1.10.2.tgz#2301c5ffbf12b467de8da2333a459e29e7920e4b" + integrity sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg== + +yaml@^2.3.4: + version "2.3.4" + resolved "https://registry.yarnpkg.com/yaml/-/yaml-2.3.4.tgz#53fc1d514be80aabf386dc6001eb29bf3b7523b2" + integrity sha512-8aAvwVUSHpfEqTQ4w/KMlf3HcRdt50E5ODIQJBw1fQ5RL34xabzxtUlzTXVqc4rkZsPbvrXKWnABCD7kWSmocA== + +yargs-parser@^20.2.2: + version "20.2.9" + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-20.2.9.tgz#2eb7dc3b0289718fc295f362753845c41a0c94ee" + integrity sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w== + +yargs-parser@^21.1.1: + version "21.1.1" + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-21.1.1.tgz#9096bceebf990d21bb31fa9516e0ede294a77d35" + integrity sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw== + +yargs@^16.2.0: + version "16.2.0" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-16.2.0.tgz#1c82bf0f6b6a66eafce7ef30e376f49a12477f66" + integrity sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw== + dependencies: + cliui "^7.0.2" + escalade "^3.1.1" + get-caller-file "^2.0.5" + require-directory "^2.1.1" + string-width "^4.2.0" + y18n "^5.0.5" + yargs-parser "^20.2.2" + +yargs@^17.3.1: + version "17.7.2" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-17.7.2.tgz#991df39aca675a192b816e1e0363f9d75d2aa269" + integrity sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w== + dependencies: + cliui "^8.0.1" + escalade "^3.1.1" + get-caller-file "^2.0.5" + require-directory "^2.1.1" + string-width "^4.2.3" + y18n "^5.0.5" + yargs-parser "^21.1.1" + +yarn-audit-fix@^10.0.7: + version "10.0.7" + resolved "https://registry.yarnpkg.com/yarn-audit-fix/-/yarn-audit-fix-10.0.7.tgz#a775e30b5790eb1fdec1dea536e68fa1baa7fc35" + integrity sha512-JC6Uu/GAY/cG5k4GZDZk2MgmygiN+FY/mSM1fKY2w6myBg/qVdI/jDeOCsbsuHXf0TsMpd2LcF8yGwqvQ+X4Kw== + dependencies: + "@types/fs-extra" "^11.0.1" + "@types/lodash-es" "^4.17.8" + "@types/semver" "^7.5.0" + "@types/yarnpkg__lockfile" "^1.1.6" + "@yarnpkg/lockfile" "^1.1.0" + chalk "^5.3.0" + commander "^11.0.0" + fast-glob "^3.3.1" + fs-extra "^11.1.1" + js-yaml "^4.1.0" + lodash-es "^4.17.21" + semver "^7.5.4" + synp "^1.9.10" + +yocto-queue@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/yocto-queue/-/yocto-queue-0.1.0.tgz#0294eb3dee05028d31ee1a5fa2c556a6aaf10a1b" + integrity sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q== From 0d7110a2b6aa802a37562ccfcffb1f6ee82b3997 Mon Sep 17 00:00:00 2001 From: daileytj Date: Wed, 31 Jan 2024 08:36:45 -0500 Subject: [PATCH 11/87] Update scripts to link workflows and start example-vite --- login-workflow/package.json | 4 ++- login-workflow/scripts/linkWorkflowVite.sh | 32 ++++++++++++++++++++++ 2 files changed, 35 insertions(+), 1 deletion(-) create mode 100644 login-workflow/scripts/linkWorkflowVite.sh diff --git a/login-workflow/package.json b/login-workflow/package.json index c9e75081..3b13ad8b 100644 --- a/login-workflow/package.json +++ b/login-workflow/package.json @@ -6,14 +6,16 @@ "description": "Re-usable workflow components for Authentication and Registration within Eaton applications.", "main": "dist/index.js", "scripts": { - "install:dependencies": "cd example && yarn && cd .. && yarn", + "install:dependencies": "cd example && yarn && cd .. && cd example-vite && yarn && cd .. && yarn", "test": "jest --maxWorkers=50%", "test:ci": "jest", "build": "tsc --p tsconfig.lib.json && cp -r src/assets/. dist/assets && cp -r src/index.css dist/index.css", "link:workflow": "bash ./scripts/linkWorkflow.sh", + "link:workflowVite": "bash ./scripts/linkWorkflowVite.sh", "lint": "eslint \"src/**/**.{tsx,ts}\"", "lint:fix": "eslint \"src/**/**.{tsx,ts}\" --fix", "start:example": "yarn install:dependencies && yarn link:workflow && cd example && yarn start", + "start:example-vite": "yarn install:dependencies && yarn link:workflowVite && cd example-vite && yarn start", "prettier": "prettier \"**/**.{ts,tsx,js,jsx,json,css,scss,html}\" --write", "prettier:check": "prettier \"**/**.{ts,tsx,js,jsx,json,css,scss,html}\" --check", "publish:package": "set npm_config_yes=true && npx -p @brightlayer-ui/publish blui-publish", diff --git a/login-workflow/scripts/linkWorkflowVite.sh b/login-workflow/scripts/linkWorkflowVite.sh new file mode 100644 index 00000000..3ab796c3 --- /dev/null +++ b/login-workflow/scripts/linkWorkflowVite.sh @@ -0,0 +1,32 @@ +#!/bin/bash +BLUE='\033[0;34m' +BBLUE='\033[1;34m' #BOLD +PURPLE='\033[0;35m' +RED='\033[0;31m' +BRED='\033[1;31m' #BOLD +GREEN='\033[0;32m' +BGREEN='\033[1;32m' #BOLD +GRAY='\033[1;30m' +NC='\033[0m' # No Color + +echo -e "${BLUE}Building workflow package...${NC}" +yarn build + +echo -en "${BLUE}Creating new folder in node_modules...${NC}" +rm -rf "./example-vite/node_modules/.cache" +rm -rf "./example-vite/node_modules/@brightlayer-ui/react-auth-workflow" +mkdir -p "./example-vite/node_modules/@brightlayer-ui/react-auth-workflow" + +echo -en "${BLUE}Copying build output into node_modules...${NC}"; +cp -r ./package.json ./example-vite/node_modules/@brightlayer-ui/react-auth-workflow/package.json +cp -r ./dist/. ./example-vite/node_modules/@brightlayer-ui/react-auth-workflow/dist + +echo -en "\r\n${BLUE}Linking Components: ${NC}" +if [ ! -f ./example-vite/node_modules/@brightlayer-ui/react-auth-workflow/package.json ]; then echo -e "${BRED}Not Linked${NC}" && exit 1; fi +if [ ! -s ./example-vite/node_modules/@brightlayer-ui/react-auth-workflow ]; + then + if [ ! -f ./example-vite/node_modules/@brightlayer-ui/react-auth-workflow/dist/index.js ]; + then echo -e "${BRED}Not Linked${NC}" && exit 1; + fi; +fi +echo -e "${GRAY}Complete${NC}\r\n" \ No newline at end of file From 23d8de2903e74a23684385f65a4aa12b59c7c53d Mon Sep 17 00:00:00 2001 From: daileytj Date: Wed, 31 Jan 2024 10:49:56 -0500 Subject: [PATCH 12/87] Fix linting and prettier issues --- .../contexts/{AppContextProvider.tsx => AppContextProvider.ts} | 0 login-workflow/example-vite/src/index.css | 2 +- login-workflow/example-vite/src/screens/ExampleHome.tsx | 2 +- 3 files changed, 2 insertions(+), 2 deletions(-) rename login-workflow/example-vite/src/contexts/{AppContextProvider.tsx => AppContextProvider.ts} (100%) diff --git a/login-workflow/example-vite/src/contexts/AppContextProvider.tsx b/login-workflow/example-vite/src/contexts/AppContextProvider.ts similarity index 100% rename from login-workflow/example-vite/src/contexts/AppContextProvider.tsx rename to login-workflow/example-vite/src/contexts/AppContextProvider.ts diff --git a/login-workflow/example-vite/src/index.css b/login-workflow/example-vite/src/index.css index f4a11262..76be7732 100644 --- a/login-workflow/example-vite/src/index.css +++ b/login-workflow/example-vite/src/index.css @@ -4,4 +4,4 @@ body, height: 100%; margin: 0; padding: 0; -} \ No newline at end of file +} diff --git a/login-workflow/example-vite/src/screens/ExampleHome.tsx b/login-workflow/example-vite/src/screens/ExampleHome.tsx index ff45e7cd..8e594b6d 100644 --- a/login-workflow/example-vite/src/screens/ExampleHome.tsx +++ b/login-workflow/example-vite/src/screens/ExampleHome.tsx @@ -144,7 +144,7 @@ export const ExampleHome: React.FC = () => { { icon: , title: `${t('USER_MENU.CHANGE_PASSWORD')}`, - onClick: (): any => { + onClick: (): void => { app.setShowChangePasswordDialog(true); }, }, From a6ff74ca3cd564464fcdcd8bc288e484520070bd Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 1 Feb 2024 11:15:05 +0000 Subject: [PATCH 13/87] Bump @mui/icons-material in /login-workflow/example Bumps [@mui/icons-material](https://github.com/mui/material-ui/tree/HEAD/packages/mui-icons-material) from 5.11.16 to 5.15.7. - [Release notes](https://github.com/mui/material-ui/releases) - [Changelog](https://github.com/mui/material-ui/blob/master/CHANGELOG.md) - [Commits](https://github.com/mui/material-ui/commits/v5.15.7/packages/mui-icons-material) --- updated-dependencies: - dependency-name: "@mui/icons-material" dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- login-workflow/example/package.json | 2 +- login-workflow/example/yarn.lock | 18 +++++++++--------- 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/login-workflow/example/package.json b/login-workflow/example/package.json index 8d2ad082..42b075b9 100644 --- a/login-workflow/example/package.json +++ b/login-workflow/example/package.json @@ -38,7 +38,7 @@ "@brightlayer-ui/react-themes": "^7.1.0", "@emotion/react": "^11.7.1", "@emotion/styled": "^11.10.8", - "@mui/icons-material": "^5.11.11", + "@mui/icons-material": "^5.15.7", "@mui/material": "^5.10.15", "@types/node": "^17.0.23", "@types/react": "^18.0.31", diff --git a/login-workflow/example/yarn.lock b/login-workflow/example/yarn.lock index b74fefd2..626a44a1 100644 --- a/login-workflow/example/yarn.lock +++ b/login-workflow/example/yarn.lock @@ -1107,10 +1107,10 @@ resolved "https://registry.yarnpkg.com/@babel/regjsgen/-/regjsgen-0.8.0.tgz#f0ba69b075e1f05fb2825b7fad991e7adbb18310" integrity sha512-x/rqGMdzj+fWZvCOYForTghzbtqPDZ5gPwaoNGHdgDfF2QA/XZbCBp4Moo5scrkAMPhB7z26XM/AaHuIJdgauA== -"@babel/runtime@^7.11.2", "@babel/runtime@^7.12.5", "@babel/runtime@^7.16.3", "@babel/runtime@^7.18.3", "@babel/runtime@^7.20.7", "@babel/runtime@^7.21.0", "@babel/runtime@^7.22.5", "@babel/runtime@^7.23.2", "@babel/runtime@^7.5.5", "@babel/runtime@^7.8.4", "@babel/runtime@^7.8.7", "@babel/runtime@^7.9.2": - version "7.23.7" - resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.23.7.tgz#dd7c88deeb218a0f8bd34d5db1aa242e0f203193" - integrity sha512-w06OXVOFso7LcbzMiDGt+3X7Rh7Ho8MmgPoWU3rarH+8upf+wSU/grlGbWzQyr3DkdN6ZeuMFjpdwW0Q+HxobA== +"@babel/runtime@^7.11.2", "@babel/runtime@^7.12.5", "@babel/runtime@^7.16.3", "@babel/runtime@^7.18.3", "@babel/runtime@^7.20.7", "@babel/runtime@^7.21.0", "@babel/runtime@^7.22.5", "@babel/runtime@^7.23.2", "@babel/runtime@^7.23.9", "@babel/runtime@^7.5.5", "@babel/runtime@^7.8.4", "@babel/runtime@^7.8.7", "@babel/runtime@^7.9.2": + version "7.23.9" + resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.23.9.tgz#47791a15e4603bb5f905bc0753801cf21d6345f7" + integrity sha512-0CX6F+BI2s9dkUqr08KFrAIZgNFj75rdBU/DjCyYLIaV/quFjkk6T+EJ2LkZHyZTbEV4L5p97mNkUsHl2wLFAw== dependencies: regenerator-runtime "^0.14.0" @@ -1994,12 +1994,12 @@ resolved "https://registry.yarnpkg.com/@mui/core-downloads-tracker/-/core-downloads-tracker-5.13.2.tgz#8802f8fa81fff46e37245a59e1e547c692e11c06" integrity sha512-aOLCXMCySMFL2WmUhnz+DjF84AoFVu8rn35OsL759HXOZMz8zhEwVf5w/xxkWx7DycM2KXDTgAvYW48nTfqTLA== -"@mui/icons-material@^5.11.11": - version "5.11.16" - resolved "https://registry.yarnpkg.com/@mui/icons-material/-/icons-material-5.11.16.tgz#417fa773c56672e39d6ccfed9ac55591985f0d38" - integrity sha512-oKkx9z9Kwg40NtcIajF9uOXhxiyTZrrm9nmIJ4UjkU2IdHpd4QVLbCc/5hZN/y0C6qzi2Zlxyr9TGddQx2vx2A== +"@mui/icons-material@^5.15.7": + version "5.15.7" + resolved "https://registry.yarnpkg.com/@mui/icons-material/-/icons-material-5.15.7.tgz#6b1cc370894f505b756fa1aa1cbd25b5890d54d5" + integrity sha512-EDAc8TVJGIA/imAvR3u4nANl2W5h3QeHieu2gK7Ypez/nIA55p08tHjf8UrMXEpxCAvfZO6piY9S9uaxETdicA== dependencies: - "@babel/runtime" "^7.21.0" + "@babel/runtime" "^7.23.9" "@mui/material@^5.10.15": version "5.13.2" From 9e9bf0849a144e5127bfc1bb339a559b43b56b76 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 1 Feb 2024 11:50:00 +0000 Subject: [PATCH 14/87] Bump ts-jest from 29.1.1 to 29.1.2 in /login-workflow Bumps [ts-jest](https://github.com/kulshekhar/ts-jest) from 29.1.1 to 29.1.2. - [Release notes](https://github.com/kulshekhar/ts-jest/releases) - [Changelog](https://github.com/kulshekhar/ts-jest/blob/main/CHANGELOG.md) - [Commits](https://github.com/kulshekhar/ts-jest/compare/v29.1.1...v29.1.2) --- updated-dependencies: - dependency-name: ts-jest dependency-type: direct:development update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- login-workflow/yarn.lock | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/login-workflow/yarn.lock b/login-workflow/yarn.lock index 3064aa99..304d9a8b 100644 --- a/login-workflow/yarn.lock +++ b/login-workflow/yarn.lock @@ -9069,9 +9069,9 @@ ts-api-utils@^1.0.1: integrity sha512-wNMeqtMz5NtwpT/UZGY5alT+VoKdSsOOP/kqHFcUW1P/VRhH2wJ48+DN2WwUliNbQ976ETwDL0Ifd2VVvgonvg== ts-jest@^29.0.0-next.1: - version "29.1.1" - resolved "https://registry.yarnpkg.com/ts-jest/-/ts-jest-29.1.1.tgz#f58fe62c63caf7bfcc5cc6472082f79180f0815b" - integrity sha512-D6xjnnbP17cC85nliwGiL+tpoKN0StpgE0TeOjXQTU6MVCfsB4v7aW05CgQ/1OywGb0x/oy9hHFnN+sczTiRaA== + version "29.1.2" + resolved "https://registry.yarnpkg.com/ts-jest/-/ts-jest-29.1.2.tgz#7613d8c81c43c8cb312c6904027257e814c40e09" + integrity sha512-br6GJoH/WUX4pu7FbZXuWGKGNDuU7b8Uj77g/Sp7puZV6EXzuByl6JrECvm0MzVzSTkSHWTihsXt+5XYER5b+g== dependencies: bs-logger "0.x" fast-json-stable-stringify "2.x" From 689d68618e7c9e51dd7ab6462ecb45cd1face493 Mon Sep 17 00:00:00 2001 From: daileytj Date: Thu, 1 Feb 2024 08:46:47 -0500 Subject: [PATCH 15/87] Run prettier --- login-workflow/example-vite/index.html | 22 +++++----- login-workflow/example-vite/tsconfig.json | 42 +++++++++---------- .../example-vite/tsconfig.node.json | 16 +++---- login-workflow/example-vite/vite.config.ts | 8 ++-- 4 files changed, 44 insertions(+), 44 deletions(-) diff --git a/login-workflow/example-vite/index.html b/login-workflow/example-vite/index.html index e4b78eae..81aefabd 100644 --- a/login-workflow/example-vite/index.html +++ b/login-workflow/example-vite/index.html @@ -1,13 +1,13 @@ - + - - - - - Vite + React + TS - - -

- - + + + + + Vite + React + TS + + +
+ + diff --git a/login-workflow/example-vite/tsconfig.json b/login-workflow/example-vite/tsconfig.json index a7fc6fbf..30d6ff14 100644 --- a/login-workflow/example-vite/tsconfig.json +++ b/login-workflow/example-vite/tsconfig.json @@ -1,25 +1,25 @@ { - "compilerOptions": { - "target": "ES2020", - "useDefineForClassFields": true, - "lib": ["ES2020", "DOM", "DOM.Iterable"], - "module": "ESNext", - "skipLibCheck": true, + "compilerOptions": { + "target": "ES2020", + "useDefineForClassFields": true, + "lib": ["ES2020", "DOM", "DOM.Iterable"], + "module": "ESNext", + "skipLibCheck": true, - /* Bundler mode */ - "moduleResolution": "bundler", - "allowImportingTsExtensions": true, - "resolveJsonModule": true, - "isolatedModules": true, - "noEmit": true, - "jsx": "react-jsx", + /* Bundler mode */ + "moduleResolution": "bundler", + "allowImportingTsExtensions": true, + "resolveJsonModule": true, + "isolatedModules": true, + "noEmit": true, + "jsx": "react-jsx", - /* Linting */ - "strict": true, - "noUnusedLocals": true, - "noUnusedParameters": true, - "noFallthroughCasesInSwitch": true - }, - "include": ["src"], - "references": [{ "path": "./tsconfig.node.json" }] + /* Linting */ + "strict": true, + "noUnusedLocals": true, + "noUnusedParameters": true, + "noFallthroughCasesInSwitch": true + }, + "include": ["src"], + "references": [{ "path": "./tsconfig.node.json" }] } diff --git a/login-workflow/example-vite/tsconfig.node.json b/login-workflow/example-vite/tsconfig.node.json index 42872c59..26063d85 100644 --- a/login-workflow/example-vite/tsconfig.node.json +++ b/login-workflow/example-vite/tsconfig.node.json @@ -1,10 +1,10 @@ { - "compilerOptions": { - "composite": true, - "skipLibCheck": true, - "module": "ESNext", - "moduleResolution": "bundler", - "allowSyntheticDefaultImports": true - }, - "include": ["vite.config.ts"] + "compilerOptions": { + "composite": true, + "skipLibCheck": true, + "module": "ESNext", + "moduleResolution": "bundler", + "allowSyntheticDefaultImports": true + }, + "include": ["vite.config.ts"] } diff --git a/login-workflow/example-vite/vite.config.ts b/login-workflow/example-vite/vite.config.ts index 5a33944a..d7ec70e1 100644 --- a/login-workflow/example-vite/vite.config.ts +++ b/login-workflow/example-vite/vite.config.ts @@ -1,7 +1,7 @@ -import { defineConfig } from 'vite' -import react from '@vitejs/plugin-react' +import { defineConfig } from 'vite'; +import react from '@vitejs/plugin-react'; // https://vitejs.dev/config/ export default defineConfig({ - plugins: [react()], -}) + plugins: [react()], +}); From 1e03308b0a5668b933816262eff0c4f6c2110fb6 Mon Sep 17 00:00:00 2001 From: daileytj Date: Thu, 1 Feb 2024 13:44:57 -0500 Subject: [PATCH 16/87] Remove tsc from build command --- login-workflow/example-vite/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/login-workflow/example-vite/package.json b/login-workflow/example-vite/package.json index e042339a..feb06702 100644 --- a/login-workflow/example-vite/package.json +++ b/login-workflow/example-vite/package.json @@ -6,7 +6,7 @@ "scripts": { "start": "vite", "dev": "vite", - "build": "tsc && vite build", + "build": "vite build", "lint": "eslint \"src/**/**.{ts,tsx}\"", "lint:fix": "eslint \"src/**/**.{ts,tsx}\" --fix", "prettier": "prettier \"src/**/**.{ts,tsx,js,jsx,json,css,scss,html}\" --write", From e24de094c9eff3d94fd372f5fd9d6afe95097d19 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 20 Feb 2024 20:37:02 +0000 Subject: [PATCH 17/87] Bump ip from 1.1.8 to 1.1.9 in /login-workflow Bumps [ip](https://github.com/indutny/node-ip) from 1.1.8 to 1.1.9. - [Commits](https://github.com/indutny/node-ip/compare/v1.1.8...v1.1.9) --- updated-dependencies: - dependency-name: ip dependency-type: indirect ... Signed-off-by: dependabot[bot] --- login-workflow/yarn.lock | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/login-workflow/yarn.lock b/login-workflow/yarn.lock index 304d9a8b..e0b851d1 100644 --- a/login-workflow/yarn.lock +++ b/login-workflow/yarn.lock @@ -5551,14 +5551,14 @@ ip-regex@^4.1.0: integrity sha512-B9ZWJxHHOHUhUjCPrMpLD4xEq35bUTClHM1S6CBU5ixQnkZmwipwgc96vAd7AAGM9TGHvJR+Uss+/Ak6UphK+Q== ip@^1.1.5: - version "1.1.8" - resolved "https://registry.yarnpkg.com/ip/-/ip-1.1.8.tgz#ae05948f6b075435ed3307acce04629da8cdbf48" - integrity sha512-PuExPYUiu6qMBQb4l06ecm6T6ujzhmh+MeJcW9wa89PoAz5pvd4zPgN5WJV104mb6S2T1AwNIAaB70JNrLQWhg== + version "1.1.9" + resolved "https://registry.yarnpkg.com/ip/-/ip-1.1.9.tgz#8dfbcc99a754d07f425310b86a99546b1151e396" + integrity sha512-cyRxvOEpNHNtchU3Ln9KC/auJgup87llfQpQ+t5ghoC/UhL16SWzbueiCsdTnWmqAWl7LadfuwhlqmtOaqMHdQ== ip@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/ip/-/ip-2.0.0.tgz#4cf4ab182fee2314c75ede1276f8c80b479936da" - integrity sha512-WKa+XuLG1A1R0UWhl2+1XQSi+fZWMsYKffMZTTYsiZaUD8k2yDAj5atimTUD2TZkyCkNEeYE5NhFZmupOGtjYQ== + version "2.0.1" + resolved "https://registry.yarnpkg.com/ip/-/ip-2.0.1.tgz#e8f3595d33a3ea66490204234b77636965307105" + integrity sha512-lJUL9imLTNi1ZfXT+DU6rBBdbiKGBuay9B6xGSPVjUeQwaH1RIGqef8RZkUtHioLmSNpPR5M4HVKJGm1j8FWVQ== ipaddr.js@1.9.1: version "1.9.1" From f8c155bb4f4e37d746726fa5c7f3284e79b71f82 Mon Sep 17 00:00:00 2001 From: jeffgreiner-eaton Date: Tue, 27 Feb 2024 09:07:57 -0500 Subject: [PATCH 18/87] Fix typo success screen read me --- login-workflow/docs/screens/success.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/login-workflow/docs/screens/success.md b/login-workflow/docs/screens/success.md index d72d59f4..dacc5e7b 100644 --- a/login-workflow/docs/screens/success.md +++ b/login-workflow/docs/screens/success.md @@ -1,6 +1,6 @@ # SuccessScreenBase -A component to use as a simple success screen for mini 1-step workflows (like Forgot Paswsword). It renders a a message, an icon, and a dismiss button. +A component to use as a simple success screen for a mini-1 step workflow like the Forgot Password. It renders a message, icon, and a dismiss button. ![Success](../../media/screens/success.png) From 4be321881676643e6064e579485e3cacc8bc8122 Mon Sep 17 00:00:00 2001 From: jeffgreiner-eaton Date: Tue, 27 Feb 2024 15:45:41 -0500 Subject: [PATCH 19/87] Remove react router dom from types --- login-workflow/docs/API.md | 2 +- login-workflow/docs/routing.md | 5 +++- .../example/src/navigation/AppRouter.tsx | 9 ++++-- .../src/contexts/AuthContext/types.ts | 5 ++-- .../src/contexts/RegistrationContext/types.ts | 3 +- login-workflow/src/hooks/index.ts | 1 - login-workflow/src/hooks/useQueryString.tsx | 28 ------------------- 7 files changed, 14 insertions(+), 39 deletions(-) delete mode 100644 login-workflow/src/hooks/useQueryString.tsx diff --git a/login-workflow/docs/API.md b/login-workflow/docs/API.md index 70c6ed48..e4ca840d 100644 --- a/login-workflow/docs/API.md +++ b/login-workflow/docs/API.md @@ -9,7 +9,7 @@ The `RegistrationContextProvider` manages the state of the registration workflow - Returns an object of functions that are used to manage the registration workflow. See [RegistrationUIActions](#registrationuiactions) for more information. - **language**: _`string`_ - The language code to use for the registration workflow. This is used to determine which language to use for the UI and for the API calls. -- **navigate**: _`(url: string) => void`_ +- **navigate**: _`(destination: -1 | string) => void`_ - A function that is used to navigate to a new URL. This is used to navigate to the various screens of the registration workflow. - **routeConfig**: _`RouteConfig`_ - An object that defines the various routes for the registration workflow. See [RouteConfig](#routeconfig) for more information. diff --git a/login-workflow/docs/routing.md b/login-workflow/docs/routing.md index 6975d17b..fab62d75 100644 --- a/login-workflow/docs/routing.md +++ b/login-workflow/docs/routing.md @@ -46,7 +46,10 @@ const getAuthState = () => ({ }) export const AppRouter: React.FC = () => { - const navigate = useNavigate(); + const navigation = useNavigate(); + const navigate = useCallback((destination: -1 | string) => { + navigation(destination as To); + }, []); const authState = getAuthState(); return ( diff --git a/login-workflow/example/src/navigation/AppRouter.tsx b/login-workflow/example/src/navigation/AppRouter.tsx index 3d384b4b..9011eec9 100644 --- a/login-workflow/example/src/navigation/AppRouter.tsx +++ b/login-workflow/example/src/navigation/AppRouter.tsx @@ -1,4 +1,4 @@ -import React from 'react'; +import React, { useCallback } from 'react'; import { AuthContextProvider, ContactSupportScreen, @@ -12,7 +12,7 @@ import { import { useApp } from '../contexts/AppContextProvider'; import { useNavigate } from 'react-router'; import { ProjectAuthUIActions } from '../actions/AuthUIActions'; -import { Navigate, Outlet, Route, Routes } from 'react-router-dom'; +import { Navigate, Outlet, Route, Routes, To } from 'react-router-dom'; import { Login } from '../screens/Login'; import { ProjectRegistrationUIActions } from '../actions/RegistrationUIActions'; import { routes } from './Routing'; @@ -21,9 +21,12 @@ import i18nAppInstance from '../translations/i18n'; import { ChangePassword } from '../components/ChangePassword'; export const AppRouter: React.FC = () => { - const navigate = useNavigate(); + const navigation = useNavigate(); const app = useApp(); const { email, rememberMe } = app.loginData; + const navigate = useCallback((destination: -1 | string) => { + navigation(destination as To); + }, []); return ( diff --git a/login-workflow/src/contexts/AuthContext/types.ts b/login-workflow/src/contexts/AuthContext/types.ts index d387896a..af569f49 100644 --- a/login-workflow/src/contexts/AuthContext/types.ts +++ b/login-workflow/src/contexts/AuthContext/types.ts @@ -4,7 +4,6 @@ */ import { i18n } from 'i18next'; -import { NavigateFunction } from 'react-router-dom'; import { RouteConfig } from '../../types'; import { ErrorContextProviderProps } from '../ErrorContext/types'; @@ -20,9 +19,9 @@ export type AuthContextProviderProps = { language: string; /** - * Function that can be called to navigate to a new route + * A function that is used to navigate to a new URL. This is used to navigate to the various screens of the workflow */ - navigate: NavigateFunction; + navigate: (destination: -1 | string) => void; /** * Object describing the URLs you are using for the relevant routes so the workflow can correctly navigate between screens diff --git a/login-workflow/src/contexts/RegistrationContext/types.ts b/login-workflow/src/contexts/RegistrationContext/types.ts index 102f7f1b..4cee7d11 100644 --- a/login-workflow/src/contexts/RegistrationContext/types.ts +++ b/login-workflow/src/contexts/RegistrationContext/types.ts @@ -1,5 +1,4 @@ import { i18n } from 'i18next'; -import { NavigateFunction } from 'react-router-dom'; import { ErrorContextProviderProps } from '../ErrorContext'; import { RouteConfig } from '../../types'; @@ -80,7 +79,7 @@ export type RegistrationContextProviderProps = { /** * A function that is used to navigate to a new URL. This is used to navigate to the various screens of the workflow */ - navigate: NavigateFunction; + navigate: (destination: -1 | string) => void; /** * An object that defines the various routes for the workflow diff --git a/login-workflow/src/hooks/index.ts b/login-workflow/src/hooks/index.ts index 7234070b..3039312e 100644 --- a/login-workflow/src/hooks/index.ts +++ b/login-workflow/src/hooks/index.ts @@ -1,2 +1 @@ export * from './isFirstRender'; -export * from './useQueryString'; diff --git a/login-workflow/src/hooks/useQueryString.tsx b/login-workflow/src/hooks/useQueryString.tsx deleted file mode 100644 index 801ca3f0..00000000 --- a/login-workflow/src/hooks/useQueryString.tsx +++ /dev/null @@ -1,28 +0,0 @@ -import { useLocation } from 'react-router-dom'; - -type SearchParams = { - [key: string]: string; -}; -/** - * Hook that returns an object of query string parameters and values. - * - * @return an object whose keys/values are search param keys/values from the URL - * - * @category Hook - */ -export const useQueryString = (): SearchParams => { - const { search } = useLocation(); - let noQuestion = search; - if (noQuestion.startsWith('?')) noQuestion = noQuestion.substr(1); - - const params = noQuestion.split('&'); - const ret: SearchParams = {}; - - params.forEach((param) => { - const keyVal = param.split('=', 2); - if (keyVal.length > 1) { - ret[keyVal[0]] = decodeURI(keyVal[1]); - } - }); - return ret; -}; From 83c4926204e4ae426174f419cf35c827c632591d Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 1 Mar 2024 11:07:10 +0000 Subject: [PATCH 20/87] Bump @brightlayer-ui/react-themes in /login-workflow/example Bumps [@brightlayer-ui/react-themes](https://github.com/etn-ccis/blui-react-themes) from 7.1.0 to 7.2.0. - [Release notes](https://github.com/etn-ccis/blui-react-themes/releases) - [Changelog](https://github.com/etn-ccis/blui-react-themes/blob/dev/CHANGELOG.md) - [Commits](https://github.com/etn-ccis/blui-react-themes/commits) --- updated-dependencies: - dependency-name: "@brightlayer-ui/react-themes" dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- login-workflow/example/package.json | 2 +- login-workflow/example/yarn.lock | 32 +++++++++++------------------ 2 files changed, 13 insertions(+), 21 deletions(-) diff --git a/login-workflow/example/package.json b/login-workflow/example/package.json index 42b075b9..ae91dccc 100644 --- a/login-workflow/example/package.json +++ b/login-workflow/example/package.json @@ -35,7 +35,7 @@ "@brightlayer-ui/colors": "^3.0.1", "@brightlayer-ui/icons-mui": "^3.3.0", "@brightlayer-ui/react-components": "^6.1.2", - "@brightlayer-ui/react-themes": "^7.1.0", + "@brightlayer-ui/react-themes": "^7.2.0", "@emotion/react": "^11.7.1", "@emotion/styled": "^11.10.8", "@mui/icons-material": "^5.15.7", diff --git a/login-workflow/example/yarn.lock b/login-workflow/example/yarn.lock index 626a44a1..7d72d6e0 100644 --- a/login-workflow/example/yarn.lock +++ b/login-workflow/example/yarn.lock @@ -1208,14 +1208,14 @@ "@seznam/compose-react-refs" "^1.0.6" color "^4.2.3" -"@brightlayer-ui/react-themes@^7.1.0": - version "7.1.0" - resolved "https://registry.yarnpkg.com/@brightlayer-ui/react-themes/-/react-themes-7.1.0.tgz#09519522ab192cdb16c47c2d15ccd238d0fc8c5e" - integrity sha512-zAESyIZJmGAcRDHwX2nB26gsloQ53Kx9FGb4I4bPdDf3Ragbaio/Is03/3CRCim5qCVwjcDqq/iy4iDqg1Q9BQ== +"@brightlayer-ui/react-themes@^7.2.0": + version "7.2.0" + resolved "https://registry.yarnpkg.com/@brightlayer-ui/react-themes/-/react-themes-7.2.0.tgz#03985faba940dc3d94e2eb0d22a0e8f6a7a2b738" + integrity sha512-maNTWF4gck4nTUnh86p/7wFn6qQrdNgKYv+/XVGBR/fYceUcjeik5yFdJ9AlHzOFBp+WrsqnG+qr7yC6Q1iKQQ== dependencies: "@brightlayer-ui/colors" "^3.0.0" - "@fontsource/open-sans" "^4.2.2" - color "^3.1.3" + "@fontsource/open-sans" "^5.0.3" + color "^4.2.3" "@brightlayer-ui/types@^2.0.0": version "2.0.0" @@ -1483,10 +1483,10 @@ resolved "https://registry.yarnpkg.com/@eslint/js/-/js-8.41.0.tgz#080321c3b68253522f7646b55b577dd99d2950b3" integrity sha512-LxcyMGxwmTh2lY9FwHPGWOHmYFCZvbrFCBZL4FzSSsxsRPuhrYUg/49/0KDfW8tnIEaEHtfmn6+NPN+1DqaNmA== -"@fontsource/open-sans@^4.2.2": - version "4.5.14" - resolved "https://registry.yarnpkg.com/@fontsource/open-sans/-/open-sans-4.5.14.tgz#b3e1665c0b3fdfc1f030ded2843749e3cf3a5900" - integrity sha512-mBXIIETBlW8q/ocuUN0hyGow2iuf75hQEHQt8R/RJ/HcphVbLg8KB7pHYGbFGDqs75W+SWvTC7JkVeAjT65BuQ== +"@fontsource/open-sans@^5.0.3": + version "5.0.24" + resolved "https://registry.yarnpkg.com/@fontsource/open-sans/-/open-sans-5.0.24.tgz#02f85e51d0ee75c3c2f42f683cd486364f99e2d9" + integrity sha512-bIF+87vxfOPTyvnBKS+rCPmz/m66um3zCk1UdPv8RGBgwu6MMxwED0jpcbvyFSkfy0ApcdjfkDSAhlFTm/pgiw== "@humanwhocodes/config-array@^0.11.8": version "0.11.8" @@ -3847,7 +3847,7 @@ collect-v8-coverage@^1.0.0: resolved "https://registry.yarnpkg.com/collect-v8-coverage/-/collect-v8-coverage-1.0.1.tgz#cc2c8e94fc18bbdffe64d6534570c8a673b27f59" integrity sha512-iBPtljfCNcTKNAto0KEtDfZ3qzjJvqE3aTGZsbhjSBlorqpXJlaWWtPO35D+ZImoC3KWejX64o+yPGxhWSTzfg== -color-convert@^1.9.0, color-convert@^1.9.3: +color-convert@^1.9.0: version "1.9.3" resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8" integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg== @@ -3871,7 +3871,7 @@ color-name@^1.0.0, color-name@~1.1.4: resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== -color-string@^1.6.0, color-string@^1.9.0: +color-string@^1.9.0: version "1.9.1" resolved "https://registry.yarnpkg.com/color-string/-/color-string-1.9.1.tgz#4467f9146f036f855b764dfb5bf8582bf342c7a4" integrity sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg== @@ -3879,14 +3879,6 @@ color-string@^1.6.0, color-string@^1.9.0: color-name "^1.0.0" simple-swizzle "^0.2.2" -color@^3.1.3: - version "3.2.1" - resolved "https://registry.yarnpkg.com/color/-/color-3.2.1.tgz#3544dc198caf4490c3ecc9a790b54fe9ff45e164" - integrity sha512-aBl7dZI9ENN6fUGC7mWpMTPNHmWUSNan9tuWN6ahh5ZLNk9baLJOnSMlrQkHcrfFgz2/RigjUVAjdx36VcemKA== - dependencies: - color-convert "^1.9.3" - color-string "^1.6.0" - color@^4.2.3: version "4.2.3" resolved "https://registry.yarnpkg.com/color/-/color-4.2.3.tgz#d781ecb5e57224ee43ea9627560107c0e0c6463a" From f1346a652d34a3f2b12f91bfe3c58576649ee44d Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 1 Mar 2024 11:33:05 +0000 Subject: [PATCH 21/87] Bump @testing-library/jest-dom from 5.17.0 to 6.4.2 in /login-workflow Bumps [@testing-library/jest-dom](https://github.com/testing-library/jest-dom) from 5.17.0 to 6.4.2. - [Release notes](https://github.com/testing-library/jest-dom/releases) - [Changelog](https://github.com/testing-library/jest-dom/blob/main/CHANGELOG.md) - [Commits](https://github.com/testing-library/jest-dom/compare/v5.17.0...v6.4.2) --- updated-dependencies: - dependency-name: "@testing-library/jest-dom" dependency-type: direct:development update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] --- login-workflow/package.json | 2 +- login-workflow/yarn.lock | 47 ++++++++++++++----------------------- 2 files changed, 19 insertions(+), 30 deletions(-) diff --git a/login-workflow/package.json b/login-workflow/package.json index 3b13ad8b..57258363 100644 --- a/login-workflow/package.json +++ b/login-workflow/package.json @@ -78,7 +78,7 @@ "@emotion/styled": "^11.6.0", "@mui/icons-material": "^5.3.1", "@mui/material": "^5.4.1", - "@testing-library/jest-dom": "^5.16.5", + "@testing-library/jest-dom": "^6.4.2", "@testing-library/react": "^13.3.0", "@testing-library/user-event": "^14.4.3", "@types/color": "^3.0.1", diff --git a/login-workflow/yarn.lock b/login-workflow/yarn.lock index e0b851d1..bfea2161 100644 --- a/login-workflow/yarn.lock +++ b/login-workflow/yarn.lock @@ -7,10 +7,10 @@ resolved "https://registry.yarnpkg.com/@aashutoshrathi/word-wrap/-/word-wrap-1.2.6.tgz#bd9154aec9983f77b3a034ecaa015c2e4201f6cf" integrity sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA== -"@adobe/css-tools@^4.0.1": - version "4.3.2" - resolved "https://registry.yarnpkg.com/@adobe/css-tools/-/css-tools-4.3.2.tgz#a6abc715fb6884851fca9dad37fc34739a04fd11" - integrity sha512-DA5a1C0gD/pLOvhv33YMrbf2FK3oUzwNl9oOJqE4XVjuEtt6XIakRcsd7eLiOSPkp1kTRQGICTA8cKra/vFbjw== +"@adobe/css-tools@^4.3.2": + version "4.3.3" + resolved "https://registry.yarnpkg.com/@adobe/css-tools/-/css-tools-4.3.3.tgz#90749bde8b89cd41764224f5aac29cd4138f75ff" + integrity sha512-rE0Pygv0sEZ4vBWHlAgJLGDU7Pm8xoO6p3wsEceb7GYAjScrOHpEo8KK/eVkAcnSM+slAEtXjA2JpdjLp4fJQQ== "@ampproject/remapping@^2.2.0": version "2.2.1" @@ -1981,18 +1981,17 @@ lz-string "^1.5.0" pretty-format "^27.0.2" -"@testing-library/jest-dom@^5.16.5": - version "5.17.0" - resolved "https://registry.yarnpkg.com/@testing-library/jest-dom/-/jest-dom-5.17.0.tgz#5e97c8f9a15ccf4656da00fecab505728de81e0c" - integrity sha512-ynmNeT7asXyH3aSVv4vvX4Rb+0qjOhdNHnO/3vuZNqPmhDpV/+rCSGwQ7bLcmU2cJ4dvoheIO85LQj0IbJHEtg== +"@testing-library/jest-dom@^6.4.2": + version "6.4.2" + resolved "https://registry.yarnpkg.com/@testing-library/jest-dom/-/jest-dom-6.4.2.tgz#38949f6b63722900e2d75ba3c6d9bf8cffb3300e" + integrity sha512-CzqH0AFymEMG48CpzXFriYYkOjk6ZGPCLMhW9e9jg3KMCn5OfJecF8GtGW7yGfR/IgCe3SX8BSwjdzI6BBbZLw== dependencies: - "@adobe/css-tools" "^4.0.1" + "@adobe/css-tools" "^4.3.2" "@babel/runtime" "^7.9.2" - "@types/testing-library__jest-dom" "^5.9.1" aria-query "^5.0.0" chalk "^3.0.0" css.escape "^1.5.1" - dom-accessibility-api "^0.5.6" + dom-accessibility-api "^0.6.3" lodash "^4.17.15" redent "^3.0.0" @@ -2130,14 +2129,6 @@ dependencies: "@types/istanbul-lib-report" "*" -"@types/jest@*": - version "29.5.5" - resolved "https://registry.yarnpkg.com/@types/jest/-/jest-29.5.5.tgz#727204e06228fe24373df9bae76b90f3e8236a2a" - integrity sha512-ebylz2hnsWR9mYvmBFbXJXr+33UPc4+ZdxyDXh5w0FlPBTfCVN3wPL+kuOiQt3xvrK419v7XWeAs+AeOksafXg== - dependencies: - expect "^29.0.0" - pretty-format "^29.0.0" - "@types/jest@^27.4.1": version "27.5.2" resolved "https://registry.yarnpkg.com/@types/jest/-/jest-27.5.2.tgz#ec49d29d926500ffb9fd22b84262e862049c026c" @@ -2266,13 +2257,6 @@ resolved "https://registry.yarnpkg.com/@types/stack-utils/-/stack-utils-2.0.1.tgz#20f18294f797f2209b5f65c8e3b5c8e8261d127c" integrity sha512-Hl219/BT5fLAaz6NDkSuhzasy49dwQS/DSdu4MdggFB8zcXv7vflBI3xp7FEmkmdDkBUI2bPUNeMttp2knYdxw== -"@types/testing-library__jest-dom@^5.9.1": - version "5.14.9" - resolved "https://registry.yarnpkg.com/@types/testing-library__jest-dom/-/testing-library__jest-dom-5.14.9.tgz#0fb1e6a0278d87b6737db55af5967570b67cb466" - integrity sha512-FSYhIjFlfOpGSRyVoMBMuS3ws5ehFQODymf3vlI7U1K8c7PHwWwFY7VREfmsuzHSOnoKs/9/Y983ayOs7eRzqw== - dependencies: - "@types/jest" "*" - "@types/tough-cookie@*": version "4.0.3" resolved "https://registry.yarnpkg.com/@types/tough-cookie/-/tough-cookie-4.0.3.tgz#3d06b6769518450871fbc40770b7586334bdfd90" @@ -3973,11 +3957,16 @@ doctrine@^3.0.0: dependencies: esutils "^2.0.2" -dom-accessibility-api@^0.5.6, dom-accessibility-api@^0.5.9: +dom-accessibility-api@^0.5.9: version "0.5.16" resolved "https://registry.yarnpkg.com/dom-accessibility-api/-/dom-accessibility-api-0.5.16.tgz#5a7429e6066eb3664d911e33fb0e45de8eb08453" integrity sha512-X7BJ2yElsnOJ30pZF4uIIDfBEVgF4XEBxL9Bxhy6dnrm5hkzqmsWHGTiHqRiITNhMyFLyAiWndIJP7Z1NTteDg== +dom-accessibility-api@^0.6.3: + version "0.6.3" + resolved "https://registry.yarnpkg.com/dom-accessibility-api/-/dom-accessibility-api-0.6.3.tgz#993e925cc1d73f2c662e7d75dd5a5445259a8fd8" + integrity sha512-7ZgogeTnjuHbo+ct10G9Ffp0mif17idi0IyWNVA/wcwcm7NPOD/WEHVP3n7n3MhXqxoIYm8d6MuZohYWIZ4T3w== + dom-helpers@^5.0.1: version "5.2.1" resolved "https://registry.yarnpkg.com/dom-helpers/-/dom-helpers-5.2.1.tgz#d9400536b2bf8225ad98fe052e029451ac40e902" @@ -4475,7 +4464,7 @@ exit@^0.1.2: resolved "https://registry.yarnpkg.com/exit/-/exit-0.1.2.tgz#0632638f8d877cc82107d30a0fff1a17cba1cd0c" integrity sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ== -expect@^29.0.0, expect@^29.7.0: +expect@^29.7.0: version "29.7.0" resolved "https://registry.yarnpkg.com/expect/-/expect-29.7.0.tgz#578874590dcb3214514084c08115d8aee61e11bc" integrity sha512-2Zks0hf1VLFYI1kbh0I5jP3KHHyCHpkfyHBzsSXRFgl/Bg9mWYfMW8oD+PdMPlEwy5HNsR9JutYy6pMeOh61nw== @@ -7750,7 +7739,7 @@ pretty-format@^27.0.0, pretty-format@^27.0.2, pretty-format@^27.5.1: ansi-styles "^5.0.0" react-is "^17.0.1" -pretty-format@^29.0.0, pretty-format@^29.7.0: +pretty-format@^29.7.0: version "29.7.0" resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-29.7.0.tgz#ca42c758310f365bfa71a0bda0a807160b776812" integrity sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ== From 8d13bac023c9fea9548b58fc26ef5e6fa1ccdcdb Mon Sep 17 00:00:00 2001 From: jeffgreiner-eaton Date: Tue, 5 Mar 2024 11:16:48 -0500 Subject: [PATCH 22/87] Error manager translate dismissLabel for dialog --- login-workflow/src/components/Error/ErrorManager.tsx | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/login-workflow/src/components/Error/ErrorManager.tsx b/login-workflow/src/components/Error/ErrorManager.tsx index 343c5946..706eee90 100644 --- a/login-workflow/src/components/Error/ErrorManager.tsx +++ b/login-workflow/src/components/Error/ErrorManager.tsx @@ -17,6 +17,11 @@ export type ErrorManagerProps = { */ title?: string; + /** + * The label on the dismiss button in dialog mode + */ + dismissLabel?: string; + /** * The function to call when the close/dismiss button is clicked * @returns void @@ -31,7 +36,7 @@ export type ErrorManagerProps = { /** * Configuration options when using mode='dialog' * @param {string} dialogConfig.title - The title used in the dialog header - * @param {string} dialogConfig.dismissLabel - The label on the dismiss button. + * @param {string} dialogConfig.dismissLabel - The label on the dismiss button in dialog mode. */ dialogConfig?: { dismissLabel?: string; @@ -76,6 +81,7 @@ const ErrorManager: React.FC = (props): JSX.Element => { mode = 'dialog', title, error = '', + dismissLabel, onClose = (): void => {}, dialogConfig, messageBoxConfig = { @@ -90,7 +96,7 @@ const ErrorManager: React.FC = (props): JSX.Element => { title={dialogConfig?.title ?? title ?? t('bluiCommon:MESSAGES.ERROR')} body={t(error)} onClose={onClose} - dismissButtonText={dialogConfig?.dismissLabel} + dismissButtonText={dialogConfig?.dismissLabel ?? dismissLabel ?? t('bluiCommon:ACTIONS.OKAY')} sx={dialogConfig?.sx} /> ), From ec39c8e5c72fa690e90970775989e04dac63f010 Mon Sep 17 00:00:00 2001 From: jeffgreiner-eaton Date: Tue, 5 Mar 2024 11:18:32 -0500 Subject: [PATCH 23/87] lint prettier --- login-workflow/src/components/Error/ErrorManager.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/login-workflow/src/components/Error/ErrorManager.tsx b/login-workflow/src/components/Error/ErrorManager.tsx index 706eee90..7272c2b8 100644 --- a/login-workflow/src/components/Error/ErrorManager.tsx +++ b/login-workflow/src/components/Error/ErrorManager.tsx @@ -100,7 +100,7 @@ const ErrorManager: React.FC = (props): JSX.Element => { sx={dialogConfig?.sx} /> ), - [dialogConfig, title, error, onClose, t] + [dialogConfig, dismissLabel, title, error, onClose, t] ); const ErrorMessageBoxWithProps = useCallback((): JSX.Element => { From a4234c83ae3dc6a759d2a7002f0cbcc136233b04 Mon Sep 17 00:00:00 2001 From: jeffgreiner-eaton Date: Wed, 6 Mar 2024 13:04:46 -0500 Subject: [PATCH 24/87] merge props and update providers --- .../example/src/actions/AuthUIActions.tsx | 2 +- login-workflow/example/src/screens/Login.tsx | 2 +- .../src/components/Error/ErrorManager.tsx | 22 ++++------ .../RegistrationWorkflow.tsx | 39 ++++++++++-------- .../src/contexts/AuthContext/provider.tsx | 41 +++++++++++++++---- .../contexts/RegistrationContext/provider.tsx | 36 +++++++++++++--- 6 files changed, 95 insertions(+), 47 deletions(-) diff --git a/login-workflow/example/src/actions/AuthUIActions.tsx b/login-workflow/example/src/actions/AuthUIActions.tsx index f55036d9..5bb1a892 100644 --- a/login-workflow/example/src/actions/AuthUIActions.tsx +++ b/login-workflow/example/src/actions/AuthUIActions.tsx @@ -11,7 +11,7 @@ function getRandomInt(max: number): number { function isRandomFailure(): boolean { const randomResponseNumber = getRandomInt(100); - return false; // randomResponseNumber < 10; + return true; // randomResponseNumber < 10; } type AuthUIActionsWithApp = (appHelper: AppContextType) => AuthUIActions; diff --git a/login-workflow/example/src/screens/Login.tsx b/login-workflow/example/src/screens/Login.tsx index 9f3b31fe..8b4364fa 100644 --- a/login-workflow/example/src/screens/Login.tsx +++ b/login-workflow/example/src/screens/Login.tsx @@ -9,7 +9,7 @@ export const Login = (): JSX.Element => ( projectImage={logo} header={} errorDisplayConfig={{ - mode: 'message-box', + mode: 'dialog', messageBoxConfig: { dismissible: true, position: 'top', diff --git a/login-workflow/src/components/Error/ErrorManager.tsx b/login-workflow/src/components/Error/ErrorManager.tsx index 7272c2b8..e43ee0f7 100644 --- a/login-workflow/src/components/Error/ErrorManager.tsx +++ b/login-workflow/src/components/Error/ErrorManager.tsx @@ -2,7 +2,6 @@ import React, { useCallback } from 'react'; import { BasicDialog } from '../Dialog/BasicDialog'; import ErrorMessageBox from './ErrorMessageBox'; import { SxProps, Theme } from '@mui/material/styles'; -import { useTranslation } from 'react-i18next'; export type AuthError = { cause: { title: string; errorMessage: string } }; @@ -17,11 +16,6 @@ export type ErrorManagerProps = { */ title?: string; - /** - * The label on the dismiss button in dialog mode - */ - dismissLabel?: string; - /** * The function to call when the close/dismiss button is clicked * @returns void @@ -75,13 +69,11 @@ export type ErrorManagerProps = { */ const ErrorManager: React.FC = (props): JSX.Element => { - const { t } = useTranslation(); const { children, mode = 'dialog', title, error = '', - dismissLabel, onClose = (): void => {}, dialogConfig, messageBoxConfig = { @@ -93,14 +85,14 @@ const ErrorManager: React.FC = (props): JSX.Element => { (): JSX.Element => ( 0} - title={dialogConfig?.title ?? title ?? t('bluiCommon:MESSAGES.ERROR')} - body={t(error)} + title={dialogConfig?.title ?? title ?? 'Error' } + body={(error)} onClose={onClose} - dismissButtonText={dialogConfig?.dismissLabel ?? dismissLabel ?? t('bluiCommon:ACTIONS.OKAY')} + dismissButtonText={dialogConfig?.dismissLabel ?? 'Okay'} sx={dialogConfig?.sx} /> ), - [dialogConfig, dismissLabel, title, error, onClose, t] + [dialogConfig, title, error, onClose] ); const ErrorMessageBoxWithProps = useCallback((): JSX.Element => { @@ -108,8 +100,8 @@ const ErrorManager: React.FC = (props): JSX.Element => { return ( = (props): JSX.Element => { onClose={onClose} /> ); - }, [error, title, t, messageBoxConfig, onClose]); + }, [error, title, messageBoxConfig, onClose]); return mode === 'dialog' && error.length > 0 ? ( <> diff --git a/login-workflow/src/components/RegistrationWorkflow/RegistrationWorkflow.tsx b/login-workflow/src/components/RegistrationWorkflow/RegistrationWorkflow.tsx index 35a28821..ae27179d 100644 --- a/login-workflow/src/components/RegistrationWorkflow/RegistrationWorkflow.tsx +++ b/login-workflow/src/components/RegistrationWorkflow/RegistrationWorkflow.tsx @@ -54,17 +54,24 @@ export type RegistrationWorkflowProps = { }; export const RegistrationWorkflow: React.FC> = (props) => { + const { errorDisplayConfig: registrationWorkflowErrorConfig } = props; const [isAccountExist, setIsAccountExist] = useState(false); - const { triggerError, errorManagerConfig } = useErrorManager(); + const { triggerError, errorManagerConfig: globalErrorManagerConfig } = useErrorManager(); const { actions, navigate } = useRegistrationContext(); + const { messageBoxConfig: workflowMessageBoxConfig, dialogConfig: workflowDialogConfig, onClose:workflowOnClose, ...otherWorkflowErrorConfig } = registrationWorkflowErrorConfig ?? {}; + const { messageBoxConfig: globalMessageBoxConfig, dialogConfig: globalDialogConfig, onClose:globalOnClose, ...otherGlobalErrorConfig } = globalErrorManagerConfig; - const errorDisplayConfig = { - ...errorManagerConfig, - ...props.errorDisplayConfig, + + const errorDisplayConfig: ErrorManagerProps = { + messageBoxConfig: { ...globalMessageBoxConfig, ...workflowMessageBoxConfig }, + dialogConfig: { ...globalDialogConfig, ...workflowDialogConfig }, onClose: (): void => { - if (props.errorDisplayConfig && props.errorDisplayConfig.onClose) props.errorDisplayConfig.onClose(); - if (errorManagerConfig.onClose) errorManagerConfig?.onClose(); + workflowOnClose?.(); + globalOnClose?.(); }, + + ...otherGlobalErrorConfig, + ...otherWorkflowErrorConfig, }; const { initialScreenIndex = 0, @@ -73,17 +80,17 @@ export const RegistrationWorkflow: React.FC, - , - , - ] + , + , + , + ] : [ - , - , - , - , - , - ], + , + , + , + , + , + ], } = props; const screens = [...(Array.isArray(children) ? children : [children])]; diff --git a/login-workflow/src/contexts/AuthContext/provider.tsx b/login-workflow/src/contexts/AuthContext/provider.tsx index 296a5383..9b8ad5a8 100644 --- a/login-workflow/src/contexts/AuthContext/provider.tsx +++ b/login-workflow/src/contexts/AuthContext/provider.tsx @@ -6,20 +6,18 @@ import React, { useEffect } from 'react'; import { AuthContextProviderProps } from './types'; import { AuthContext } from './context'; -import { I18nextProvider } from 'react-i18next'; +import { I18nextProvider, useTranslation } from 'react-i18next'; import { i18nAuthInstance } from './i18nAuthInstance'; import { ErrorContext } from '../ErrorContext'; import { AuthDictionaries } from './AuthDictionaries'; import { SharedDictionaries } from '../SharedDictionaries'; +import { ErrorManagerProps } from '../../components/Error'; export const AuthContextProvider: React.FC< React.PropsWithChildren > = (props) => { const i18nInstance = props.i18n ?? i18nAuthInstance; - - const { children, ...authContextProps } = props; - - const { language, i18n = i18nInstance, errorConfig } = props; + const { language, i18n = i18nInstance, children, ...other } = props; if (props.i18n) { i18n.addResourceBundle('zh', 'bluiAuth', AuthDictionaries.chinese.translation, true, false); @@ -40,9 +38,36 @@ export const AuthContextProvider: React.FC< return ( - - {children} - + {children} ); }; + +const AuthContextProviderContent: React.FC< + React.PropsWithChildren & { PasswordDialog?: JSX.Element }> +> = (props) => { + const { children, errorConfig, ...authContextProps } = props; + const { t } = useTranslation(); + const mergedErrorConfig: ErrorManagerProps = { + title: t('bluiCommon:MESSAGES.ERROR'), + error: t('bluiAuth:LOGIN.INVALID_CREDENTIALS'), + ...errorConfig, + dialogConfig: { + dismissLabel:t('bluiCommon:ACTIONS.OKAY'), + ...errorConfig?.dialogConfig ?? {}, + } + } + + return ( + + {children} + + ); +}; + + diff --git a/login-workflow/src/contexts/RegistrationContext/provider.tsx b/login-workflow/src/contexts/RegistrationContext/provider.tsx index d8be7ed9..ed50a6f2 100644 --- a/login-workflow/src/contexts/RegistrationContext/provider.tsx +++ b/login-workflow/src/contexts/RegistrationContext/provider.tsx @@ -6,18 +6,18 @@ import React, { useEffect } from 'react'; import { RegistrationContextProviderProps } from './types'; import { RegistrationContext } from './context'; -import { I18nextProvider } from 'react-i18next'; +import { I18nextProvider, useTranslation } from 'react-i18next'; import { i18nRegistrationInstance } from './i18nRegistrationInstance'; import { ErrorContext } from '../ErrorContext'; import { SharedDictionaries } from '../SharedDictionaries'; import { RegistrationDictionaries } from './RegistrationDictionaries'; +import { ErrorManagerProps } from '../../components/Error'; export const RegistrationContextProvider: React.FC> = ( props ) => { const i18nInstance = props.i18n ?? i18nRegistrationInstance; - const { children, ...registrationContextProps } = props; - const { language, i18n = i18nInstance, errorConfig } = props; + const { language, i18n = i18nInstance, children, ...other } = props; if (props.i18n) { i18n.addResourceBundle('zh', 'bluiRegistration', RegistrationDictionaries.chinese.translation, true, false); @@ -38,9 +38,33 @@ export const RegistrationContextProvider: React.FC - - {children} - + {children} ); }; + +const RegistrationContextProviderContent: React.FC< + React.PropsWithChildren & { PasswordDialog?: JSX.Element }> +> = (props) => { + const { children, errorConfig, ...registrationContextProps } = props; + const { t } = useTranslation(); + const mergedErrorConfig: ErrorManagerProps = { + title: t('bluiCommon:MESSAGES.ERROR'), + ...errorConfig, + dialogConfig: { + dismissLabel: t('bluiCommon:ACTIONS.OKAY'), + ...errorConfig?.dialogConfig ?? {}, + } + } + + + return ( + + {children} + + ); +}; From 81c19fc13d7c7e52b3b50f5765613fd5fc7e5f7a Mon Sep 17 00:00:00 2001 From: jeffgreiner-eaton Date: Wed, 6 Mar 2024 17:00:56 -0500 Subject: [PATCH 25/87] Update unit tests with act and clean up console --- .circleci/config.yml | 2 +- .../ChangePasswordDialog.test.tsx | 2 +- .../AccountDetailsScreen.test.tsx | 10 +++--- .../CreateAccountScreen.test.tsx | 10 +++--- .../CreatePasswordScreen.test.tsx | 10 +++--- .../screens/EulaScreen/EulaScreen.test.tsx | 26 ++++++++------- .../ForgotPasswordScreen.test.tsx | 32 ++++++++++++------- .../ForgotPasswordScreen.tsx | 1 + .../ResetPasswordScreen.test.tsx | 30 +++++++++-------- .../VerifyCodeScreen.test.tsx | 12 ++++--- 10 files changed, 80 insertions(+), 55 deletions(-) diff --git a/.circleci/config.yml b/.circleci/config.yml index 504185fb..8da53617 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -2,7 +2,7 @@ version: 2.1 orbs: codecov: codecov/codecov@3.2.2 gh: circleci/github-cli@2.2.0 - browser-tools: circleci/browser-tools@1.4.3 + browser-tools: circleci/browser-tools@1.4.8 jobs: install_dependencies: diff --git a/login-workflow/src/components/ChangePasswordDialog/ChangePasswordDialog.test.tsx b/login-workflow/src/components/ChangePasswordDialog/ChangePasswordDialog.test.tsx index aac9fc39..3a395a59 100644 --- a/login-workflow/src/components/ChangePasswordDialog/ChangePasswordDialog.test.tsx +++ b/login-workflow/src/components/ChangePasswordDialog/ChangePasswordDialog.test.tsx @@ -36,7 +36,7 @@ describe('Change Password Dialog tests', () => { }); const currentPasswordInput = getByLabelText('Current Password'); expect(currentPasswordInput).toHaveValue(''); - expect(screen.findAllByRole('input')).not.toBeNull(); + expect(screen.getByLabelText('Current Password')).not.toBeNull(); }); it('should display input field with passed prop', () => { diff --git a/login-workflow/src/screens/AccountDetailsScreen/AccountDetailsScreen.test.tsx b/login-workflow/src/screens/AccountDetailsScreen/AccountDetailsScreen.test.tsx index 96f519a4..2f94e7d2 100644 --- a/login-workflow/src/screens/AccountDetailsScreen/AccountDetailsScreen.test.tsx +++ b/login-workflow/src/screens/AccountDetailsScreen/AccountDetailsScreen.test.tsx @@ -1,6 +1,6 @@ import React from 'react'; import '@testing-library/jest-dom'; -import { cleanup, render, screen, RenderResult, fireEvent } from '@testing-library/react'; +import { cleanup, render, screen, RenderResult, fireEvent, act } from '@testing-library/react'; import { AccountDetailsScreen } from './AccountDetailsScreen'; import { RegistrationContextProvider } from '../../contexts'; import { AccountDetailsScreenProps } from './types'; @@ -59,7 +59,7 @@ describe('Account Details Screen', () => { expect(screen.getByText('Test Instruction')).toBeInTheDocument(); }); - it('should call onNext, when Next button clicked', () => { + it('should call onNext, when Next button clicked', async () => { const { getByLabelText } = renderer({ WorkflowCardActionsProps: { onNext: mockOnNext(), @@ -78,8 +78,10 @@ describe('Account Details Screen', () => { const nextButton = screen.getByText('Next'); expect(nextButton).toBeInTheDocument(); - expect(screen.getByText(/Next/i)).toBeEnabled(); - fireEvent.click(nextButton); + await act(async () => { + expect(await screen.findByText('Next')).toBeEnabled(); + fireEvent.click(nextButton); + }); expect(mockOnNext).toHaveBeenCalled(); }); diff --git a/login-workflow/src/screens/CreateAccountScreen/CreateAccountScreen.test.tsx b/login-workflow/src/screens/CreateAccountScreen/CreateAccountScreen.test.tsx index 321b5b16..ff18f6b7 100644 --- a/login-workflow/src/screens/CreateAccountScreen/CreateAccountScreen.test.tsx +++ b/login-workflow/src/screens/CreateAccountScreen/CreateAccountScreen.test.tsx @@ -1,6 +1,6 @@ import React from 'react'; import '@testing-library/jest-dom'; -import { cleanup, render, screen, fireEvent, RenderResult } from '@testing-library/react'; +import { cleanup, render, screen, fireEvent, RenderResult, act } from '@testing-library/react'; import { CreateAccountScreen } from './CreateAccountScreen'; import { CreateAccountScreenProps } from './types'; import { RegistrationContextProvider } from '../../contexts'; @@ -58,7 +58,7 @@ describe('Create Account Screen', () => { expect(verifyEmailInput).not.toHaveAttribute('aria-invalid', 'true'); }); - it('calls onNext when the next button is clicked', () => { + it('calls onNext when the next button is clicked', async () => { const { getByLabelText, getByText } = renderer({ WorkflowCardActionsProps: { onNext: mockOnNext(), @@ -71,8 +71,10 @@ describe('Create Account Screen', () => { fireEvent.change(emailInput, { target: { value: 'Abcd@123.net' } }); const nextButton = getByText('Next'); expect(nextButton).toBeInTheDocument(); - expect(screen.getByText(/Next/i)).toBeEnabled(); - fireEvent.click(nextButton); + await act(async () => { + expect(await screen.findByText('Next')).toBeEnabled(); + fireEvent.click(nextButton); + }); expect(mockOnNext).toHaveBeenCalled(); }); diff --git a/login-workflow/src/screens/CreatePasswordScreen/CreatePasswordScreen.test.tsx b/login-workflow/src/screens/CreatePasswordScreen/CreatePasswordScreen.test.tsx index 8e2106dc..d5593eec 100644 --- a/login-workflow/src/screens/CreatePasswordScreen/CreatePasswordScreen.test.tsx +++ b/login-workflow/src/screens/CreatePasswordScreen/CreatePasswordScreen.test.tsx @@ -1,6 +1,6 @@ import React from 'react'; import '@testing-library/jest-dom'; -import { cleanup, render, screen, fireEvent, RenderResult } from '@testing-library/react'; +import { cleanup, render, screen, fireEvent, RenderResult, act } from '@testing-library/react'; import { CreatePasswordScreen } from './CreatePasswordScreen'; import { CreatePasswordScreenProps } from './types'; import { RegistrationContextProvider } from '../../contexts'; @@ -67,7 +67,7 @@ describe('Create Password Screen', () => { expect(screen.getByText('One special character')).toBeInTheDocument(); }); - it('should call onNext, when Next button clicked', () => { + it('should call onNext, when Next button clicked', async () => { const { getByLabelText } = renderer({ WorkflowCardActionsProps: { onNext: mockOnNext(), @@ -92,8 +92,10 @@ describe('Create Password Screen', () => { const nextButton = screen.getByText('Next'); expect(nextButton).toBeInTheDocument(); - expect(screen.getByText(/Next/i)).toBeEnabled(); - fireEvent.click(nextButton); + await act(async () => { + expect(await screen.findByText('Next')).toBeEnabled(); + fireEvent.click(nextButton); + }); expect(mockOnNext).toHaveBeenCalled(); }); diff --git a/login-workflow/src/screens/EulaScreen/EulaScreen.test.tsx b/login-workflow/src/screens/EulaScreen/EulaScreen.test.tsx index ccacd33e..979cca6c 100644 --- a/login-workflow/src/screens/EulaScreen/EulaScreen.test.tsx +++ b/login-workflow/src/screens/EulaScreen/EulaScreen.test.tsx @@ -1,11 +1,12 @@ import React from 'react'; import '@testing-library/jest-dom'; -import { cleanup, render, screen, RenderResult, fireEvent } from '@testing-library/react'; +import { cleanup, render, screen, RenderResult, fireEvent, act, waitFor } from '@testing-library/react'; import { EulaScreen } from './EulaScreen'; import { RegistrationContextProvider } from '../../contexts'; import { EulaScreenProps } from './types'; import { RegistrationWorkflow } from '../../components'; import { registrationContextProviderProps } from '../../testUtils'; + afterEach(cleanup); describe('Eula Screen', () => { @@ -30,17 +31,17 @@ describe('Eula Screen', () => { ); - it('renders without crashing', () => { + it('renders without crashing', async () => { renderer(); - - expect(screen.getByText('License Agreement')).toBeInTheDocument(); + await waitFor(() => expect(screen.getByText('License Agreement')).toBeInTheDocument); }); - it('should update values when passed as props', () => { + it('should update values when passed as props', async () => { renderer({ WorkflowCardHeaderProps: { title: 'Test Title' } }); - - expect(screen.queryByText('License Agreement')).toBeNull(); - expect(screen.getByText('Test Title')).toBeInTheDocument(); + await waitFor(() => { + expect(screen.queryByText('License Agreement')).toBeNull(); + expect(screen.getByText('Test Title')).toBeInTheDocument(); + }); }); it('should update content of Eula Screen when eulaContent prop set ', () => { @@ -62,7 +63,7 @@ describe('Eula Screen', () => { expect(screen.getByText('')).toBeInTheDocument(); }); - it('should call onNext, when Next button clicked', () => { + it('should call onNext, when Next button clicked', async () => { const { getByLabelText } = renderer({ WorkflowCardActionsProps: { onNext: mockOnNext(), @@ -70,15 +71,16 @@ describe('Eula Screen', () => { nextLabel: 'Next', }, }); - const checkboxLabel = getByLabelText('I have read and agree to the Terms & Conditions'); fireEvent.click(checkboxLabel); fireEvent.change(checkboxLabel, { target: { accepted: true } }); const nextButton = screen.getByText('Next'); expect(nextButton).toBeInTheDocument(); - expect(screen.getByText(/Next/i)).toBeEnabled(); - fireEvent.click(nextButton); + await act(async () => { + expect(await screen.findByText('Next')).toBeEnabled(); + fireEvent.click(nextButton); + }); expect(mockOnNext).toHaveBeenCalled(); }); diff --git a/login-workflow/src/screens/ForgotPasswordScreen/ForgotPasswordScreen.test.tsx b/login-workflow/src/screens/ForgotPasswordScreen/ForgotPasswordScreen.test.tsx index 738089fd..da47f375 100644 --- a/login-workflow/src/screens/ForgotPasswordScreen/ForgotPasswordScreen.test.tsx +++ b/login-workflow/src/screens/ForgotPasswordScreen/ForgotPasswordScreen.test.tsx @@ -1,6 +1,6 @@ /* eslint-disable @typescript-eslint/no-unused-vars */ import React from 'react'; -import { cleanup, fireEvent, render, RenderResult, screen } from '@testing-library/react'; +import { act, cleanup, fireEvent, render, RenderResult, screen } from '@testing-library/react'; import { ForgotPasswordScreenProps } from './types'; import { AuthContextProvider } from '../../contexts'; import { BrowserRouter } from 'react-router-dom'; @@ -75,7 +75,7 @@ describe('Forgot Password Screen tests', () => { expect(mockOnPrevious).toHaveBeenCalled(); }); - it('firing onNext Callback functions', () => { + it('firing onNext Callback functions', async () => { const { getByLabelText } = renderer({ WorkflowCardActionsProps: { canGoNext: true, @@ -94,8 +94,10 @@ describe('Forgot Password Screen tests', () => { expect(emailInput).toHaveValue('aa@aa.aa'); expect(nextButton).toBeInTheDocument(); - expect(screen.getByText(/Next/i)).toBeEnabled(); - fireEvent.click(nextButton); + await act(async () => { + expect(await screen.findByText('Next')).toBeEnabled(); + fireEvent.click(nextButton); + }); expect(mockOnNext).toHaveBeenCalled(); }); @@ -114,14 +116,17 @@ describe('Forgot Password Screen tests', () => { fireEvent.blur(emailInput); expect(emailInput).toHaveValue('aa@aa.aa'); expect(nextButton).toBeInTheDocument(); - expect(screen.getByText(/Submit/i)).toBeEnabled(); - fireEvent.click(nextButton); + // expect(screen.getByText(/Submit/i)).toBeEnabled(); + await act(async () => { + expect(await screen.findByText('Submit')).toBeEnabled(); + fireEvent.click(nextButton); + }); const successMessage = await screen.findByText('Email Sent'); expect(successMessage).toBeInTheDocument(); }); - it('should not show success screen, when showSuccessScreen is false', () => { + it('should not show success screen, when showSuccessScreen is false', async () => { const { getByLabelText } = render( @@ -136,8 +141,10 @@ describe('Forgot Password Screen tests', () => { fireEvent.blur(emailInput); expect(emailInput).toHaveValue('aa@aa.aa'); expect(nextButton).toBeInTheDocument(); - expect(screen.getByText(/Submit/i)).toBeEnabled(); - fireEvent.click(nextButton); + await act(async () => { + expect(await screen.findByText('Submit')).toBeEnabled(); + fireEvent.click(nextButton); + }); const successMessage = screen.queryByText('Email Sent'); expect(successMessage).toBeNull(); @@ -158,8 +165,11 @@ describe('Forgot Password Screen tests', () => { fireEvent.blur(emailInput); expect(emailInput).toHaveValue('aa@aa.aa'); expect(nextButton).toBeInTheDocument(); - expect(screen.getByText(/Submit/i)).toBeEnabled(); - fireEvent.click(nextButton); + // expect(screen.getByText(/Submit/i)).toBeEnabled(); + await act(async () => { + expect(await screen.findByText('Submit')).toBeEnabled(); + fireEvent.click(nextButton); + }); const successMessage = await screen.findByText('Success'); expect(successMessage).toBeInTheDocument(); diff --git a/login-workflow/src/screens/ForgotPasswordScreen/ForgotPasswordScreen.tsx b/login-workflow/src/screens/ForgotPasswordScreen/ForgotPasswordScreen.tsx index 83707e0b..add83a7f 100644 --- a/login-workflow/src/screens/ForgotPasswordScreen/ForgotPasswordScreen.tsx +++ b/login-workflow/src/screens/ForgotPasswordScreen/ForgotPasswordScreen.tsx @@ -63,6 +63,7 @@ export const ForgotPasswordScreen: React.FC = (props) setIsLoading(false); } }, + // eslint-disable-next-line react-hooks/exhaustive-deps [actions, triggerError] ); diff --git a/login-workflow/src/screens/ResetPasswordScreen/ResetPasswordScreen.test.tsx b/login-workflow/src/screens/ResetPasswordScreen/ResetPasswordScreen.test.tsx index 9e74e86d..8c6590eb 100644 --- a/login-workflow/src/screens/ResetPasswordScreen/ResetPasswordScreen.test.tsx +++ b/login-workflow/src/screens/ResetPasswordScreen/ResetPasswordScreen.test.tsx @@ -1,7 +1,7 @@ import React from 'react'; import { BrowserRouter } from 'react-router-dom'; import '@testing-library/jest-dom'; -import { cleanup, render, screen, fireEvent, RenderResult, waitFor } from '@testing-library/react'; +import { cleanup, render, screen, fireEvent, RenderResult, waitFor, act } from '@testing-library/react'; import { ResetPasswordScreen } from './ResetPasswordScreen'; import { AuthContextProvider } from '../../contexts'; import { ResetPasswordScreenProps } from './types'; @@ -31,15 +31,15 @@ describe('Reset Password Screen', () => { ); - it('renders without crashing', () => { + it('renders without crashing', async () => { renderer(); - expect(screen.getByText('Reset Password')).toBeInTheDocument(); + await waitFor(() => expect(screen.getByText('Reset Password')).toBeInTheDocument); }); - it('should update values when passed as props', () => { + it('should update values when passed as props', async () => { renderer({ WorkflowCardHeaderProps: { title: 'Test Title' } }); expect(screen.queryByText('Reset Password')).toBeNull(); - expect(screen.getByText('Test Title')).toBeInTheDocument(); + await waitFor(() => expect(screen.getByText('Test Title')).toBeInTheDocument); }); it('should show success screen, when okay button is clicked', async () => { @@ -65,9 +65,9 @@ describe('Reset Password Screen', () => { await waitFor(() => expect(screen.getByText('Your password was successfully reset.'))); }); - it('should show loader, when loading prop is passed to WorkflowCardBaseProps', () => { + it('should show loader, when loading prop is passed to WorkflowCardBaseProps', async () => { renderer({ WorkflowCardBaseProps: { loading: true } }); - expect(screen.getByTestId('blui-spinner')).toBeInTheDocument(); + await waitFor(() => expect(screen.getByTestId('blui-spinner')).toBeInTheDocument); }); it('should call onNext, when Next button clicked', async () => { @@ -87,12 +87,14 @@ describe('Reset Password Screen', () => { fireEvent.blur(confirmPasswordField); const nextButton = screen.getByText('Next'); expect(nextButton).toBeInTheDocument(); - expect(screen.getByText(/Next/i)).toBeEnabled(); - fireEvent.click(nextButton); - await waitFor(() => expect(mockOnNext).toHaveBeenCalled()); + await act(async () => { + expect(await screen.findByText('Next')).toBeEnabled(); + fireEvent.click(nextButton); + }); + expect(mockOnNext).toHaveBeenCalled(); }); - it('should call onPrevious, when Back button clicked', () => { + it('should call onPrevious, when Back button clicked', async () => { renderer({ WorkflowCardActionsProps: { onPrevious: mockOnPrevious(), @@ -103,8 +105,10 @@ describe('Reset Password Screen', () => { const backButton = screen.getByText('Back'); expect(backButton).toBeInTheDocument(); - expect(screen.getByText(/Back/i)).toBeEnabled(); - fireEvent.click(backButton); + await act(async () => { + expect(await screen.findByText('Back')).toBeEnabled(); + fireEvent.click(backButton); + }); expect(mockOnPrevious).toHaveBeenCalled(); }); }); diff --git a/login-workflow/src/screens/VerifyCodeScreen/VerifyCodeScreen.test.tsx b/login-workflow/src/screens/VerifyCodeScreen/VerifyCodeScreen.test.tsx index c10748d3..1aff9b9c 100644 --- a/login-workflow/src/screens/VerifyCodeScreen/VerifyCodeScreen.test.tsx +++ b/login-workflow/src/screens/VerifyCodeScreen/VerifyCodeScreen.test.tsx @@ -1,6 +1,6 @@ import React from 'react'; import '@testing-library/jest-dom'; -import { cleanup, render, screen, fireEvent, RenderResult } from '@testing-library/react'; +import { cleanup, render, screen, fireEvent, RenderResult, act } from '@testing-library/react'; import { VerifyCodeScreen } from './VerifyCodeScreen'; import { VerifyCodeScreenProps } from './types'; import { RegistrationContextProvider } from '../../contexts'; @@ -118,7 +118,7 @@ describe('Verify Code Screen', () => { expect(mockOnResend).toHaveBeenCalled(); }); - it('calls onNext when the next button is clicked', () => { + it('calls onNext when the next button is clicked', async () => { const { getByLabelText } = renderer({ WorkflowCardActionsProps: { canGoNext: true, @@ -131,9 +131,11 @@ describe('Verify Code Screen', () => { const verifyCodeInput = getByLabelText('Verification Code'); const nextButton = screen.getByText('Next'); expect(verifyCodeInput).toHaveValue(''); - expect(screen.getByText(/Next/i)).toBeDisabled(); - fireEvent.change(verifyCodeInput, { target: { value: '123' } }); - fireEvent.click(nextButton); + await act(async () => { + expect(await screen.findByText('Next')).toBeDisabled(); + fireEvent.change(verifyCodeInput, { target: { value: '123' } }); + fireEvent.click(nextButton); + }); expect(mockOnNext).toHaveBeenCalled(); }); From 72cbd333e86a31ef9bd644d41cb8d35edfadfeaf Mon Sep 17 00:00:00 2001 From: jeffgreiner-eaton Date: Thu, 7 Mar 2024 09:46:27 -0500 Subject: [PATCH 26/87] fix typo --- login-workflow/docs/screens/success.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/login-workflow/docs/screens/success.md b/login-workflow/docs/screens/success.md index dacc5e7b..9b27ceb4 100644 --- a/login-workflow/docs/screens/success.md +++ b/login-workflow/docs/screens/success.md @@ -1,6 +1,6 @@ # SuccessScreenBase -A component to use as a simple success screen for a mini-1 step workflow like the Forgot Password. It renders a message, icon, and a dismiss button. +A component to use as a simple success screen for a mini 1-step workflow like the Forgot Password. It renders a message, icon, and a dismiss button. ![Success](../../media/screens/success.png) From aa42a040059ae167921446ec461b013fa3505b2d Mon Sep 17 00:00:00 2001 From: jeffgreiner-eaton Date: Thu, 7 Mar 2024 09:56:16 -0500 Subject: [PATCH 27/87] update navigate description --- login-workflow/docs/API.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/login-workflow/docs/API.md b/login-workflow/docs/API.md index e4ca840d..2d1b0097 100644 --- a/login-workflow/docs/API.md +++ b/login-workflow/docs/API.md @@ -10,7 +10,7 @@ The `RegistrationContextProvider` manages the state of the registration workflow - **language**: _`string`_ - The language code to use for the registration workflow. This is used to determine which language to use for the UI and for the API calls. - **navigate**: _`(destination: -1 | string) => void`_ - - A function that is used to navigate to a new URL. This is used to navigate to the various screens of the registration workflow. + - A function that is used to navigate to a new URL. This is used to navigate to the various screens of the registration workflow and destination: -1 navigates back to the previous screen the user last visited. - **routeConfig**: _`RouteConfig`_ - An object that defines the various routes for the registration workflow. See [RouteConfig](#routeconfig) for more information. - **i18n**: (optional) _`i18n`_ From 44a99913656a5a0637ead28f8213c9d32c38d848 Mon Sep 17 00:00:00 2001 From: jeffgreiner-eaton Date: Thu, 7 Mar 2024 13:21:06 -0500 Subject: [PATCH 28/87] update providers & add t function prop --- .../docs/components/error-manager.md | 1 + .../src/components/Error/ErrorManager.tsx | 22 +++++--- .../RegistrationWorkflow.tsx | 35 +++++++----- .../src/contexts/AuthContext/provider.tsx | 56 +++++++++---------- .../contexts/RegistrationContext/provider.tsx | 54 +++++++++--------- .../ForgotPasswordScreen.tsx | 1 + 6 files changed, 91 insertions(+), 78 deletions(-) diff --git a/login-workflow/docs/components/error-manager.md b/login-workflow/docs/components/error-manager.md index 5d1f4e97..793693e5 100644 --- a/login-workflow/docs/components/error-manager.md +++ b/login-workflow/docs/components/error-manager.md @@ -27,6 +27,7 @@ import { ErrorManager } from '@brightlayer-ui/react-auth-workflow'; | onClose | `() => void` | Function to call when the close/dismiss button is clicked. | | | dialogConfig | `{title?: string, dismissLabel?: string}` | Configuration options for the dialog. See [DialogConfig Props](#dialogconfigprops) | | | messageBoxConfig | `MessageBoxProps` | Configuration options for the message box. See [MessageBoxProps](#messageboxprops) | | +| t | `TFunction \| ((key: string) => string)` | Translate function to translate error related text. | | | children | `ReactNode` | Message box errors will appear before or after content passed as children. | | ### DialogConfigProps diff --git a/login-workflow/src/components/Error/ErrorManager.tsx b/login-workflow/src/components/Error/ErrorManager.tsx index e43ee0f7..d8eac38c 100644 --- a/login-workflow/src/components/Error/ErrorManager.tsx +++ b/login-workflow/src/components/Error/ErrorManager.tsx @@ -2,6 +2,7 @@ import React, { useCallback } from 'react'; import { BasicDialog } from '../Dialog/BasicDialog'; import ErrorMessageBox from './ErrorMessageBox'; import { SxProps, Theme } from '@mui/material/styles'; +import { TFunction } from 'i18next'; export type AuthError = { cause: { title: string; errorMessage: string } }; @@ -27,6 +28,12 @@ export type ErrorManagerProps = { */ error?: string; + /** + * Translate function to translate error related text + */ + + t?: TFunction | ((key: string) => string); + /** * Configuration options when using mode='dialog' * @param {string} dialogConfig.title - The title used in the dialog header @@ -76,6 +83,7 @@ const ErrorManager: React.FC = (props): JSX.Element => { error = '', onClose = (): void => {}, dialogConfig, + t = (key: string): string => key, messageBoxConfig = { position: 'top', }, @@ -85,14 +93,14 @@ const ErrorManager: React.FC = (props): JSX.Element => { (): JSX.Element => ( 0} - title={dialogConfig?.title ?? title ?? 'Error' } - body={(error)} + title={t(dialogConfig?.title ?? title ?? 'Error')} + body={t(error)} onClose={onClose} - dismissButtonText={dialogConfig?.dismissLabel ?? 'Okay'} + dismissButtonText={t(dialogConfig?.dismissLabel ?? 'Okay')} sx={dialogConfig?.sx} /> ), - [dialogConfig, title, error, onClose] + [dialogConfig, title, error, onClose, t] ); const ErrorMessageBoxWithProps = useCallback((): JSX.Element => { @@ -100,8 +108,8 @@ const ErrorManager: React.FC = (props): JSX.Element => { return ( = (props): JSX.Element => { onClose={onClose} /> ); - }, [error, title, messageBoxConfig, onClose]); + }, [error, title, messageBoxConfig, onClose, t]); return mode === 'dialog' && error.length > 0 ? ( <> diff --git a/login-workflow/src/components/RegistrationWorkflow/RegistrationWorkflow.tsx b/login-workflow/src/components/RegistrationWorkflow/RegistrationWorkflow.tsx index ae27179d..93f9e2f6 100644 --- a/login-workflow/src/components/RegistrationWorkflow/RegistrationWorkflow.tsx +++ b/login-workflow/src/components/RegistrationWorkflow/RegistrationWorkflow.tsx @@ -58,9 +58,18 @@ export const RegistrationWorkflow: React.FC, - , - , - ] + , + , + , + ] : [ - , - , - , - , - , - ], + , + , + , + , + , + ], } = props; const screens = [...(Array.isArray(children) ? children : [children])]; diff --git a/login-workflow/src/contexts/AuthContext/provider.tsx b/login-workflow/src/contexts/AuthContext/provider.tsx index 9b8ad5a8..dfa21e64 100644 --- a/login-workflow/src/contexts/AuthContext/provider.tsx +++ b/login-workflow/src/contexts/AuthContext/provider.tsx @@ -13,6 +13,29 @@ import { AuthDictionaries } from './AuthDictionaries'; import { SharedDictionaries } from '../SharedDictionaries'; import { ErrorManagerProps } from '../../components/Error'; +const AuthContextProviderContent: React.FC< + React.PropsWithChildren & { PasswordDialog?: JSX.Element }> +> = (props) => { + const { children, errorConfig, ...authContextProps } = props; + const { t } = useTranslation(); + const mergedErrorConfig: ErrorManagerProps = { + t: t, + title: 'bluiCommon:MESSAGES.ERROR', + error: 'bluiAuth:LOGIN.INVALID_CREDENTIALS', + ...errorConfig, + dialogConfig: { + dismissLabel: 'bluiCommon:ACTIONS.OKAY', + ...(errorConfig?.dialogConfig ?? {}), + }, + }; + + return ( + + {children} + + ); +}; + export const AuthContextProvider: React.FC< React.PropsWithChildren > = (props) => { @@ -38,36 +61,9 @@ export const AuthContextProvider: React.FC< return ( - {children} + + {children} + ); }; - -const AuthContextProviderContent: React.FC< - React.PropsWithChildren & { PasswordDialog?: JSX.Element }> -> = (props) => { - const { children, errorConfig, ...authContextProps } = props; - const { t } = useTranslation(); - const mergedErrorConfig: ErrorManagerProps = { - title: t('bluiCommon:MESSAGES.ERROR'), - error: t('bluiAuth:LOGIN.INVALID_CREDENTIALS'), - ...errorConfig, - dialogConfig: { - dismissLabel:t('bluiCommon:ACTIONS.OKAY'), - ...errorConfig?.dialogConfig ?? {}, - } - } - - return ( - - {children} - - ); -}; - - diff --git a/login-workflow/src/contexts/RegistrationContext/provider.tsx b/login-workflow/src/contexts/RegistrationContext/provider.tsx index ed50a6f2..11a45783 100644 --- a/login-workflow/src/contexts/RegistrationContext/provider.tsx +++ b/login-workflow/src/contexts/RegistrationContext/provider.tsx @@ -1,6 +1,6 @@ /** * @packageDocumentation - * @module RegistrationWorkflowContextProvider + * @module RegistrationContextProvider */ import React, { useEffect } from 'react'; @@ -13,6 +13,28 @@ import { SharedDictionaries } from '../SharedDictionaries'; import { RegistrationDictionaries } from './RegistrationDictionaries'; import { ErrorManagerProps } from '../../components/Error'; +const RegistrationContextProviderContent: React.FC< + React.PropsWithChildren> +> = (props) => { + const { children, errorConfig, ...registrationContextProps } = props; + const { t } = useTranslation(); + const mergedErrorConfig: ErrorManagerProps = { + t: t, + title: 'bluiCommon:MESSAGES.ERROR', + ...errorConfig, + dialogConfig: { + dismissLabel: 'bluiCommon:ACTIONS.OKAY', + ...(errorConfig?.dialogConfig ?? {}), + }, + }; + + return ( + + {children} + + ); +}; + export const RegistrationContextProvider: React.FC> = ( props ) => { @@ -38,33 +60,9 @@ export const RegistrationContextProvider: React.FC - {children} + + {children} + ); }; - -const RegistrationContextProviderContent: React.FC< - React.PropsWithChildren & { PasswordDialog?: JSX.Element }> -> = (props) => { - const { children, errorConfig, ...registrationContextProps } = props; - const { t } = useTranslation(); - const mergedErrorConfig: ErrorManagerProps = { - title: t('bluiCommon:MESSAGES.ERROR'), - ...errorConfig, - dialogConfig: { - dismissLabel: t('bluiCommon:ACTIONS.OKAY'), - ...errorConfig?.dialogConfig ?? {}, - } - } - - - return ( - - {children} - - ); -}; diff --git a/login-workflow/src/screens/ForgotPasswordScreen/ForgotPasswordScreen.tsx b/login-workflow/src/screens/ForgotPasswordScreen/ForgotPasswordScreen.tsx index 83707e0b..add83a7f 100644 --- a/login-workflow/src/screens/ForgotPasswordScreen/ForgotPasswordScreen.tsx +++ b/login-workflow/src/screens/ForgotPasswordScreen/ForgotPasswordScreen.tsx @@ -63,6 +63,7 @@ export const ForgotPasswordScreen: React.FC = (props) setIsLoading(false); } }, + // eslint-disable-next-line react-hooks/exhaustive-deps [actions, triggerError] ); From 838119826373cda81a2e3c83ed54ef52e49c5153 Mon Sep 17 00:00:00 2001 From: jeffgreiner-eaton Date: Thu, 7 Mar 2024 13:27:44 -0500 Subject: [PATCH 29/87] revert action failure --- login-workflow/example/src/actions/AuthUIActions.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/login-workflow/example/src/actions/AuthUIActions.tsx b/login-workflow/example/src/actions/AuthUIActions.tsx index 5bb1a892..f55036d9 100644 --- a/login-workflow/example/src/actions/AuthUIActions.tsx +++ b/login-workflow/example/src/actions/AuthUIActions.tsx @@ -11,7 +11,7 @@ function getRandomInt(max: number): number { function isRandomFailure(): boolean { const randomResponseNumber = getRandomInt(100); - return true; // randomResponseNumber < 10; + return false; // randomResponseNumber < 10; } type AuthUIActionsWithApp = (appHelper: AppContextType) => AuthUIActions; From fab13c0acd9114b9c7140d74723dcc73939aa70f Mon Sep 17 00:00:00 2001 From: jeffgreiner-eaton Date: Thu, 7 Mar 2024 13:36:24 -0500 Subject: [PATCH 30/87] revert to default message-box in example --- login-workflow/example/src/screens/Login.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/login-workflow/example/src/screens/Login.tsx b/login-workflow/example/src/screens/Login.tsx index 8b4364fa..9f3b31fe 100644 --- a/login-workflow/example/src/screens/Login.tsx +++ b/login-workflow/example/src/screens/Login.tsx @@ -9,7 +9,7 @@ export const Login = (): JSX.Element => ( projectImage={logo} header={} errorDisplayConfig={{ - mode: 'dialog', + mode: 'message-box', messageBoxConfig: { dismissible: true, position: 'top', From 7dd2edbb3d7672c059ac2fbca5b84768f867e696 Mon Sep 17 00:00:00 2001 From: jeffgreiner-eaton Date: Thu, 7 Mar 2024 15:03:29 -0500 Subject: [PATCH 31/87] update TFunction prop & docs --- login-workflow/docs/components/error-manager.md | 2 +- login-workflow/src/components/Error/ErrorManager.tsx | 3 +-- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/login-workflow/docs/components/error-manager.md b/login-workflow/docs/components/error-manager.md index 793693e5..6bd61549 100644 --- a/login-workflow/docs/components/error-manager.md +++ b/login-workflow/docs/components/error-manager.md @@ -27,7 +27,7 @@ import { ErrorManager } from '@brightlayer-ui/react-auth-workflow'; | onClose | `() => void` | Function to call when the close/dismiss button is clicked. | | | dialogConfig | `{title?: string, dismissLabel?: string}` | Configuration options for the dialog. See [DialogConfig Props](#dialogconfigprops) | | | messageBoxConfig | `MessageBoxProps` | Configuration options for the message box. See [MessageBoxProps](#messageboxprops) | | -| t | `TFunction \| ((key: string) => string)` | Translate function to translate error related text. | | +| t | `TFunction` | Translate function to translate error related text. | | | children | `ReactNode` | Message box errors will appear before or after content passed as children. | | ### DialogConfigProps diff --git a/login-workflow/src/components/Error/ErrorManager.tsx b/login-workflow/src/components/Error/ErrorManager.tsx index d8eac38c..14b4957f 100644 --- a/login-workflow/src/components/Error/ErrorManager.tsx +++ b/login-workflow/src/components/Error/ErrorManager.tsx @@ -31,8 +31,7 @@ export type ErrorManagerProps = { /** * Translate function to translate error related text */ - - t?: TFunction | ((key: string) => string); + t?: TFunction; /** * Configuration options when using mode='dialog' From 0128dfbd37296da775008daac7127f007220e910 Mon Sep 17 00:00:00 2001 From: jeffgreiner-eaton Date: Fri, 8 Mar 2024 10:21:02 -0500 Subject: [PATCH 32/87] update tests --- .../CreateAccountScreen/CreateAccountScreen.test.tsx | 11 ++++++++--- .../src/screens/EulaScreen/EulaScreen.test.tsx | 1 + .../ResetPasswordScreen/ResetPasswordScreen.test.tsx | 3 ++- 3 files changed, 11 insertions(+), 4 deletions(-) diff --git a/login-workflow/src/screens/CreateAccountScreen/CreateAccountScreen.test.tsx b/login-workflow/src/screens/CreateAccountScreen/CreateAccountScreen.test.tsx index ff18f6b7..6edc2b53 100644 --- a/login-workflow/src/screens/CreateAccountScreen/CreateAccountScreen.test.tsx +++ b/login-workflow/src/screens/CreateAccountScreen/CreateAccountScreen.test.tsx @@ -68,6 +68,7 @@ describe('Create Account Screen', () => { }); const emailInput = getByLabelText('Email Address'); + expect(screen.getByLabelText('Email Address')).toBeInTheDocument(); fireEvent.change(emailInput, { target: { value: 'Abcd@123.net' } }); const nextButton = getByText('Next'); expect(nextButton).toBeInTheDocument(); @@ -79,7 +80,7 @@ describe('Create Account Screen', () => { expect(mockOnNext).toHaveBeenCalled(); }); - it('calls onPrevious when the back button is clicked', () => { + it('calls onPrevious when the back button is clicked', async () => { const { getByText } = renderer({ WorkflowCardActionsProps: { onPrevious: mockOnPrevious(), @@ -90,8 +91,12 @@ describe('Create Account Screen', () => { const backButton = getByText('Back'); expect(backButton).toBeInTheDocument(); - expect(screen.getByText(/Back/i)).toBeEnabled(); - fireEvent.click(backButton); + // expect(screen.getByText(/Back/i)).toBeEnabled(); + await act(async () => { + expect(await screen.findByText('Back')).toBeEnabled(); + fireEvent.click(backButton); + }); + // fireEvent.click(backButton); expect(mockOnPrevious).toHaveBeenCalled(); }); diff --git a/login-workflow/src/screens/EulaScreen/EulaScreen.test.tsx b/login-workflow/src/screens/EulaScreen/EulaScreen.test.tsx index 979cca6c..0eb396fe 100644 --- a/login-workflow/src/screens/EulaScreen/EulaScreen.test.tsx +++ b/login-workflow/src/screens/EulaScreen/EulaScreen.test.tsx @@ -71,6 +71,7 @@ describe('Eula Screen', () => { nextLabel: 'Next', }, }); + await waitFor(() => expect(screen.getByText('License Agreement')).toBeInTheDocument); const checkboxLabel = getByLabelText('I have read and agree to the Terms & Conditions'); fireEvent.click(checkboxLabel); fireEvent.change(checkboxLabel, { target: { accepted: true } }); diff --git a/login-workflow/src/screens/ResetPasswordScreen/ResetPasswordScreen.test.tsx b/login-workflow/src/screens/ResetPasswordScreen/ResetPasswordScreen.test.tsx index 8c6590eb..8e9f0c43 100644 --- a/login-workflow/src/screens/ResetPasswordScreen/ResetPasswordScreen.test.tsx +++ b/login-workflow/src/screens/ResetPasswordScreen/ResetPasswordScreen.test.tsx @@ -78,7 +78,7 @@ describe('Reset Password Screen', () => { nextLabel: 'Next', }, }); - + await waitFor(() => expect(screen.getByText('Reset Password')).toBeInTheDocument); const passwordField = getByLabelText('New Password'); const confirmPasswordField = getByLabelText('Confirm New Password'); fireEvent.change(passwordField, { target: { value: 'Abcd@123' } }); @@ -102,6 +102,7 @@ describe('Reset Password Screen', () => { previousLabel: 'Back', }, }); + await waitFor(() => expect(screen.getByText('Reset Password')).toBeInTheDocument); const backButton = screen.getByText('Back'); expect(backButton).toBeInTheDocument(); From 3771e99da59dbe5902ff23f0ba2190f38cbda81b Mon Sep 17 00:00:00 2001 From: jeffgreiner-eaton Date: Fri, 8 Mar 2024 12:08:28 -0500 Subject: [PATCH 33/87] update act --- .../screens/CreateAccountScreen/CreateAccountScreen.test.tsx | 2 -- 1 file changed, 2 deletions(-) diff --git a/login-workflow/src/screens/CreateAccountScreen/CreateAccountScreen.test.tsx b/login-workflow/src/screens/CreateAccountScreen/CreateAccountScreen.test.tsx index 6edc2b53..ed1e89ab 100644 --- a/login-workflow/src/screens/CreateAccountScreen/CreateAccountScreen.test.tsx +++ b/login-workflow/src/screens/CreateAccountScreen/CreateAccountScreen.test.tsx @@ -91,12 +91,10 @@ describe('Create Account Screen', () => { const backButton = getByText('Back'); expect(backButton).toBeInTheDocument(); - // expect(screen.getByText(/Back/i)).toBeEnabled(); await act(async () => { expect(await screen.findByText('Back')).toBeEnabled(); fireEvent.click(backButton); }); - // fireEvent.click(backButton); expect(mockOnPrevious).toHaveBeenCalled(); }); From e6a84ddf62c61f26feca90e63c7fba895bbfedd0 Mon Sep 17 00:00:00 2001 From: jeffgreiner-eaton Date: Fri, 8 Mar 2024 15:30:55 -0500 Subject: [PATCH 34/87] update reg workflow tests --- .../RegistrationWorkflow.test.tsx | 89 +++++++++++-------- 1 file changed, 50 insertions(+), 39 deletions(-) diff --git a/login-workflow/src/components/RegistrationWorkflow/RegistrationWorkflow.test.tsx b/login-workflow/src/components/RegistrationWorkflow/RegistrationWorkflow.test.tsx index ca444832..041021c5 100644 --- a/login-workflow/src/components/RegistrationWorkflow/RegistrationWorkflow.test.tsx +++ b/login-workflow/src/components/RegistrationWorkflow/RegistrationWorkflow.test.tsx @@ -65,10 +65,14 @@ describe('RegistrationWorkflow', () => { expect(nextScreen).toHaveBeenCalledWith({ screenId: 'Eula', values: { accepted: true } }); }); - it('should set screen data for default registration workflow in the context', () => { + it('should set screen data for default registration workflow in the context', async () => { const wrapper = ({ children }: any): JSX.Element => ( - {children} + + {children} + {children} + {children} + ); const { result } = renderHook(() => useRegistrationWorkflowContext(), { wrapper }); @@ -76,8 +80,8 @@ describe('RegistrationWorkflow', () => { expect(result.current.screenData['Eula'].accepted).toBeFalsy(); expect(result.current.screenData['CreateAccount'].emailAddress).toBe(''); - act(() => { - void result.current.nextScreen({ screenId: 'Eula', values: { accepted: true } }); + await act(async () => { + await result.current.nextScreen({ screenId: 'Eula', values: { accepted: true } }); }); act(() => { result.current.previousScreen({ @@ -87,21 +91,26 @@ describe('RegistrationWorkflow', () => { }); expect(result.current.screenData['Eula'].accepted).toBeTruthy(); - - void ((): void => - expect(result.current.screenData['CreateAccount'].emailAddress).toBe('emailAddress@emailAddress.com')); + expect(result.current.screenData['CreateAccount'].emailAddress).toBe('emailAddress@emailAddress.com'); }); - it('should set screen data for custom registration workflow in the context', () => { + it('should set screen data for custom registration workflow in the context', async () => { const wrapper = ({ children }: any): JSX.Element => ( - {children} + + {children} + {children} + {children} + ); const { result } = renderHook(() => useRegistrationWorkflowContext(), { wrapper }); - act(() => { - void result.current.nextScreen({ screenId: 'Screen1', values: { test: 'test' } }); + expect(result.current.screenData['Eula'].accepted).toBeFalsy(); + expect(result.current.screenData['CreateAccount'].emailAddress).toBe(''); + + await act(async () => { + result.current.nextScreen({ screenId: 'Screen1', values: { test: 'test' } }); }); act(() => { result.current.previousScreen({ @@ -110,37 +119,39 @@ describe('RegistrationWorkflow', () => { }); }); expect(result.current.screenData['Other']['Screen1'].test).toBe('test'); + expect(result.current.screenData['Other']['Screen2'].test2).toBe('test2'); +}); - void ((): void => expect(result.current.screenData['Other']['Screen2'].test2).toBe('test2')); - }); - - it('should check for lower bound of initialScreenIndex props', () => { - renderer({ initialScreenIndex: -1 }); - expect(screen.getByText('Screen 1')).toBeInTheDocument(); - }); +it('should check for lower bound of initialScreenIndex props', () => { + renderer({ initialScreenIndex: -1 }); + expect(screen.getByText('Screen 1')).toBeInTheDocument(); +}); - it('should check for upper bound of initialScreenIndex props', () => { - renderer({ initialScreenIndex: 2 }); - expect(screen.getByText('Screen 2')).toBeInTheDocument(); - }); +it('should check for upper bound of initialScreenIndex props', () => { + renderer({ initialScreenIndex: 2 }); + expect(screen.getByText('Screen 2')).toBeInTheDocument(); +}); - it('should render custom success screen', () => { - const props = defaultProps; - defaultProps.successScreen = Success; - const { getByLabelText, getByText } = render( - - - - - - ); - const verifyEmailInput = getByLabelText('Email Address'); - fireEvent.change(verifyEmailInput, { target: { value: 'test@test.net' } }); - fireEvent.blur(verifyEmailInput); - const nextButton = getByText('Next'); - expect(screen.getByText(/Next/i)).toBeEnabled(); +it('should render custom success screen', async () => { + const props = defaultProps; + defaultProps.successScreen = Success; + const { getByLabelText, getByText } = render( + + + + + + ); + const verifyEmailInput = getByLabelText('Email Address'); + fireEvent.change(verifyEmailInput, { target: { value: 'test@test.net' } }); + fireEvent.blur(verifyEmailInput); + const nextButton = getByText('Next'); + expect(screen.getByText(/Next/i)).toBeEnabled(); + await act(async () => { + expect(await screen.findByText('Next')).toBeEnabled(); fireEvent.click(nextButton); - - void ((): void => expect(screen.getByText('Success')).toBeInTheDocument()); }); + + void ((): void => expect(screen.getByText('Success')).toBeInTheDocument()); +}); }); From e518925c454d9cd8c474aedd9feac104a35a9672 Mon Sep 17 00:00:00 2001 From: jeffgreiner-eaton Date: Fri, 8 Mar 2024 15:43:20 -0500 Subject: [PATCH 35/87] prettier & lint --- .../RegistrationWorkflow.test.tsx | 62 +++++++++---------- 1 file changed, 31 insertions(+), 31 deletions(-) diff --git a/login-workflow/src/components/RegistrationWorkflow/RegistrationWorkflow.test.tsx b/login-workflow/src/components/RegistrationWorkflow/RegistrationWorkflow.test.tsx index 041021c5..80a68509 100644 --- a/login-workflow/src/components/RegistrationWorkflow/RegistrationWorkflow.test.tsx +++ b/login-workflow/src/components/RegistrationWorkflow/RegistrationWorkflow.test.tsx @@ -110,7 +110,7 @@ describe('RegistrationWorkflow', () => { expect(result.current.screenData['CreateAccount'].emailAddress).toBe(''); await act(async () => { - result.current.nextScreen({ screenId: 'Screen1', values: { test: 'test' } }); + await result.current.nextScreen({ screenId: 'Screen1', values: { test: 'test' } }); }); act(() => { result.current.previousScreen({ @@ -120,38 +120,38 @@ describe('RegistrationWorkflow', () => { }); expect(result.current.screenData['Other']['Screen1'].test).toBe('test'); expect(result.current.screenData['Other']['Screen2'].test2).toBe('test2'); -}); - -it('should check for lower bound of initialScreenIndex props', () => { - renderer({ initialScreenIndex: -1 }); - expect(screen.getByText('Screen 1')).toBeInTheDocument(); -}); + }); -it('should check for upper bound of initialScreenIndex props', () => { - renderer({ initialScreenIndex: 2 }); - expect(screen.getByText('Screen 2')).toBeInTheDocument(); -}); + it('should check for lower bound of initialScreenIndex props', () => { + renderer({ initialScreenIndex: -1 }); + expect(screen.getByText('Screen 1')).toBeInTheDocument(); + }); -it('should render custom success screen', async () => { - const props = defaultProps; - defaultProps.successScreen = Success; - const { getByLabelText, getByText } = render( - - - - - - ); - const verifyEmailInput = getByLabelText('Email Address'); - fireEvent.change(verifyEmailInput, { target: { value: 'test@test.net' } }); - fireEvent.blur(verifyEmailInput); - const nextButton = getByText('Next'); - expect(screen.getByText(/Next/i)).toBeEnabled(); - await act(async () => { - expect(await screen.findByText('Next')).toBeEnabled(); - fireEvent.click(nextButton); + it('should check for upper bound of initialScreenIndex props', () => { + renderer({ initialScreenIndex: 2 }); + expect(screen.getByText('Screen 2')).toBeInTheDocument(); }); - void ((): void => expect(screen.getByText('Success')).toBeInTheDocument()); -}); + it('should render custom success screen', async () => { + const props = defaultProps; + defaultProps.successScreen = Success; + const { getByLabelText, getByText } = render( + + + + + + ); + const verifyEmailInput = getByLabelText('Email Address'); + fireEvent.change(verifyEmailInput, { target: { value: 'test@test.net' } }); + fireEvent.blur(verifyEmailInput); + const nextButton = getByText('Next'); + expect(screen.getByText(/Next/i)).toBeEnabled(); + await act(async () => { + expect(await screen.findByText('Next')).toBeEnabled(); + fireEvent.click(nextButton); + }); + + void ((): void => expect(screen.getByText('Success')).toBeInTheDocument()); + }); }); From 846f89c2969d3af01e56b6bf8d9d1d2e8bfcabce Mon Sep 17 00:00:00 2001 From: jeffgreiner-eaton Date: Tue, 12 Mar 2024 14:59:50 -0400 Subject: [PATCH 36/87] Error manager with dynamic values --- .../src/actions/RegistrationUIActions.tsx | 93 ++++++++++--------- .../src/translations/dictionary/english.ts | 4 + .../src/translations/dictionary/types.ts | 4 + .../src/components/Error/ErrorManager.tsx | 33 +++++-- .../contexts/ErrorContext/useErrorManager.tsx | 6 +- 5 files changed, 87 insertions(+), 53 deletions(-) diff --git a/login-workflow/example/src/actions/RegistrationUIActions.tsx b/login-workflow/example/src/actions/RegistrationUIActions.tsx index 200b593b..157b4e6c 100644 --- a/login-workflow/example/src/actions/RegistrationUIActions.tsx +++ b/login-workflow/example/src/actions/RegistrationUIActions.tsx @@ -61,18 +61,27 @@ export const ProjectRegistrationUIActions: () => RegistrationUIActions = () => ( requestRegistrationCode: async (email: string): Promise => { await sleep(800); if (isRandomFailure()) { - throw new Error('Sorry, there was a problem sending your request.'); + // throw new Error('Sorry, there was a problem sending your request.'); } - return 'a1b2c3'; + throw new Error('', { + cause: { + errorMessage: 'ERROR_MESSAGE.EMAIL_ERROR_MESSAGE', + errorOptions: { email: email }, + title: 'ERROR_MESSAGE.EMAIL_ERROR_TITLE', + titleOptions: {timestamp: Date.now()}, + + } +}); +return 'a1b2c3'; }, - createPassword: async (password: string): Promise => { - await sleep(800); - if (isRandomFailure()) { - throw new Error('Sorry, there was a problem sending your request.'); - } - return true; - }, +createPassword: async (password: string): Promise => { + await sleep(800); + if (isRandomFailure()) { + throw new Error('Sorry, there was a problem sending your request.'); + } + return true; +}, setAccountDetails: async (details: AccountDetails): Promise => { await sleep(800); @@ -82,37 +91,37 @@ export const ProjectRegistrationUIActions: () => RegistrationUIActions = () => ( return true; }, - /** - * The user has tapped on an email link inviting them to register with the application. - * The application should validate the code provided by the link. - * - * @param validationCode Registration code provided from the link. - * @param validationEmail Email provided from the invitation email link (optional) `?email=addr%40domain.com`. - * - * @returns Resolves when the code is valid. True if registration is complete, False if account information is needed. - * If the code is not valid a rejection will occur with an error message. - */ - validateUserRegistrationRequest: async ( - validationCode: string, - validationEmail?: string - ): Promise<{ codeValid: boolean | string; accountExists?: boolean }> => { - await sleep(800); - - if (isRandomFailure()) { - throw new Error('Sorry, there was a problem sending your request.'); - } - return { codeValid: true, accountExists: false }; - }, - - completeRegistration: async (userData: object): Promise<{ email: string; organizationName: string }> => { - const email = 'example@email.com'; - const organizationName = 'Acme Co.'; - const userInfo = { email, organizationName }; - - await sleep(1000); - if (isRandomFailure()) { - throw new Error('Sorry, there was a problem sending your request.'); - } - return userInfo; - }, + /** + * The user has tapped on an email link inviting them to register with the application. + * The application should validate the code provided by the link. + * + * @param validationCode Registration code provided from the link. + * @param validationEmail Email provided from the invitation email link (optional) `?email=addr%40domain.com`. + * + * @returns Resolves when the code is valid. True if registration is complete, False if account information is needed. + * If the code is not valid a rejection will occur with an error message. + */ + validateUserRegistrationRequest: async ( + validationCode: string, + validationEmail?: string + ): Promise<{ codeValid: boolean | string; accountExists?: boolean }> => { + await sleep(800); + + if (isRandomFailure()) { + throw new Error('Sorry, there was a problem sending your request.'); + } + return { codeValid: true, accountExists: false }; + }, + + completeRegistration: async (userData: object): Promise<{ email: string; organizationName: string }> => { + const email = 'example@email.com'; + const organizationName = 'Acme Co.'; + const userInfo = { email, organizationName }; + + await sleep(1000); + if (isRandomFailure()) { + throw new Error('Sorry, there was a problem sending your request.'); + } + return userInfo; + }, }); diff --git a/login-workflow/example/src/translations/dictionary/english.ts b/login-workflow/example/src/translations/dictionary/english.ts index 88fbb7aa..a9147727 100644 --- a/login-workflow/example/src/translations/dictionary/english.ts +++ b/login-workflow/example/src/translations/dictionary/english.ts @@ -18,6 +18,10 @@ const resources: AppTranslationsFile = { CHANGE_PASSWORD: 'Change Password', MY_ACCOUNT: 'My Account', }, + ERROR_MESSAGE: { + EMAIL_ERROR_MESSAGE: '{{email}} is already registered', + EMAIL_ERROR_TITLE: 'Error {{timestamp}}' + }, }, }; export default resources; diff --git a/login-workflow/example/src/translations/dictionary/types.ts b/login-workflow/example/src/translations/dictionary/types.ts index 756f9d4c..40ca3fdd 100644 --- a/login-workflow/example/src/translations/dictionary/types.ts +++ b/login-workflow/example/src/translations/dictionary/types.ts @@ -15,6 +15,10 @@ export type AppTranslations = { CHANGE_PASSWORD: string; MY_ACCOUNT: string; }; + ERROR_MESSAGE: { + EMAIL_ERROR_MESSAGE: string; + EMAIL_ERROR_TITLE: string; + }; }; export type AppTranslationsFile = { translation: AppTranslations; diff --git a/login-workflow/src/components/Error/ErrorManager.tsx b/login-workflow/src/components/Error/ErrorManager.tsx index 14b4957f..b5b21470 100644 --- a/login-workflow/src/components/Error/ErrorManager.tsx +++ b/login-workflow/src/components/Error/ErrorManager.tsx @@ -2,9 +2,9 @@ import React, { useCallback } from 'react'; import { BasicDialog } from '../Dialog/BasicDialog'; import ErrorMessageBox from './ErrorMessageBox'; import { SxProps, Theme } from '@mui/material/styles'; -import { TFunction } from 'i18next'; +import { TFunction, TOptions } from 'i18next'; -export type AuthError = { cause: { title: string; errorMessage: string } }; +export type AuthError = { cause: { title: string; errorMessage: string, errorOptions?: TOptions, titleOptions?: TOptions } }; export type ErrorManagerProps = { /** @@ -28,6 +28,16 @@ export type ErrorManagerProps = { */ error?: string; + /** + * Interpolate string with a dynamic value to pass values using t function for message + */ + errorOptions?: TOptions; + + /** + * Interpolate string with a dynamic value to pass values using t function for title + */ + titleOptions?: TOptions; + /** * Translate function to translate error related text */ @@ -80,9 +90,12 @@ const ErrorManager: React.FC = (props): JSX.Element => { mode = 'dialog', title, error = '', - onClose = (): void => {}, + errorOptions, + titleOptions, + onClose = (): void => { }, dialogConfig, - t = (key: string): string => key, + // eslint-disable-next-line @typescript-eslint/no-unused-vars + t = (key: string, _options?: TOptions): string => key, messageBoxConfig = { position: 'top', }, @@ -92,14 +105,14 @@ const ErrorManager: React.FC = (props): JSX.Element => { (): JSX.Element => ( 0} - title={t(dialogConfig?.title ?? title ?? 'Error')} - body={t(error)} + title={t(dialogConfig?.title ?? title ?? 'Error', titleOptions)} + body={t(error, errorOptions)} onClose={onClose} dismissButtonText={t(dialogConfig?.dismissLabel ?? 'Okay')} sx={dialogConfig?.sx} /> ), - [dialogConfig, title, error, onClose, t] + [dialogConfig, title, error, errorOptions, titleOptions, onClose, t] ); const ErrorMessageBoxWithProps = useCallback((): JSX.Element => { @@ -107,8 +120,8 @@ const ErrorManager: React.FC = (props): JSX.Element => { return ( = (props): JSX.Element => { onClose={onClose} /> ); - }, [error, title, messageBoxConfig, onClose, t]); + }, [error, errorOptions, titleOptions, title, messageBoxConfig, onClose, t]); return mode === 'dialog' && error.length > 0 ? ( <> diff --git a/login-workflow/src/contexts/ErrorContext/useErrorManager.tsx b/login-workflow/src/contexts/ErrorContext/useErrorManager.tsx index 23500bff..b53a8430 100644 --- a/login-workflow/src/contexts/ErrorContext/useErrorManager.tsx +++ b/login-workflow/src/contexts/ErrorContext/useErrorManager.tsx @@ -15,8 +15,10 @@ export const useErrorManager = (): { if (isAuthError(err)) { return { ...errorConfig, - dialogConfig: { title: err.cause.title }, + dialogConfig: { ...errorConfig.dialogConfig, title: err.cause.title }, error: err.cause.errorMessage, + errorOptions: err.cause.errorOptions, + titleOptions: err.cause.titleOptions, onClose: (): void => { setError(new Error()); }, @@ -37,6 +39,8 @@ export const useErrorManager = (): { cause: { title: err.cause.title, errorMessage: err.cause.errorMessage, + errorOptions: err.cause.errorOptions, + titleOptions: err.cause.titleOptions, }, }); } else { From 3af458291fa425152554dc73b7c7cac1e7dc50a8 Mon Sep 17 00:00:00 2001 From: jeffgreiner-eaton Date: Tue, 12 Mar 2024 15:14:00 -0400 Subject: [PATCH 37/87] prettier --- .../src/actions/RegistrationUIActions.tsx | 89 +++++++++---------- .../src/translations/dictionary/english.ts | 2 +- .../src/components/Error/ErrorManager.tsx | 6 +- 3 files changed, 49 insertions(+), 48 deletions(-) diff --git a/login-workflow/example/src/actions/RegistrationUIActions.tsx b/login-workflow/example/src/actions/RegistrationUIActions.tsx index 157b4e6c..6dc52ba7 100644 --- a/login-workflow/example/src/actions/RegistrationUIActions.tsx +++ b/login-workflow/example/src/actions/RegistrationUIActions.tsx @@ -68,20 +68,19 @@ export const ProjectRegistrationUIActions: () => RegistrationUIActions = () => ( errorMessage: 'ERROR_MESSAGE.EMAIL_ERROR_MESSAGE', errorOptions: { email: email }, title: 'ERROR_MESSAGE.EMAIL_ERROR_TITLE', - titleOptions: {timestamp: Date.now()}, - - } -}); -return 'a1b2c3'; + titleOptions: { timestamp: Date.now() }, + }, + }); + return 'a1b2c3'; }, -createPassword: async (password: string): Promise => { - await sleep(800); - if (isRandomFailure()) { - throw new Error('Sorry, there was a problem sending your request.'); - } - return true; -}, + createPassword: async (password: string): Promise => { + await sleep(800); + if (isRandomFailure()) { + throw new Error('Sorry, there was a problem sending your request.'); + } + return true; + }, setAccountDetails: async (details: AccountDetails): Promise => { await sleep(800); @@ -91,37 +90,37 @@ createPassword: async (password: string): Promise => { return true; }, - /** - * The user has tapped on an email link inviting them to register with the application. - * The application should validate the code provided by the link. - * - * @param validationCode Registration code provided from the link. - * @param validationEmail Email provided from the invitation email link (optional) `?email=addr%40domain.com`. - * - * @returns Resolves when the code is valid. True if registration is complete, False if account information is needed. - * If the code is not valid a rejection will occur with an error message. - */ - validateUserRegistrationRequest: async ( - validationCode: string, - validationEmail?: string - ): Promise<{ codeValid: boolean | string; accountExists?: boolean }> => { - await sleep(800); - - if (isRandomFailure()) { - throw new Error('Sorry, there was a problem sending your request.'); - } - return { codeValid: true, accountExists: false }; - }, - - completeRegistration: async (userData: object): Promise<{ email: string; organizationName: string }> => { - const email = 'example@email.com'; - const organizationName = 'Acme Co.'; - const userInfo = { email, organizationName }; - - await sleep(1000); - if (isRandomFailure()) { - throw new Error('Sorry, there was a problem sending your request.'); - } - return userInfo; - }, + /** + * The user has tapped on an email link inviting them to register with the application. + * The application should validate the code provided by the link. + * + * @param validationCode Registration code provided from the link. + * @param validationEmail Email provided from the invitation email link (optional) `?email=addr%40domain.com`. + * + * @returns Resolves when the code is valid. True if registration is complete, False if account information is needed. + * If the code is not valid a rejection will occur with an error message. + */ + validateUserRegistrationRequest: async ( + validationCode: string, + validationEmail?: string + ): Promise<{ codeValid: boolean | string; accountExists?: boolean }> => { + await sleep(800); + + if (isRandomFailure()) { + throw new Error('Sorry, there was a problem sending your request.'); + } + return { codeValid: true, accountExists: false }; + }, + + completeRegistration: async (userData: object): Promise<{ email: string; organizationName: string }> => { + const email = 'example@email.com'; + const organizationName = 'Acme Co.'; + const userInfo = { email, organizationName }; + + await sleep(1000); + if (isRandomFailure()) { + throw new Error('Sorry, there was a problem sending your request.'); + } + return userInfo; + }, }); diff --git a/login-workflow/example/src/translations/dictionary/english.ts b/login-workflow/example/src/translations/dictionary/english.ts index a9147727..cc3baedd 100644 --- a/login-workflow/example/src/translations/dictionary/english.ts +++ b/login-workflow/example/src/translations/dictionary/english.ts @@ -20,7 +20,7 @@ const resources: AppTranslationsFile = { }, ERROR_MESSAGE: { EMAIL_ERROR_MESSAGE: '{{email}} is already registered', - EMAIL_ERROR_TITLE: 'Error {{timestamp}}' + EMAIL_ERROR_TITLE: 'Error {{timestamp}}', }, }, }; diff --git a/login-workflow/src/components/Error/ErrorManager.tsx b/login-workflow/src/components/Error/ErrorManager.tsx index b5b21470..ebdf55c4 100644 --- a/login-workflow/src/components/Error/ErrorManager.tsx +++ b/login-workflow/src/components/Error/ErrorManager.tsx @@ -4,7 +4,9 @@ import ErrorMessageBox from './ErrorMessageBox'; import { SxProps, Theme } from '@mui/material/styles'; import { TFunction, TOptions } from 'i18next'; -export type AuthError = { cause: { title: string; errorMessage: string, errorOptions?: TOptions, titleOptions?: TOptions } }; +export type AuthError = { + cause: { title: string; errorMessage: string; errorOptions?: TOptions; titleOptions?: TOptions }; +}; export type ErrorManagerProps = { /** @@ -92,7 +94,7 @@ const ErrorManager: React.FC = (props): JSX.Element => { error = '', errorOptions, titleOptions, - onClose = (): void => { }, + onClose = (): void => {}, dialogConfig, // eslint-disable-next-line @typescript-eslint/no-unused-vars t = (key: string, _options?: TOptions): string => key, From ae663eecea7443fb1941c629d8893159bf2217ce Mon Sep 17 00:00:00 2001 From: jeffgreiner-eaton Date: Fri, 15 Mar 2024 09:36:54 -0400 Subject: [PATCH 38/87] remove test code and update change log --- login-workflow/CHANGELOG.md | 6 ++++++ .../example/src/actions/RegistrationUIActions.tsx | 8 -------- .../example/src/translations/dictionary/english.ts | 4 ---- .../example/src/translations/dictionary/types.ts | 4 ---- 4 files changed, 6 insertions(+), 16 deletions(-) diff --git a/login-workflow/CHANGELOG.md b/login-workflow/CHANGELOG.md index a9a87189..bc18afbf 100644 --- a/login-workflow/CHANGELOG.md +++ b/login-workflow/CHANGELOG.md @@ -5,6 +5,12 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). +## v4.0.3 (unreleased) + +### Fixed + +- Error Manager with dynamic values ([#540](https://github.com/etn-ccis/blui-react-workflows/issues/540)). + ## v4.0.2 (December 18, 2023) ### Added diff --git a/login-workflow/example/src/actions/RegistrationUIActions.tsx b/login-workflow/example/src/actions/RegistrationUIActions.tsx index 6dc52ba7..b7ae0e79 100644 --- a/login-workflow/example/src/actions/RegistrationUIActions.tsx +++ b/login-workflow/example/src/actions/RegistrationUIActions.tsx @@ -63,14 +63,6 @@ export const ProjectRegistrationUIActions: () => RegistrationUIActions = () => ( if (isRandomFailure()) { // throw new Error('Sorry, there was a problem sending your request.'); } - throw new Error('', { - cause: { - errorMessage: 'ERROR_MESSAGE.EMAIL_ERROR_MESSAGE', - errorOptions: { email: email }, - title: 'ERROR_MESSAGE.EMAIL_ERROR_TITLE', - titleOptions: { timestamp: Date.now() }, - }, - }); return 'a1b2c3'; }, diff --git a/login-workflow/example/src/translations/dictionary/english.ts b/login-workflow/example/src/translations/dictionary/english.ts index cc3baedd..88fbb7aa 100644 --- a/login-workflow/example/src/translations/dictionary/english.ts +++ b/login-workflow/example/src/translations/dictionary/english.ts @@ -18,10 +18,6 @@ const resources: AppTranslationsFile = { CHANGE_PASSWORD: 'Change Password', MY_ACCOUNT: 'My Account', }, - ERROR_MESSAGE: { - EMAIL_ERROR_MESSAGE: '{{email}} is already registered', - EMAIL_ERROR_TITLE: 'Error {{timestamp}}', - }, }, }; export default resources; diff --git a/login-workflow/example/src/translations/dictionary/types.ts b/login-workflow/example/src/translations/dictionary/types.ts index 40ca3fdd..756f9d4c 100644 --- a/login-workflow/example/src/translations/dictionary/types.ts +++ b/login-workflow/example/src/translations/dictionary/types.ts @@ -15,10 +15,6 @@ export type AppTranslations = { CHANGE_PASSWORD: string; MY_ACCOUNT: string; }; - ERROR_MESSAGE: { - EMAIL_ERROR_MESSAGE: string; - EMAIL_ERROR_TITLE: string; - }; }; export type AppTranslationsFile = { translation: AppTranslations; From 392f8e5cbf8a543b6f2a549b93a9a4d7ebfa05da Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sat, 16 Mar 2024 22:53:09 +0000 Subject: [PATCH 39/87] Bump follow-redirects from 1.15.4 to 1.15.6 in /login-workflow/example Bumps [follow-redirects](https://github.com/follow-redirects/follow-redirects) from 1.15.4 to 1.15.6. - [Release notes](https://github.com/follow-redirects/follow-redirects/releases) - [Commits](https://github.com/follow-redirects/follow-redirects/compare/v1.15.4...v1.15.6) --- updated-dependencies: - dependency-name: follow-redirects dependency-type: indirect ... Signed-off-by: dependabot[bot] --- login-workflow/example/yarn.lock | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/login-workflow/example/yarn.lock b/login-workflow/example/yarn.lock index 7d72d6e0..12e1befe 100644 --- a/login-workflow/example/yarn.lock +++ b/login-workflow/example/yarn.lock @@ -5318,9 +5318,9 @@ flatted@^3.1.0: integrity sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ== follow-redirects@^1.0.0: - version "1.15.4" - resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.15.4.tgz#cdc7d308bf6493126b17ea2191ea0ccf3e535adf" - integrity sha512-Cr4D/5wlrb0z9dgERpUL3LrmPKVDsETIJhaCMeDfuFYcqa5bldGV6wBsAN6X/vxlXQtFBMrXdXxdL8CbDTGniw== + version "1.15.6" + resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.15.6.tgz#7f815c0cda4249c74ff09e95ef97c23b5fd0399b" + integrity sha512-wWN62YITEaOpSK584EZXJafH1AGpO8RVgElfkuXbTOrPX4fIfOyEpW/CsiNd8JdYrAoOvafRTOEnvsO++qCqFA== for-each@^0.3.3: version "0.3.3" From c679d119948a22007d5b690f6f37aee4a11d3558 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sat, 16 Mar 2024 23:55:11 +0000 Subject: [PATCH 40/87] Bump follow-redirects in /login-workflow/example-vite Bumps [follow-redirects](https://github.com/follow-redirects/follow-redirects) from 1.15.5 to 1.15.6. - [Release notes](https://github.com/follow-redirects/follow-redirects/releases) - [Commits](https://github.com/follow-redirects/follow-redirects/compare/v1.15.5...v1.15.6) --- updated-dependencies: - dependency-name: follow-redirects dependency-type: indirect ... Signed-off-by: dependabot[bot] --- login-workflow/example-vite/yarn.lock | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/login-workflow/example-vite/yarn.lock b/login-workflow/example-vite/yarn.lock index b090e23d..9437bfd7 100644 --- a/login-workflow/example-vite/yarn.lock +++ b/login-workflow/example-vite/yarn.lock @@ -5733,9 +5733,9 @@ flatted@^3.2.9: integrity sha512-36yxDn5H7OFZQla0/jFJmbIKTdZAQHngCedGxiMmpNfEZM0sdEeT+WczLQrjK6D7o2aiyLYDnkw0R3JK0Qv1RQ== follow-redirects@^1.0.0: - version "1.15.5" - resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.15.5.tgz#54d4d6d062c0fa7d9d17feb008461550e3ba8020" - integrity sha512-vSFWUON1B+yAw1VN4xMfxgn5fTUiaOzAJCKBwIIgT/+7CuGy9+r+5gITvP62j3RmaD5Ph65UaERdOSRGUzZtgw== + version "1.15.6" + resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.15.6.tgz#7f815c0cda4249c74ff09e95ef97c23b5fd0399b" + integrity sha512-wWN62YITEaOpSK584EZXJafH1AGpO8RVgElfkuXbTOrPX4fIfOyEpW/CsiNd8JdYrAoOvafRTOEnvsO++qCqFA== for-each@^0.3.3: version "0.3.3" From ac3743ab770a965bd213b2c39fb985a6b83d6501 Mon Sep 17 00:00:00 2001 From: jeffgreiner-eaton Date: Fri, 22 Mar 2024 12:30:27 -0400 Subject: [PATCH 41/87] Revert commented code --- login-workflow/example/src/actions/RegistrationUIActions.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/login-workflow/example/src/actions/RegistrationUIActions.tsx b/login-workflow/example/src/actions/RegistrationUIActions.tsx index b7ae0e79..200b593b 100644 --- a/login-workflow/example/src/actions/RegistrationUIActions.tsx +++ b/login-workflow/example/src/actions/RegistrationUIActions.tsx @@ -61,7 +61,7 @@ export const ProjectRegistrationUIActions: () => RegistrationUIActions = () => ( requestRegistrationCode: async (email: string): Promise => { await sleep(800); if (isRandomFailure()) { - // throw new Error('Sorry, there was a problem sending your request.'); + throw new Error('Sorry, there was a problem sending your request.'); } return 'a1b2c3'; }, From 7a4a707258b77a6d11abad0a18bc104b7387f627 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sat, 23 Mar 2024 11:28:49 +0000 Subject: [PATCH 42/87] Bump webpack-dev-middleware in /login-workflow/example Bumps [webpack-dev-middleware](https://github.com/webpack/webpack-dev-middleware) from 5.3.3 to 5.3.4. - [Release notes](https://github.com/webpack/webpack-dev-middleware/releases) - [Changelog](https://github.com/webpack/webpack-dev-middleware/blob/v5.3.4/CHANGELOG.md) - [Commits](https://github.com/webpack/webpack-dev-middleware/compare/v5.3.3...v5.3.4) --- updated-dependencies: - dependency-name: webpack-dev-middleware dependency-type: indirect ... Signed-off-by: dependabot[bot] --- login-workflow/example/yarn.lock | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/login-workflow/example/yarn.lock b/login-workflow/example/yarn.lock index 12e1befe..7e5d46fc 100644 --- a/login-workflow/example/yarn.lock +++ b/login-workflow/example/yarn.lock @@ -10248,9 +10248,9 @@ webidl-conversions@^6.1.0: integrity sha512-qBIvFLGiBpLjfwmYAaHPXsn+ho5xZnGvyGvsarywGNc8VyQJUMHJ8OBKGGrPER0okBeMDaan4mNBlgBROxuI8w== webpack-dev-middleware@^5.3.1: - version "5.3.3" - resolved "https://registry.yarnpkg.com/webpack-dev-middleware/-/webpack-dev-middleware-5.3.3.tgz#efae67c2793908e7311f1d9b06f2a08dcc97e51f" - integrity sha512-hj5CYrY0bZLB+eTO+x/j67Pkrquiy7kWepMHmUMoPsmcUaeEnQJqFzHJOyxgWlq746/wUuA64p9ta34Kyb01pA== + version "5.3.4" + resolved "https://registry.yarnpkg.com/webpack-dev-middleware/-/webpack-dev-middleware-5.3.4.tgz#eb7b39281cbce10e104eb2b8bf2b63fce49a3517" + integrity sha512-BVdTqhhs+0IfoeAf7EoH5WE+exCmqGerHfDM0IL096Px60Tq2Mn9MAbnaGUe6HiMa41KMCYF19gyzZmBcq/o4Q== dependencies: colorette "^2.0.10" memfs "^3.4.3" From ccac2616e6f907fb32a72e4d83940ad930daace9 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sun, 24 Mar 2024 00:20:36 +0000 Subject: [PATCH 43/87] Bump webpack-dev-middleware in /login-workflow/example-vite Bumps [webpack-dev-middleware](https://github.com/webpack/webpack-dev-middleware) from 5.3.3 to 5.3.4. - [Release notes](https://github.com/webpack/webpack-dev-middleware/releases) - [Changelog](https://github.com/webpack/webpack-dev-middleware/blob/v5.3.4/CHANGELOG.md) - [Commits](https://github.com/webpack/webpack-dev-middleware/compare/v5.3.3...v5.3.4) --- updated-dependencies: - dependency-name: webpack-dev-middleware dependency-type: indirect ... Signed-off-by: dependabot[bot] --- login-workflow/example-vite/yarn.lock | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/login-workflow/example-vite/yarn.lock b/login-workflow/example-vite/yarn.lock index 9437bfd7..7c632c33 100644 --- a/login-workflow/example-vite/yarn.lock +++ b/login-workflow/example-vite/yarn.lock @@ -10901,9 +10901,9 @@ webidl-conversions@^6.1.0: integrity sha512-qBIvFLGiBpLjfwmYAaHPXsn+ho5xZnGvyGvsarywGNc8VyQJUMHJ8OBKGGrPER0okBeMDaan4mNBlgBROxuI8w== webpack-dev-middleware@^5.3.1: - version "5.3.3" - resolved "https://registry.yarnpkg.com/webpack-dev-middleware/-/webpack-dev-middleware-5.3.3.tgz#efae67c2793908e7311f1d9b06f2a08dcc97e51f" - integrity sha512-hj5CYrY0bZLB+eTO+x/j67Pkrquiy7kWepMHmUMoPsmcUaeEnQJqFzHJOyxgWlq746/wUuA64p9ta34Kyb01pA== + version "5.3.4" + resolved "https://registry.yarnpkg.com/webpack-dev-middleware/-/webpack-dev-middleware-5.3.4.tgz#eb7b39281cbce10e104eb2b8bf2b63fce49a3517" + integrity sha512-BVdTqhhs+0IfoeAf7EoH5WE+exCmqGerHfDM0IL096Px60Tq2Mn9MAbnaGUe6HiMa41KMCYF19gyzZmBcq/o4Q== dependencies: colorette "^2.0.10" memfs "^3.4.3" From 0798c4c32166d4c24e7bb9f31c1470302b5aeba8 Mon Sep 17 00:00:00 2001 From: manojleaton Date: Wed, 27 Mar 2024 15:32:15 +0530 Subject: [PATCH 44/87] updated password validation callback function --- .../ChangePasswordDialog/ChangePasswordDialog.tsx | 12 ++++++------ .../CreatePasswordScreen.test.tsx | 4 ++-- .../CreatePasswordScreen/CreatePasswordScreen.tsx | 12 ++++++------ .../ResetPasswordScreen/ResetPasswordScreen.tsx | 12 ++++++------ 4 files changed, 20 insertions(+), 20 deletions(-) diff --git a/login-workflow/src/components/ChangePasswordDialog/ChangePasswordDialog.tsx b/login-workflow/src/components/ChangePasswordDialog/ChangePasswordDialog.tsx index 425fd6c4..c5a95da6 100644 --- a/login-workflow/src/components/ChangePasswordDialog/ChangePasswordDialog.tsx +++ b/login-workflow/src/components/ChangePasswordDialog/ChangePasswordDialog.tsx @@ -59,7 +59,7 @@ export const ChangePasswordDialog: React.FC = (props) const [showSuccessScreen, setShowSuccessScreen] = useState(false); const { actions } = useAuthContext(); - const passwordRequirements = defaultPasswordRequirements(t); + const passwordReqs = PasswordProps?.passwordRequirements ?? defaultPasswordRequirements(t); const updateFields = useCallback( (fields: { password: string; confirm: string }) => { @@ -70,14 +70,14 @@ export const ChangePasswordDialog: React.FC = (props) ); const areValidMatchingPasswords = useCallback((): boolean => { - if (PasswordProps?.passwordRequirements?.length === 0) { + if (passwordReqs?.length === 0) { return confirmInput === passwordInput; } - for (let i = 0; i < passwordRequirements.length; i++) { - if (!new RegExp(passwordRequirements[i].regex).test(passwordInput)) return false; + for (let i = 0; i < passwordReqs.length; i++) { + if (!new RegExp(passwordReqs[i].regex).test(passwordInput)) return false; } return confirmInput === passwordInput; - }, [PasswordProps?.passwordRequirements?.length, passwordRequirements, passwordInput, confirmInput]); + }, [passwordReqs, passwordInput, confirmInput]); const checkPasswords = currentInput !== '' && passwordInput !== '' && confirmInput !== '' && areValidMatchingPasswords(); @@ -115,7 +115,7 @@ export const ChangePasswordDialog: React.FC = (props) confirmRef, initialNewPasswordValue: passwordInput, initialConfirmPasswordValue: confirmInput, - passwordRequirements, + passwordRequirements: passwordReqs, passwordNotMatchError: t('bluiCommon:FORMS.PASS_MATCH_ERROR'), ...PasswordProps, onPasswordChange: (passwordData: { password: string; confirm: string }): void => { diff --git a/login-workflow/src/screens/CreatePasswordScreen/CreatePasswordScreen.test.tsx b/login-workflow/src/screens/CreatePasswordScreen/CreatePasswordScreen.test.tsx index d5593eec..8269aac1 100644 --- a/login-workflow/src/screens/CreatePasswordScreen/CreatePasswordScreen.test.tsx +++ b/login-workflow/src/screens/CreatePasswordScreen/CreatePasswordScreen.test.tsx @@ -85,9 +85,9 @@ describe('Create Password Screen', () => { const passwordField = getByLabelText('Password'); const confirmPasswordField = getByLabelText('Confirm Password'); - fireEvent.change(passwordField, { target: { value: 'Abcd@123' } }); + fireEvent.change(passwordField, { target: { value: 'Ab@12' } }); fireEvent.blur(passwordField); - fireEvent.change(confirmPasswordField, { target: { value: 'Abcd@123' } }); + fireEvent.change(confirmPasswordField, { target: { value: 'Ab@12' } }); fireEvent.blur(confirmPasswordField); const nextButton = screen.getByText('Next'); diff --git a/login-workflow/src/screens/CreatePasswordScreen/CreatePasswordScreen.tsx b/login-workflow/src/screens/CreatePasswordScreen/CreatePasswordScreen.tsx index 9182c663..44ccdc4a 100644 --- a/login-workflow/src/screens/CreatePasswordScreen/CreatePasswordScreen.tsx +++ b/login-workflow/src/screens/CreatePasswordScreen/CreatePasswordScreen.tsx @@ -50,7 +50,7 @@ export const CreatePasswordScreen: React.FC = (props) confirmPassword !== '' ? confirmPassword : PasswordProps?.initialConfirmPasswordValue ?? '' ); const [isLoading, setIsLoading] = useState(false); - const passwordRequirements = defaultPasswordRequirements(t); + const passwordReqs = PasswordProps?.passwordRequirements ?? defaultPasswordRequirements(t); const { triggerError, errorManagerConfig } = useErrorManager(); const errorDisplayConfig = { ...errorManagerConfig, @@ -92,20 +92,20 @@ export const CreatePasswordScreen: React.FC = (props) ); const areValidMatchingPasswords = useCallback((): boolean => { - if (PasswordProps?.passwordRequirements?.length === 0) { + if (passwordReqs?.length === 0) { return confirmInput === passwordInput; } - for (let i = 0; i < passwordRequirements.length; i++) { - if (!new RegExp(passwordRequirements[i].regex).test(passwordInput)) return false; + for (let i = 0; i < passwordReqs.length; i++) { + if (!new RegExp(passwordReqs[i].regex).test(passwordInput)) return false; } return confirmInput === passwordInput; - }, [PasswordProps?.passwordRequirements?.length, passwordRequirements, passwordInput, confirmInput]); + }, [passwordReqs, passwordInput, confirmInput]); const passwordProps = { newPasswordLabel: t('bluiCommon:FORMS.PASSWORD'), confirmPasswordLabel: t('bluiCommon:FORMS.CONFIRM_PASSWORD'), passwordNotMatchError: t('bluiCommon:FORMS.PASS_MATCH_ERROR'), - passwordRequirements: PasswordProps?.passwordRequirements ?? passwordRequirements, + passwordRequirements: passwordReqs, passwordRef, confirmRef, ...PasswordProps, diff --git a/login-workflow/src/screens/ResetPasswordScreen/ResetPasswordScreen.tsx b/login-workflow/src/screens/ResetPasswordScreen/ResetPasswordScreen.tsx index d96f6bbd..8c090682 100644 --- a/login-workflow/src/screens/ResetPasswordScreen/ResetPasswordScreen.tsx +++ b/login-workflow/src/screens/ResetPasswordScreen/ResetPasswordScreen.tsx @@ -60,7 +60,7 @@ export const ResetPasswordScreen: React.FC = (props) = const { code, email } = parseQueryString(window.location.search); const { actions, navigate, routeConfig } = useAuthContext(); - const passwordRequirements = defaultPasswordRequirements(t); + const passwordReqs = PasswordProps?.passwordRequirements ?? defaultPasswordRequirements(t); const verifyResetCode = useCallback(async (): Promise => { try { @@ -92,14 +92,14 @@ export const ResetPasswordScreen: React.FC = (props) = }, [actions, code, passwordInput, email, triggerError, props.showSuccessScreen, navigate, routeConfig]); const areValidMatchingPasswords = useCallback((): boolean => { - if (PasswordProps?.passwordRequirements?.length === 0) { + if (passwordReqs?.length === 0) { return confirmInput === passwordInput; } - for (let i = 0; i < passwordRequirements.length; i++) { - if (!new RegExp(passwordRequirements[i].regex).test(passwordInput)) return false; + for (let i = 0; i < passwordReqs.length; i++) { + if (!new RegExp(passwordReqs[i].regex).test(passwordInput)) return false; } return confirmInput === passwordInput; - }, [PasswordProps?.passwordRequirements?.length, passwordRequirements, passwordInput, confirmInput]); + }, [passwordReqs, passwordInput, confirmInput]); const updateFields = useCallback( (fields: { password: string; confirm: string }) => { @@ -151,7 +151,7 @@ export const ResetPasswordScreen: React.FC = (props) = newPasswordLabel: t('bluiAuth:CHANGE_PASSWORD.NEW_PASSWORD'), confirmPasswordLabel: t('bluiAuth:CHANGE_PASSWORD.CONFIRM_NEW_PASSWORD'), passwordNotMatchError: t('bluiCommon:FORMS.PASS_MATCH_ERROR'), - passwordRequirements: PasswordProps?.passwordRequirements ?? passwordRequirements, + passwordRequirements: passwordReqs, passwordRef, confirmRef, ...PasswordProps, From 96ed29edcb5e18b6d78397c2896ebcf66b6f14ee Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 27 Mar 2024 15:54:36 +0000 Subject: [PATCH 45/87] Bump express from 4.18.2 to 4.19.2 in /login-workflow/example-vite Bumps [express](https://github.com/expressjs/express) from 4.18.2 to 4.19.2. - [Release notes](https://github.com/expressjs/express/releases) - [Changelog](https://github.com/expressjs/express/blob/master/History.md) - [Commits](https://github.com/expressjs/express/compare/4.18.2...4.19.2) --- updated-dependencies: - dependency-name: express dependency-type: indirect ... Signed-off-by: dependabot[bot] --- login-workflow/example-vite/yarn.lock | 40 +++++++++++++-------------- 1 file changed, 20 insertions(+), 20 deletions(-) diff --git a/login-workflow/example-vite/yarn.lock b/login-workflow/example-vite/yarn.lock index 7c632c33..023e7027 100644 --- a/login-workflow/example-vite/yarn.lock +++ b/login-workflow/example-vite/yarn.lock @@ -3881,13 +3881,13 @@ bluebird@^3.7.2: resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.7.2.tgz#9f229c15be272454ffa973ace0dbee79a1b0c36f" integrity sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg== -body-parser@1.20.1: - version "1.20.1" - resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.20.1.tgz#b1812a8912c195cd371a3ee5e66faa2338a5c668" - integrity sha512-jWi7abTbYwajOytWCQc37VulmWiRae5RyTpaCyDcS5/lMdtwSz5lOpDE67srw/HYe35f1z3fDQw+3txg7gNtWw== +body-parser@1.20.2: + version "1.20.2" + resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.20.2.tgz#6feb0e21c4724d06de7ff38da36dad4f57a747fd" + integrity sha512-ml9pReCu3M61kGlqoTm2umSXTlRTuGTx0bfYj+uIUKKYycG5NtSbeetV3faSU6R7ajOPw0g/J1PvK4qNy7s5bA== dependencies: bytes "3.1.2" - content-type "~1.0.4" + content-type "~1.0.5" debug "2.6.9" depd "2.0.0" destroy "1.2.0" @@ -3895,7 +3895,7 @@ body-parser@1.20.1: iconv-lite "0.4.24" on-finished "2.4.1" qs "6.11.0" - raw-body "2.5.1" + raw-body "2.5.2" type-is "~1.6.18" unpipe "1.0.0" @@ -4306,7 +4306,7 @@ content-disposition@0.5.4: dependencies: safe-buffer "5.2.1" -content-type@~1.0.4: +content-type@~1.0.4, content-type@~1.0.5: version "1.0.5" resolved "https://registry.yarnpkg.com/content-type/-/content-type-1.0.5.tgz#8b773162656d1d1086784c8f23a54ce6d73d7918" integrity sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA== @@ -4326,10 +4326,10 @@ cookie-signature@1.0.6: resolved "https://registry.yarnpkg.com/cookie-signature/-/cookie-signature-1.0.6.tgz#e303a882b342cc3ee8ca513a79999734dab3ae2c" integrity sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ== -cookie@0.5.0: - version "0.5.0" - resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.5.0.tgz#d1f5d71adec6558c58f389987c366aa47e994f8b" - integrity sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw== +cookie@0.6.0: + version "0.6.0" + resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.6.0.tgz#2798b04b071b0ecbff0dbb62a505a8efa4e19051" + integrity sha512-U71cyTamuh1CRNCfpGY6to28lxvNwPG4Guz/EVjgf3Jmzv0vlDp1atT9eS5dDjMYHucpHbWns6Lwf3BKz6svdw== core-js-compat@^3.31.0, core-js-compat@^3.34.0: version "3.35.1" @@ -5544,16 +5544,16 @@ expect@^29.0.0, expect@^29.7.0: jest-util "^29.7.0" express@^4.17.3: - version "4.18.2" - resolved "https://registry.yarnpkg.com/express/-/express-4.18.2.tgz#3fabe08296e930c796c19e3c516979386ba9fd59" - integrity sha512-5/PsL6iGPdfQ/lKM1UuielYgv3BUoJfz1aUwU9vHZ+J7gyvwdQXFEBIEIaxeGf0GIcreATNyBExtalisDbuMqQ== + version "4.19.2" + resolved "https://registry.yarnpkg.com/express/-/express-4.19.2.tgz#e25437827a3aa7f2a827bc8171bbbb664a356465" + integrity sha512-5T6nhjsT+EOMzuck8JjBHARTHfMht0POzlA60WV2pMD3gyXw2LZnZ+ueGdNxG+0calOJcWKbpFcuzLZ91YWq9Q== dependencies: accepts "~1.3.8" array-flatten "1.1.1" - body-parser "1.20.1" + body-parser "1.20.2" content-disposition "0.5.4" content-type "~1.0.4" - cookie "0.5.0" + cookie "0.6.0" cookie-signature "1.0.6" debug "2.6.9" depd "2.0.0" @@ -9220,10 +9220,10 @@ range-parser@^1.2.1, range-parser@~1.2.1: resolved "https://registry.yarnpkg.com/range-parser/-/range-parser-1.2.1.tgz#3cf37023d199e1c24d1a55b84800c2f3e6468031" integrity sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg== -raw-body@2.5.1: - version "2.5.1" - resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-2.5.1.tgz#fe1b1628b181b700215e5fd42389f98b71392857" - integrity sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig== +raw-body@2.5.2: + version "2.5.2" + resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-2.5.2.tgz#99febd83b90e08975087e8f1f9419a149366b68a" + integrity sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA== dependencies: bytes "3.1.2" http-errors "2.0.0" From fcc43e4a6609226a4299cc64909e5ba3b8b6b50c Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 27 Mar 2024 15:54:48 +0000 Subject: [PATCH 46/87] Bump express from 4.18.2 to 4.19.2 in /login-workflow Bumps [express](https://github.com/expressjs/express) from 4.18.2 to 4.19.2. - [Release notes](https://github.com/expressjs/express/releases) - [Changelog](https://github.com/expressjs/express/blob/master/History.md) - [Commits](https://github.com/expressjs/express/compare/4.18.2...4.19.2) --- updated-dependencies: - dependency-name: express dependency-type: indirect ... Signed-off-by: dependabot[bot] --- login-workflow/yarn.lock | 48 +++++++++------------------------------- 1 file changed, 10 insertions(+), 38 deletions(-) diff --git a/login-workflow/yarn.lock b/login-workflow/yarn.lock index bfea2161..ed61c14e 100644 --- a/login-workflow/yarn.lock +++ b/login-workflow/yarn.lock @@ -3039,25 +3039,7 @@ bluebird@^3.7.2: resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.7.2.tgz#9f229c15be272454ffa973ace0dbee79a1b0c36f" integrity sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg== -body-parser@1.20.1: - version "1.20.1" - resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.20.1.tgz#b1812a8912c195cd371a3ee5e66faa2338a5c668" - integrity sha512-jWi7abTbYwajOytWCQc37VulmWiRae5RyTpaCyDcS5/lMdtwSz5lOpDE67srw/HYe35f1z3fDQw+3txg7gNtWw== - dependencies: - bytes "3.1.2" - content-type "~1.0.4" - debug "2.6.9" - depd "2.0.0" - destroy "1.2.0" - http-errors "2.0.0" - iconv-lite "0.4.24" - on-finished "2.4.1" - qs "6.11.0" - raw-body "2.5.1" - type-is "~1.6.18" - unpipe "1.0.0" - -body-parser@^1.18.3, body-parser@^1.19.0: +body-parser@1.20.2, body-parser@^1.18.3, body-parser@^1.19.0: version "1.20.2" resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.20.2.tgz#6feb0e21c4724d06de7ff38da36dad4f57a747fd" integrity sha512-ml9pReCu3M61kGlqoTm2umSXTlRTuGTx0bfYj+uIUKKYycG5NtSbeetV3faSU6R7ajOPw0g/J1PvK4qNy7s5bA== @@ -3609,10 +3591,10 @@ cookie-signature@1.0.6: resolved "https://registry.yarnpkg.com/cookie-signature/-/cookie-signature-1.0.6.tgz#e303a882b342cc3ee8ca513a79999734dab3ae2c" integrity sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ== -cookie@0.5.0: - version "0.5.0" - resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.5.0.tgz#d1f5d71adec6558c58f389987c366aa47e994f8b" - integrity sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw== +cookie@0.6.0: + version "0.6.0" + resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.6.0.tgz#2798b04b071b0ecbff0dbb62a505a8efa4e19051" + integrity sha512-U71cyTamuh1CRNCfpGY6to28lxvNwPG4Guz/EVjgf3Jmzv0vlDp1atT9eS5dDjMYHucpHbWns6Lwf3BKz6svdw== core-js-compat@^3.31.0, core-js-compat@^3.33.1: version "3.33.2" @@ -4481,16 +4463,16 @@ exponential-backoff@^3.1.1: integrity sha512-dX7e/LHVJ6W3DE1MHWi9S1EYzDESENfLrYohG2G++ovZrYOkm4Knwa0mc1cn84xJOR4KEU0WSchhLbd0UklbHw== express@^4.16.4: - version "4.18.2" - resolved "https://registry.yarnpkg.com/express/-/express-4.18.2.tgz#3fabe08296e930c796c19e3c516979386ba9fd59" - integrity sha512-5/PsL6iGPdfQ/lKM1UuielYgv3BUoJfz1aUwU9vHZ+J7gyvwdQXFEBIEIaxeGf0GIcreATNyBExtalisDbuMqQ== + version "4.19.2" + resolved "https://registry.yarnpkg.com/express/-/express-4.19.2.tgz#e25437827a3aa7f2a827bc8171bbbb664a356465" + integrity sha512-5T6nhjsT+EOMzuck8JjBHARTHfMht0POzlA60WV2pMD3gyXw2LZnZ+ueGdNxG+0calOJcWKbpFcuzLZ91YWq9Q== dependencies: accepts "~1.3.8" array-flatten "1.1.1" - body-parser "1.20.1" + body-parser "1.20.2" content-disposition "0.5.4" content-type "~1.0.4" - cookie "0.5.0" + cookie "0.6.0" cookie-signature "1.0.6" debug "2.6.9" depd "2.0.0" @@ -7948,16 +7930,6 @@ range-parser@~1.2.1: resolved "https://registry.yarnpkg.com/range-parser/-/range-parser-1.2.1.tgz#3cf37023d199e1c24d1a55b84800c2f3e6468031" integrity sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg== -raw-body@2.5.1: - version "2.5.1" - resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-2.5.1.tgz#fe1b1628b181b700215e5fd42389f98b71392857" - integrity sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig== - dependencies: - bytes "3.1.2" - http-errors "2.0.0" - iconv-lite "0.4.24" - unpipe "1.0.0" - raw-body@2.5.2, raw-body@^2.2.0, raw-body@^2.3.3: version "2.5.2" resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-2.5.2.tgz#99febd83b90e08975087e8f1f9419a149366b68a" From 5825b9414f3c4472f261ac298ac89df7ca6225a9 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 27 Mar 2024 15:55:25 +0000 Subject: [PATCH 47/87] Bump express from 4.18.2 to 4.19.2 in /login-workflow/example Bumps [express](https://github.com/expressjs/express) from 4.18.2 to 4.19.2. - [Release notes](https://github.com/expressjs/express/releases) - [Changelog](https://github.com/expressjs/express/blob/master/History.md) - [Commits](https://github.com/expressjs/express/compare/4.18.2...4.19.2) --- updated-dependencies: - dependency-name: express dependency-type: indirect ... Signed-off-by: dependabot[bot] --- login-workflow/example/yarn.lock | 40 ++++++++++++++++---------------- 1 file changed, 20 insertions(+), 20 deletions(-) diff --git a/login-workflow/example/yarn.lock b/login-workflow/example/yarn.lock index 12e1befe..2e9c82e0 100644 --- a/login-workflow/example/yarn.lock +++ b/login-workflow/example/yarn.lock @@ -3570,13 +3570,13 @@ bluebird@^3.5.5: resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.7.2.tgz#9f229c15be272454ffa973ace0dbee79a1b0c36f" integrity sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg== -body-parser@1.20.1: - version "1.20.1" - resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.20.1.tgz#b1812a8912c195cd371a3ee5e66faa2338a5c668" - integrity sha512-jWi7abTbYwajOytWCQc37VulmWiRae5RyTpaCyDcS5/lMdtwSz5lOpDE67srw/HYe35f1z3fDQw+3txg7gNtWw== +body-parser@1.20.2: + version "1.20.2" + resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.20.2.tgz#6feb0e21c4724d06de7ff38da36dad4f57a747fd" + integrity sha512-ml9pReCu3M61kGlqoTm2umSXTlRTuGTx0bfYj+uIUKKYycG5NtSbeetV3faSU6R7ajOPw0g/J1PvK4qNy7s5bA== dependencies: bytes "3.1.2" - content-type "~1.0.4" + content-type "~1.0.5" debug "2.6.9" depd "2.0.0" destroy "1.2.0" @@ -3584,7 +3584,7 @@ body-parser@1.20.1: iconv-lite "0.4.24" on-finished "2.4.1" qs "6.11.0" - raw-body "2.5.1" + raw-body "2.5.2" type-is "~1.6.18" unpipe "1.0.0" @@ -3996,7 +3996,7 @@ content-disposition@0.5.4: dependencies: safe-buffer "5.2.1" -content-type@~1.0.4: +content-type@~1.0.4, content-type@~1.0.5: version "1.0.5" resolved "https://registry.yarnpkg.com/content-type/-/content-type-1.0.5.tgz#8b773162656d1d1086784c8f23a54ce6d73d7918" integrity sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA== @@ -4016,10 +4016,10 @@ cookie-signature@1.0.6: resolved "https://registry.yarnpkg.com/cookie-signature/-/cookie-signature-1.0.6.tgz#e303a882b342cc3ee8ca513a79999734dab3ae2c" integrity sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ== -cookie@0.5.0: - version "0.5.0" - resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.5.0.tgz#d1f5d71adec6558c58f389987c366aa47e994f8b" - integrity sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw== +cookie@0.6.0: + version "0.6.0" + resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.6.0.tgz#2798b04b071b0ecbff0dbb62a505a8efa4e19051" + integrity sha512-U71cyTamuh1CRNCfpGY6to28lxvNwPG4Guz/EVjgf3Jmzv0vlDp1atT9eS5dDjMYHucpHbWns6Lwf3BKz6svdw== core-js-compat@^3.25.1: version "3.30.2" @@ -5114,16 +5114,16 @@ expect@^29.0.0, expect@^29.5.0: jest-util "^29.5.0" express@^4.17.3: - version "4.18.2" - resolved "https://registry.yarnpkg.com/express/-/express-4.18.2.tgz#3fabe08296e930c796c19e3c516979386ba9fd59" - integrity sha512-5/PsL6iGPdfQ/lKM1UuielYgv3BUoJfz1aUwU9vHZ+J7gyvwdQXFEBIEIaxeGf0GIcreATNyBExtalisDbuMqQ== + version "4.19.2" + resolved "https://registry.yarnpkg.com/express/-/express-4.19.2.tgz#e25437827a3aa7f2a827bc8171bbbb664a356465" + integrity sha512-5T6nhjsT+EOMzuck8JjBHARTHfMht0POzlA60WV2pMD3gyXw2LZnZ+ueGdNxG+0calOJcWKbpFcuzLZ91YWq9Q== dependencies: accepts "~1.3.8" array-flatten "1.1.1" - body-parser "1.20.1" + body-parser "1.20.2" content-disposition "0.5.4" content-type "~1.0.4" - cookie "0.5.0" + cookie "0.6.0" cookie-signature "1.0.6" debug "2.6.9" depd "2.0.0" @@ -8704,10 +8704,10 @@ range-parser@^1.2.1, range-parser@~1.2.1: resolved "https://registry.yarnpkg.com/range-parser/-/range-parser-1.2.1.tgz#3cf37023d199e1c24d1a55b84800c2f3e6468031" integrity sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg== -raw-body@2.5.1: - version "2.5.1" - resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-2.5.1.tgz#fe1b1628b181b700215e5fd42389f98b71392857" - integrity sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig== +raw-body@2.5.2: + version "2.5.2" + resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-2.5.2.tgz#99febd83b90e08975087e8f1f9419a149366b68a" + integrity sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA== dependencies: bytes "3.1.2" http-errors "2.0.0" From 7fcedd39c125ebecc12b426d874a7d32ee58bd53 Mon Sep 17 00:00:00 2001 From: jeffgreiner-eaton Date: Thu, 28 Mar 2024 11:26:34 -0400 Subject: [PATCH 48/87] Add blui-ci github action --- .github/workflows/blui-ci.yml | 119 ++++++++++++++++++++++++++++++++++ 1 file changed, 119 insertions(+) create mode 100644 .github/workflows/blui-ci.yml diff --git a/.github/workflows/blui-ci.yml b/.github/workflows/blui-ci.yml new file mode 100644 index 00000000..e42936f3 --- /dev/null +++ b/.github/workflows/blui-ci.yml @@ -0,0 +1,119 @@ +name: CI Run + +on: + push: + branches: [ "dev", "master" ] + pull_request: + branches: [ "dev", "master" ] + pull_request_target: + types: + - opened + branches: + - '*/*' + +permissions: + pull-requests: write + contents: read + +jobs: + prettier_lint: + runs-on: ubuntu-latest + + strategy: + matrix: + node-version: [18.x] + + steps: + - name: Checkout + uses: actions/checkout@v4 + - name: Use Node.js ${{ matrix.node-version }} + uses: actions/setup-node@v4 + with: + node-version: ${{ matrix.node-version }} + cache: 'yarn' + cache-dependency-path: login-workflow + - run: yarn install:dependencies + working-directory: login-workflow + - run: yarn prettier + working-directory: login-workflow + - run: yarn lint + working-directory: login-workflow + + unit_test: + runs-on: ubuntu-latest + + strategy: + matrix: + node-version: [18.x] + + steps: + - uses: actions/checkout@v4 + - name: Use Node.js ${{ matrix.node-version }} + uses: actions/setup-node@v4 + with: + node-version: ${{ matrix.node-version }} + cache: 'yarn' + cache-dependency-path: login-workflow + - run: yarn --frozen-lockfile + working-directory: login-workflow + - run: yarn test:ci --coverage --watchAll=false + working-directory: login-workflow + - name: Upload to Codecov + uses: codecov/codecov-action@v3 + with: + directory: ./login-workflow/coverage/ + files: clover.xml + flags: unittests + name: codecov-report + verbose: true + + build_login_workflow: + runs-on: ubuntu-latest + + strategy: + matrix: + node-version: [18.x] + + steps: + - uses: actions/checkout@v4 + - name: Use Node.js ${{ matrix.node-version }} + uses: actions/setup-node@v4 + with: + node-version: ${{ matrix.node-version }} + cache: 'yarn' + cache-dependency-path: login-workflow + - run: yarn --frozen-lockfile + working-directory: login-workflow + - run: yarn build + working-directory: login-workflow + - name: Save build + uses: actions/upload-artifact@v3 + with: + name: dist + if-no-files-found: error + path: login-workflow/dist + + publish_login_workflow: + runs-on: ubuntu-latest + if: ${{ github.event_name == 'push' && (github.ref == 'refs/heads/master' || github.ref == 'refs/heads/dev') }} + needs: [prettier_lint, unit_test, build_login_workflow] + strategy: + matrix: + node-version: [18.x] + env: + NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }} + BRANCH: ${{ github.ref == 'refs/heads/master' && 'master' || 'dev' }} + steps: + - uses: actions/checkout@v4 + - name: Download dist + uses: actions/download-artifact@v3 + with: + name: dist + path: login-workflow/dist + - uses: actions/setup-node@v4 + with: + node-version: ${{ matrix.node-version }} + registry-url: 'https://registry.npmjs.org' + cache-dependency-path: login-workflow + - run: yarn --frozen-lockfile + - run: yarn publish:package -b ${{env.BRANCH}} \ No newline at end of file From 82abc1377191175b854369f392ddb80c0663abb6 Mon Sep 17 00:00:00 2001 From: ektaghag-eaton Date: Fri, 29 Mar 2024 14:58:08 +0530 Subject: [PATCH 49/87] Test commit --- login-workflow/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/login-workflow/README.md b/login-workflow/README.md index 9785e4fe..a4d2bbdd 100644 --- a/login-workflow/README.md +++ b/login-workflow/README.md @@ -1,4 +1,4 @@ -# React Auth Workflow +# Test React Auth Workflow [![](https://img.shields.io/circleci/project/github/etn-ccis/blui-react-workflows/master.svg?style=flat)](https://circleci.com/gh/etn-ccis/blui-react-workflows/tree/master) ![npm (scoped)](https://img.shields.io/npm/v/@brightlayer-ui/react-auth-workflow) [![codecov](https://codecov.io/gh/etn-ccis/blui-react-workflows/branch/master/graph/badge.svg?token=H18T75WBFS)](https://codecov.io/gh/etn-ccis/blui-react-workflows) From 9e33485f5ea1e6a00f362e1e55ae956bd844b224 Mon Sep 17 00:00:00 2001 From: jeffgreiner-eaton Date: Fri, 29 Mar 2024 08:29:19 -0400 Subject: [PATCH 50/87] update codecov config --- .circleci/config.yml | 179 ------------------------------------- login-workflow/codecov.yml | 52 +++-------- 2 files changed, 12 insertions(+), 219 deletions(-) delete mode 100644 .circleci/config.yml diff --git a/.circleci/config.yml b/.circleci/config.yml deleted file mode 100644 index 8da53617..00000000 --- a/.circleci/config.yml +++ /dev/null @@ -1,179 +0,0 @@ -version: 2.1 -orbs: - codecov: codecov/codecov@3.2.2 - gh: circleci/github-cli@2.2.0 - browser-tools: circleci/browser-tools@1.4.8 - -jobs: - install_dependencies: - docker: - - image: cimg/node:18.17.0-browsers - working_directory: ~/login-workflow - resource_class: large - steps: - - checkout - - restore_cache: - keys: - - v2-dependencies-{{ checksum "login-workflow/yarn.lock" }} - - run: - name: Install Dependencies - command: | - cd login-workflow - yarn install --frozen-lockfile - - save_cache: - name: Save Cache - paths: - - node_modules - key: v2-dependencies-{{ checksum "login-workflow/yarn.lock" }} - - prettier_check: - docker: - - image: cimg/node:18.17.0-browsers - working_directory: ~/login-workflow - resource_class: large - steps: - - checkout - - restore_cache: - keys: - - v2-dependencies-{{ checksum "login-workflow/yarn.lock" }} - - run: - name: Install Dependencies - command: | - cd login-workflow - yarn install --frozen-lockfile - - run: - name: Prettier Check - command: | - cd login-workflow - yarn prettier:check - - lint_check: - docker: - - image: cimg/node:18.17.0-browsers - environment: - NODE_OPTIONS=--max-old-space-size=5120 - working_directory: ~/login-workflow - resource_class: large - steps: - - checkout - - restore_cache: - keys: - - v2-dependencies-{{ checksum "login-workflow/yarn.lock" }} - - run: - name: Install Dependencies - command: | - cd login-workflow - yarn install --frozen-lockfile - - run: - name: Lint - command: | - cd login-workflow - yarn lint - - store_test_results: - docker: - - image: cimg/node:18.17.0-browsers - parallelism: 4 - working_directory: ~/login-workflow - resource_class: large - steps: - - checkout - - restore_cache: - keys: - - v2-dependencies-{{ checksum "login-workflow/yarn.lock" }} - - run: - name: Install Dependencies - command: | - cd login-workflow - yarn install --frozen-lockfile - - run: - name: Tests - command: | - cd login-workflow - yarn test:ci --maxWorkers=2 --coverage --watchAll=false - - persist_to_workspace: - root: . - paths: - - login-workflow/coverage - - build_login_workflow: - docker: - - image: cimg/node:18.17.0-browsers - environment: - NODE_OPTIONS=--max-old-space-size=5120 - working_directory: ~/login-workflow - resource_class: large - steps: - - checkout - - restore_cache: - keys: - - v2-dependencies-{{ checksum "login-workflow/yarn.lock" }} - - run: - name: Install Dependencies - command: | - cd login-workflow - yarn install --frozen-lockfile - - run: - name: Build - command: | - cd login-workflow - yarn build - - persist_to_workspace: - root: . - paths: - - login-workflow/dist - - coverage_report: - working_directory: ~/login-workflow - docker: - - image: cimg/node:18.17.0-browsers - steps: - - checkout - - attach_workspace: - at: . - - codecov/upload: - file: './login-workflow/coverage/clover.xml' - flags: unit_tests - token: CODECOV_TOKEN - - publish_login_workflow: - docker: - - image: cimg/node:18.17.0-browsers - steps: - - checkout - - attach_workspace: - at: . - - run: - name: Authenticate with registry - command: | - echo "//registry.npmjs.org/:_authToken=$NPM_TOKEN" > ~/.npmrc - echo "//registry.yarnpkg.com/:_authToken=$NPM_TOKEN" >> ~/.npmrc - - run: - name: Publish @brightlayer-ui/react-auth-workflow - command: | - cd login-workflow && yarn publish:package -b $CIRCLE_BRANCH - -workflows: - react_workflows: - jobs: - - install_dependencies - - prettier_check - - lint_check - - store_test_results - - build_login_workflow - - publish_login_workflow: - requires: - - build_login_workflow - filters: - branches: - only: - - master - - dev - - coverage_report: - requires: - - store_test_results - filters: - branches: - only: - - master - - dev diff --git a/login-workflow/codecov.yml b/login-workflow/codecov.yml index 7717ef29..aa4f1a58 100644 --- a/login-workflow/codecov.yml +++ b/login-workflow/codecov.yml @@ -1,41 +1,13 @@ -codecov: - require_ci_to_pass: yes -coverage: - precision: 2 - round: down - range: "50...75" -status: - project: yes - patch: yes - changes: no -parsers: - gcov: - branch_detection: - conditional: yes - loop: yes - method: no - macro: no -comment: - layout: "reach,diff,flags,tree" - behavior: default - require_changes: no # - "::login-workflow/" # move root e.g., "path/" => "after/path/" leaving this here for now, it might need turned on later -flag_management: - default_rules: - carryforward: true - statuses: - - type: project - target: auto - threshold: 30% - - type: patch - target: 80% - individual_flags: - - name: unit_tests - paths: - - ./login-workflow/src - carryforward: true - statuses: - - type: project - target: 20% - - type: patch - target: 80% \ No newline at end of file +coverage: + status: + project: + default: + target: 70% + threshold: 5% + informational: true + patch: + default: + target: 70% + threshold: 5% + informational: true \ No newline at end of file From 91c4b92c153d04e93ace1771574c00a1c7b6dec2 Mon Sep 17 00:00:00 2001 From: jeffgreiner-eaton Date: Fri, 29 Mar 2024 10:14:03 -0400 Subject: [PATCH 51/87] update a test to verify diff coverage --- .../CreatePasswordScreen.test.tsx | 55 +++++++++++++++++++ 1 file changed, 55 insertions(+) diff --git a/login-workflow/src/screens/CreatePasswordScreen/CreatePasswordScreen.test.tsx b/login-workflow/src/screens/CreatePasswordScreen/CreatePasswordScreen.test.tsx index d5593eec..504f0697 100644 --- a/login-workflow/src/screens/CreatePasswordScreen/CreatePasswordScreen.test.tsx +++ b/login-workflow/src/screens/CreatePasswordScreen/CreatePasswordScreen.test.tsx @@ -16,6 +16,26 @@ const passwordRequirements = [ description: 'Check 2', regex: /[a-z]+/, }, + { + description: '8-16 Characters', + regex: /^.{8,16}$/, + }, + { + description: 'One number', + regex: /\d+/, + }, + { + description: 'One uppercase letter', + regex: /[A-Z]+/, + }, + { + description: 'One lowercase letter', + regex: /[a-z]+/, + }, + { + description: 'One special character', + regex: /[!@#$%^&*(),.?":{}|<>]+/, + }, ]; afterEach(cleanup); @@ -146,4 +166,39 @@ describe('Create Password Screen', () => { fireEvent.click(backButton); expect(mockOnPrevious).toHaveBeenCalled(); }); + + it('renders with custom and default password requirements', () => { + renderer(); + + expect(passwordRequirements).toEqual([ + { + description: 'Check 1', + regex: /^.{3,5}$/, + }, + { + description: 'Check 2', + regex: /[a-z]+/, + }, + { + description: '8-16 Characters', + regex: /^.{8,16}$/, + }, + { + description: 'One number', + regex: /\d+/, + }, + { + description: 'One uppercase letter', + regex: /[A-Z]+/, + }, + { + description: 'One lowercase letter', + regex: /[a-z]+/, + }, + { + description: 'One special character', + regex: /[!@#$%^&*(),.?":{}|<>]+/, + }, + ]); + }); }); From f108a1130ea80ac05cb154f687e9be3c156ed1ab Mon Sep 17 00:00:00 2001 From: jeffgreiner-eaton Date: Fri, 29 Mar 2024 10:29:55 -0400 Subject: [PATCH 52/87] remove fake test for coverage --- .../CreatePasswordScreen.test.tsx | 55 ------------------- 1 file changed, 55 deletions(-) diff --git a/login-workflow/src/screens/CreatePasswordScreen/CreatePasswordScreen.test.tsx b/login-workflow/src/screens/CreatePasswordScreen/CreatePasswordScreen.test.tsx index 504f0697..d5593eec 100644 --- a/login-workflow/src/screens/CreatePasswordScreen/CreatePasswordScreen.test.tsx +++ b/login-workflow/src/screens/CreatePasswordScreen/CreatePasswordScreen.test.tsx @@ -16,26 +16,6 @@ const passwordRequirements = [ description: 'Check 2', regex: /[a-z]+/, }, - { - description: '8-16 Characters', - regex: /^.{8,16}$/, - }, - { - description: 'One number', - regex: /\d+/, - }, - { - description: 'One uppercase letter', - regex: /[A-Z]+/, - }, - { - description: 'One lowercase letter', - regex: /[a-z]+/, - }, - { - description: 'One special character', - regex: /[!@#$%^&*(),.?":{}|<>]+/, - }, ]; afterEach(cleanup); @@ -166,39 +146,4 @@ describe('Create Password Screen', () => { fireEvent.click(backButton); expect(mockOnPrevious).toHaveBeenCalled(); }); - - it('renders with custom and default password requirements', () => { - renderer(); - - expect(passwordRequirements).toEqual([ - { - description: 'Check 1', - regex: /^.{3,5}$/, - }, - { - description: 'Check 2', - regex: /[a-z]+/, - }, - { - description: '8-16 Characters', - regex: /^.{8,16}$/, - }, - { - description: 'One number', - regex: /\d+/, - }, - { - description: 'One uppercase letter', - regex: /[A-Z]+/, - }, - { - description: 'One lowercase letter', - regex: /[a-z]+/, - }, - { - description: 'One special character', - regex: /[!@#$%^&*(),.?":{}|<>]+/, - }, - ]); - }); }); From a44f11a6732bb75ea433e356ef22dab1c74dcfe2 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 1 Apr 2024 11:45:17 +0000 Subject: [PATCH 53/87] Bump eslint from 8.41.0 to 8.57.0 in /login-workflow/example Bumps [eslint](https://github.com/eslint/eslint) from 8.41.0 to 8.57.0. - [Release notes](https://github.com/eslint/eslint/releases) - [Changelog](https://github.com/eslint/eslint/blob/main/CHANGELOG.md) - [Commits](https://github.com/eslint/eslint/compare/v8.41.0...v8.57.0) --- updated-dependencies: - dependency-name: eslint dependency-type: direct:development update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- login-workflow/example/package.json | 2 +- login-workflow/example/yarn.lock | 138 +++++++++++++++------------- 2 files changed, 77 insertions(+), 63 deletions(-) diff --git a/login-workflow/example/package.json b/login-workflow/example/package.json index ae91dccc..107bb8f6 100644 --- a/login-workflow/example/package.json +++ b/login-workflow/example/package.json @@ -64,7 +64,7 @@ "@typescript-eslint/eslint-plugin": "^5.62.0", "@typescript-eslint/parser": "^5.49.0", "babel-plugin-istanbul": "^6.1.1", - "eslint": "^8.31.0", + "eslint": "^8.57.0", "eslint-config-prettier": "^8.5.0", "eslint-plugin-react": "^7.30.1", "jest": "29.3.1", diff --git a/login-workflow/example/yarn.lock b/login-workflow/example/yarn.lock index 1a3da983..467854da 100644 --- a/login-workflow/example/yarn.lock +++ b/login-workflow/example/yarn.lock @@ -2,6 +2,11 @@ # yarn lockfile v1 +"@aashutoshrathi/word-wrap@^1.2.3": + version "1.2.6" + resolved "https://registry.yarnpkg.com/@aashutoshrathi/word-wrap/-/word-wrap-1.2.6.tgz#bd9154aec9983f77b3a034ecaa015c2e4201f6cf" + integrity sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA== + "@adobe/css-tools@^4.0.1": version "4.3.2" resolved "https://registry.yarnpkg.com/@adobe/css-tools/-/css-tools-4.3.2.tgz#a6abc715fb6884851fca9dad37fc34739a04fd11" @@ -1458,19 +1463,19 @@ dependencies: eslint-visitor-keys "^3.3.0" -"@eslint-community/regexpp@^4.4.0": - version "4.5.1" - resolved "https://registry.yarnpkg.com/@eslint-community/regexpp/-/regexpp-4.5.1.tgz#cdd35dce4fa1a89a4fd42b1599eb35b3af408884" - integrity sha512-Z5ba73P98O1KUYCCJTUeVpja9RcGoMdncZ6T49FCUl2lN38JtCJ+3WgIDBv0AuY4WChU5PmtJmOCTlN6FZTFKQ== +"@eslint-community/regexpp@^4.4.0", "@eslint-community/regexpp@^4.6.1": + version "4.10.0" + resolved "https://registry.yarnpkg.com/@eslint-community/regexpp/-/regexpp-4.10.0.tgz#548f6de556857c8bb73bbee70c35dc82a2e74d63" + integrity sha512-Cu96Sd2By9mCNTx2iyKOmq10v22jUVQv0lQnlGNy16oE9589yE+QADPbrMGCkA51cKZSg3Pu/aTJVTGfL/qjUA== -"@eslint/eslintrc@^2.0.3": - version "2.0.3" - resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-2.0.3.tgz#4910db5505f4d503f27774bf356e3704818a0331" - integrity sha512-+5gy6OQfk+xx3q0d6jGZZC3f3KzAkXc/IanVxd1is/VIIziRqqt3ongQz0FiTUXqTk0c7aDB3OaFuKnuSoJicQ== +"@eslint/eslintrc@^2.1.4": + version "2.1.4" + resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-2.1.4.tgz#388a269f0f25c1b6adc317b5a2c55714894c70ad" + integrity sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ== dependencies: ajv "^6.12.4" debug "^4.3.2" - espree "^9.5.2" + espree "^9.6.0" globals "^13.19.0" ignore "^5.2.0" import-fresh "^3.2.1" @@ -1478,23 +1483,23 @@ minimatch "^3.1.2" strip-json-comments "^3.1.1" -"@eslint/js@8.41.0": - version "8.41.0" - resolved "https://registry.yarnpkg.com/@eslint/js/-/js-8.41.0.tgz#080321c3b68253522f7646b55b577dd99d2950b3" - integrity sha512-LxcyMGxwmTh2lY9FwHPGWOHmYFCZvbrFCBZL4FzSSsxsRPuhrYUg/49/0KDfW8tnIEaEHtfmn6+NPN+1DqaNmA== +"@eslint/js@8.57.0": + version "8.57.0" + resolved "https://registry.yarnpkg.com/@eslint/js/-/js-8.57.0.tgz#a5417ae8427873f1dd08b70b3574b453e67b5f7f" + integrity sha512-Ys+3g2TaW7gADOJzPt83SJtCDhMjndcDMFVQ/Tj9iA1BfJzFKD9mAUXT3OenpuPHbI6P/myECxRJrofUsDx/5g== "@fontsource/open-sans@^5.0.3": version "5.0.24" resolved "https://registry.yarnpkg.com/@fontsource/open-sans/-/open-sans-5.0.24.tgz#02f85e51d0ee75c3c2f42f683cd486364f99e2d9" integrity sha512-bIF+87vxfOPTyvnBKS+rCPmz/m66um3zCk1UdPv8RGBgwu6MMxwED0jpcbvyFSkfy0ApcdjfkDSAhlFTm/pgiw== -"@humanwhocodes/config-array@^0.11.8": - version "0.11.8" - resolved "https://registry.yarnpkg.com/@humanwhocodes/config-array/-/config-array-0.11.8.tgz#03595ac2075a4dc0f191cc2131de14fbd7d410b9" - integrity sha512-UybHIJzJnR5Qc/MsD9Kr+RpO2h+/P1GhOwdiLPXK5TWk5sgTdu88bTD9UP+CKbPPh5Rni1u0GjAdYQLemG8g+g== +"@humanwhocodes/config-array@^0.11.14": + version "0.11.14" + resolved "https://registry.yarnpkg.com/@humanwhocodes/config-array/-/config-array-0.11.14.tgz#d78e481a039f7566ecc9660b4ea7fe6b1fec442b" + integrity sha512-3T8LkOmg45BV5FICb15QQMsyUSWrQ8AygVfC7ZG32zOalnqrilm018ZVCw0eapXux8FtA33q8PSRSstjee3jSg== dependencies: - "@humanwhocodes/object-schema" "^1.2.1" - debug "^4.1.1" + "@humanwhocodes/object-schema" "^2.0.2" + debug "^4.3.1" minimatch "^3.0.5" "@humanwhocodes/module-importer@^1.0.1": @@ -1502,10 +1507,10 @@ resolved "https://registry.yarnpkg.com/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz#af5b2691a22b44be847b0ca81641c5fb6ad0172c" integrity sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA== -"@humanwhocodes/object-schema@^1.2.1": - version "1.2.1" - resolved "https://registry.yarnpkg.com/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz#b520529ec21d8e5945a1851dfd1c32e94e39ff45" - integrity sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA== +"@humanwhocodes/object-schema@^2.0.2": + version "2.0.2" + resolved "https://registry.yarnpkg.com/@humanwhocodes/object-schema/-/object-schema-2.0.2.tgz#d9fae00a2d5cb40f92cfe64b47ad749fbc38f917" + integrity sha512-6EwiSjwWYP7pTckG6I5eyFANjPhmPjUX9JRLUSfNPC7FX7zK9gyZAfUEaECL6ALTpGX5AjnBq3C9XmVWPitNpw== "@istanbuljs/load-nyc-config@^1.0.0": version "1.1.0" @@ -2893,6 +2898,11 @@ "@typescript-eslint/types" "5.62.0" eslint-visitor-keys "^3.3.0" +"@ungap/structured-clone@^1.2.0": + version "1.2.0" + resolved "https://registry.yarnpkg.com/@ungap/structured-clone/-/structured-clone-1.2.0.tgz#756641adb587851b5ccb3e095daf27ae581c8406" + integrity sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ== + "@webassemblyjs/ast@1.11.6", "@webassemblyjs/ast@^1.11.5": version "1.11.6" resolved "https://registry.yarnpkg.com/@webassemblyjs/ast/-/ast-1.11.6.tgz#db046555d3c413f8966ca50a95176a0e2c642e24" @@ -3070,11 +3080,16 @@ acorn@^7.1.1: resolved "https://registry.yarnpkg.com/acorn/-/acorn-7.4.1.tgz#feaed255973d2e77555b83dbc08851a6c63520fa" integrity sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A== -acorn@^8.2.4, acorn@^8.5.0, acorn@^8.7.1, acorn@^8.8.0: +acorn@^8.2.4, acorn@^8.5.0, acorn@^8.7.1: version "8.8.2" resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.8.2.tgz#1b2f25db02af965399b9776b0c2c391276d37c4a" integrity sha512-xjIYgE8HBrkpd/sJqOGNspf8uHG+NOHGOw6a/Urj8taM2EXfdNAH2oFcPeIFfsv3+kz/mJrS5VuMqbNLjCa2vw== +acorn@^8.9.0: + version "8.11.3" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.11.3.tgz#71e0b14e13a4ec160724b38fb7b0f233b1b81d7a" + integrity sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg== + address@^1.0.1, address@^1.1.2: version "1.2.2" resolved "https://registry.yarnpkg.com/address/-/address-1.2.2.tgz#2b5248dac5485a6390532c6a517fda2e3faac89e" @@ -3114,7 +3129,7 @@ ajv-keywords@^5.1.0: dependencies: fast-deep-equal "^3.1.3" -ajv@^6.10.0, ajv@^6.12.2, ajv@^6.12.4, ajv@^6.12.5: +ajv@^6.12.2, ajv@^6.12.4, ajv@^6.12.5: version "6.12.6" resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.6.tgz#baf5a62e802b07d977034586f8c3baf5adf26df4" integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g== @@ -4309,7 +4324,7 @@ debug@2.6.9, debug@^2.6.0: dependencies: ms "2.0.0" -debug@4, debug@^4.1.0, debug@^4.1.1, debug@^4.3.2, debug@^4.3.4: +debug@4, debug@^4.1.0, debug@^4.1.1, debug@^4.3.1, debug@^4.3.2, debug@^4.3.4: version "4.3.4" resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.4.tgz#1319f6579357f2338d3337d2cdd4914bb5dcc865" integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ== @@ -4935,10 +4950,10 @@ eslint-scope@5.1.1, eslint-scope@^5.1.1: esrecurse "^4.3.0" estraverse "^4.1.1" -eslint-scope@^7.2.0: - version "7.2.0" - resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-7.2.0.tgz#f21ebdafda02352f103634b96dd47d9f81ca117b" - integrity sha512-DYj5deGlHBfMt15J7rdtyKNq/Nqlv5KfU4iodrQ019XESsRnwXH9KAE0y3cwtUHDo2ob7CypAnCqefh6vioWRw== +eslint-scope@^7.2.2: + version "7.2.2" + resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-7.2.2.tgz#deb4f92563390f32006894af62a22dba1c46423f" + integrity sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg== dependencies: esrecurse "^4.3.0" estraverse "^5.2.0" @@ -4948,10 +4963,10 @@ eslint-visitor-keys@^2.1.0: resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz#f65328259305927392c938ed44eb0a5c9b2bd303" integrity sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw== -eslint-visitor-keys@^3.3.0, eslint-visitor-keys@^3.4.1: - version "3.4.1" - resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-3.4.1.tgz#c22c48f48942d08ca824cc526211ae400478a994" - integrity sha512-pZnmmLwYzf+kWaM/Qgrvpen51upAktaaiI01nsJD/Yr3lMOdNtq0cxkrrg16w64VtisN6okbs7Q8AfGqj4c9fA== +eslint-visitor-keys@^3.3.0, eslint-visitor-keys@^3.4.1, eslint-visitor-keys@^3.4.3: + version "3.4.3" + resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz#0cd72fe8550e3c2eae156a96a4dddcd1c8ac5800" + integrity sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag== eslint-webpack-plugin@^3.1.1: version "3.2.0" @@ -4964,27 +4979,28 @@ eslint-webpack-plugin@^3.1.1: normalize-path "^3.0.0" schema-utils "^4.0.0" -eslint@^8.3.0, eslint@^8.31.0: - version "8.41.0" - resolved "https://registry.yarnpkg.com/eslint/-/eslint-8.41.0.tgz#3062ca73363b4714b16dbc1e60f035e6134b6f1c" - integrity sha512-WQDQpzGBOP5IrXPo4Hc0814r4/v2rrIsB0rhT7jtunIalgg6gYXWhRMOejVO8yH21T/FGaxjmFjBMNqcIlmH1Q== +eslint@^8.3.0, eslint@^8.57.0: + version "8.57.0" + resolved "https://registry.yarnpkg.com/eslint/-/eslint-8.57.0.tgz#c786a6fd0e0b68941aaf624596fb987089195668" + integrity sha512-dZ6+mexnaTIbSBZWgou51U6OmzIhYM2VcNdtiTtI7qPNZm35Akpr0f6vtw3w1Kmn5PYo+tZVfh13WrhpS6oLqQ== dependencies: "@eslint-community/eslint-utils" "^4.2.0" - "@eslint-community/regexpp" "^4.4.0" - "@eslint/eslintrc" "^2.0.3" - "@eslint/js" "8.41.0" - "@humanwhocodes/config-array" "^0.11.8" + "@eslint-community/regexpp" "^4.6.1" + "@eslint/eslintrc" "^2.1.4" + "@eslint/js" "8.57.0" + "@humanwhocodes/config-array" "^0.11.14" "@humanwhocodes/module-importer" "^1.0.1" "@nodelib/fs.walk" "^1.2.8" - ajv "^6.10.0" + "@ungap/structured-clone" "^1.2.0" + ajv "^6.12.4" chalk "^4.0.0" cross-spawn "^7.0.2" debug "^4.3.2" doctrine "^3.0.0" escape-string-regexp "^4.0.0" - eslint-scope "^7.2.0" - eslint-visitor-keys "^3.4.1" - espree "^9.5.2" + eslint-scope "^7.2.2" + eslint-visitor-keys "^3.4.3" + espree "^9.6.1" esquery "^1.4.2" esutils "^2.0.2" fast-deep-equal "^3.1.3" @@ -4994,7 +5010,6 @@ eslint@^8.3.0, eslint@^8.31.0: globals "^13.19.0" graphemer "^1.4.0" ignore "^5.2.0" - import-fresh "^3.0.0" imurmurhash "^0.1.4" is-glob "^4.0.0" is-path-inside "^3.0.3" @@ -5004,17 +5019,16 @@ eslint@^8.3.0, eslint@^8.31.0: lodash.merge "^4.6.2" minimatch "^3.1.2" natural-compare "^1.4.0" - optionator "^0.9.1" + optionator "^0.9.3" strip-ansi "^6.0.1" - strip-json-comments "^3.1.0" text-table "^0.2.0" -espree@^9.5.2: - version "9.5.2" - resolved "https://registry.yarnpkg.com/espree/-/espree-9.5.2.tgz#e994e7dc33a082a7a82dceaf12883a829353215b" - integrity sha512-7OASN1Wma5fum5SrNhFMAMJxOUAbhyfQ8dQ//PJaJbNw0URTPWqIghHWt1MmAANKhHZIYOHruW4Kw4ruUWOdGw== +espree@^9.6.0, espree@^9.6.1: + version "9.6.1" + resolved "https://registry.yarnpkg.com/espree/-/espree-9.6.1.tgz#a2a17b8e434690a5432f2f8018ce71d331a48c6f" + integrity sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ== dependencies: - acorn "^8.8.0" + acorn "^8.9.0" acorn-jsx "^5.3.2" eslint-visitor-keys "^3.4.1" @@ -5856,7 +5870,7 @@ immer@^9.0.7: resolved "https://registry.yarnpkg.com/immer/-/immer-9.0.21.tgz#1e025ea31a40f24fb064f1fef23e931496330176" integrity sha512-bc4NBHqOqSfRW7POMkHd51LvClaeMXpm8dx0e8oE2GORbq5aRK7Bxl4FyzVLdGtLmvLKL7BTDBG5ACQm4HWjTA== -import-fresh@^3.0.0, import-fresh@^3.1.0, import-fresh@^3.2.1: +import-fresh@^3.1.0, import-fresh@^3.2.1: version "3.3.0" resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.3.0.tgz#37162c25fcb9ebaa2e6e53d5b4d88ce17d9e0c2b" integrity sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw== @@ -7790,17 +7804,17 @@ optionator@^0.8.1: type-check "~0.3.2" word-wrap "~1.2.3" -optionator@^0.9.1: - version "0.9.1" - resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.9.1.tgz#4f236a6373dae0566a6d43e1326674f50c291499" - integrity sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw== +optionator@^0.9.3: + version "0.9.3" + resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.9.3.tgz#007397d44ed1872fdc6ed31360190f81814e2c64" + integrity sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg== dependencies: + "@aashutoshrathi/word-wrap" "^1.2.3" deep-is "^0.1.3" fast-levenshtein "^2.0.6" levn "^0.4.1" prelude-ls "^1.2.1" type-check "^0.4.0" - word-wrap "^1.2.3" p-limit@^2.0.0, p-limit@^2.2.0: version "2.3.0" @@ -9656,7 +9670,7 @@ strip-indent@^3.0.0: dependencies: min-indent "^1.0.0" -strip-json-comments@^3.1.0, strip-json-comments@^3.1.1: +strip-json-comments@^3.1.1: version "3.1.1" resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz#31f1281b3832630434831c310c01cccda8cbe006" integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig== @@ -10449,7 +10463,7 @@ which@^2.0.1: dependencies: isexe "^2.0.0" -word-wrap@^1.2.3, word-wrap@~1.2.3: +word-wrap@~1.2.3: version "1.2.4" resolved "https://registry.yarnpkg.com/word-wrap/-/word-wrap-1.2.4.tgz#cb4b50ec9aca570abd1f52f33cd45b6c61739a9f" integrity sha512-2V81OA4ugVo5pRo46hAoD2ivUJx8jXmWXfUkY4KFNw0hEptvN0QfH3K4nHiwzGeKl5rFKedV48QVoqYavy4YpA== From 4a69e6337334d0760b58843298377cd31c01e518 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 2 Apr 2024 15:57:08 +0000 Subject: [PATCH 54/87] Bump react-router-dom from 6.16.0 to 6.22.3 in /login-workflow Bumps [react-router-dom](https://github.com/remix-run/react-router/tree/HEAD/packages/react-router-dom) from 6.16.0 to 6.22.3. - [Release notes](https://github.com/remix-run/react-router/releases) - [Changelog](https://github.com/remix-run/react-router/blob/main/packages/react-router-dom/CHANGELOG.md) - [Commits](https://github.com/remix-run/react-router/commits/react-router-dom@6.22.3/packages/react-router-dom) --- updated-dependencies: - dependency-name: react-router-dom dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- login-workflow/yarn.lock | 28 ++++++++++++++-------------- 1 file changed, 14 insertions(+), 14 deletions(-) diff --git a/login-workflow/yarn.lock b/login-workflow/yarn.lock index ed61c14e..ca54d358 100644 --- a/login-workflow/yarn.lock +++ b/login-workflow/yarn.lock @@ -1933,10 +1933,10 @@ resolved "https://registry.yarnpkg.com/@protobufjs/utf8/-/utf8-1.1.0.tgz#a777360b5b39a1a2e5106f8e858f2fd2d060c570" integrity sha512-Vvn3zZrhQZkkBE8LSuW3em98c0FwgO4nxzv6OdSxPKJIEKY2bGbHn+mhGIPerzI4twdxaP8/0+06HBpwf345Lw== -"@remix-run/router@1.9.0": - version "1.9.0" - resolved "https://registry.yarnpkg.com/@remix-run/router/-/router-1.9.0.tgz#9033238b41c4cbe1e961eccb3f79e2c588328cf6" - integrity sha512-bV63itrKBC0zdT27qYm6SDZHlkXwFL1xMBuhkn+X7l0+IIhNaH5wuuvZKp6eKhCD4KFhujhfhCT1YxXW6esUIA== +"@remix-run/router@1.15.3": + version "1.15.3" + resolved "https://registry.yarnpkg.com/@remix-run/router/-/router-1.15.3.tgz#d2509048d69dbb72d5389a14945339f1430b2d3c" + integrity sha512-Oy8rmScVrVxWZVOpEF57ovlnhpZ8CCPlnIIumVcV9nFdiSIrus99+Lw78ekXyGvVDlIsFJbSfmSovJUhCWYV3w== "@seznam/compose-react-refs@^1.0.6": version "1.0.6" @@ -7991,19 +7991,19 @@ react-is@^18.0.0, react-is@^18.2.0: integrity sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w== react-router-dom@^6.8.0: - version "6.16.0" - resolved "https://registry.yarnpkg.com/react-router-dom/-/react-router-dom-6.16.0.tgz#86f24658da35eb66727e75ecbb1a029e33ee39d9" - integrity sha512-aTfBLv3mk/gaKLxgRDUPbPw+s4Y/O+ma3rEN1u8EgEpLpPe6gNjIsWt9rxushMHHMb7mSwxRGdGlGdvmFsyPIg== + version "6.22.3" + resolved "https://registry.yarnpkg.com/react-router-dom/-/react-router-dom-6.22.3.tgz#9781415667fd1361a475146c5826d9f16752a691" + integrity sha512-7ZILI7HjcE+p31oQvwbokjk6OA/bnFxrhJ19n82Ex9Ph8fNAq+Hm/7KchpMGlTgWhUxRHMMCut+vEtNpWpowKw== dependencies: - "@remix-run/router" "1.9.0" - react-router "6.16.0" + "@remix-run/router" "1.15.3" + react-router "6.22.3" -react-router@6.16.0: - version "6.16.0" - resolved "https://registry.yarnpkg.com/react-router/-/react-router-6.16.0.tgz#abbf3d5bdc9c108c9b822a18be10ee004096fb81" - integrity sha512-VT4Mmc4jj5YyjpOi5jOf0I+TYzGpvzERy4ckNSvSh2RArv8LLoCxlsZ2D+tc7zgjxcY34oTz2hZaeX5RVprKqA== +react-router@6.22.3: + version "6.22.3" + resolved "https://registry.yarnpkg.com/react-router/-/react-router-6.22.3.tgz#9d9142f35e08be08c736a2082db5f0c9540a885e" + integrity sha512-dr2eb3Mj5zK2YISHK++foM9w4eBnO23eKnZEDs7c880P6oKbrjz/Svg9+nxqtHQK+oMW4OtjZca0RqPglXxguQ== dependencies: - "@remix-run/router" "1.9.0" + "@remix-run/router" "1.15.3" react-transition-group@^4.4.5: version "4.4.5" From 298c90d79b76b68bacb67249ee6b462af1c2538d Mon Sep 17 00:00:00 2001 From: jeffgreiner-eaton Date: Tue, 2 Apr 2024 12:10:53 -0400 Subject: [PATCH 55/87] update work dir --- .github/workflows/blui-ci.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.github/workflows/blui-ci.yml b/.github/workflows/blui-ci.yml index e42936f3..77327cbf 100644 --- a/.github/workflows/blui-ci.yml +++ b/.github/workflows/blui-ci.yml @@ -116,4 +116,5 @@ jobs: registry-url: 'https://registry.npmjs.org' cache-dependency-path: login-workflow - run: yarn --frozen-lockfile - - run: yarn publish:package -b ${{env.BRANCH}} \ No newline at end of file + - run: yarn publish:package -b ${{env.BRANCH}} + working-directory: login-workflow \ No newline at end of file From 1fa753dd964e4655bcba80c05dbd11fbe0127aab Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 3 Apr 2024 18:15:56 +0000 Subject: [PATCH 56/87] Bump vite from 5.0.12 to 5.0.13 in /login-workflow/example-vite Bumps [vite](https://github.com/vitejs/vite/tree/HEAD/packages/vite) from 5.0.12 to 5.0.13. - [Release notes](https://github.com/vitejs/vite/releases) - [Changelog](https://github.com/vitejs/vite/blob/v5.0.13/packages/vite/CHANGELOG.md) - [Commits](https://github.com/vitejs/vite/commits/v5.0.13/packages/vite) --- updated-dependencies: - dependency-name: vite dependency-type: direct:development ... Signed-off-by: dependabot[bot] --- login-workflow/example-vite/package.json | 2 +- login-workflow/example-vite/yarn.lock | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/login-workflow/example-vite/package.json b/login-workflow/example-vite/package.json index feb06702..25f7222f 100644 --- a/login-workflow/example-vite/package.json +++ b/login-workflow/example-vite/package.json @@ -55,7 +55,7 @@ "eslint-plugin-react-refresh": "^0.4.5", "jest": "^29.7.0", "prettier": "^3.2.4", - "vite": "^5.0.12", + "vite": "^5.0.13", "yarn-audit-fix": "^10.0.7" }, "prettier": "@brightlayer-ui/prettier-config", diff --git a/login-workflow/example-vite/yarn.lock b/login-workflow/example-vite/yarn.lock index 023e7027..911b73e8 100644 --- a/login-workflow/example-vite/yarn.lock +++ b/login-workflow/example-vite/yarn.lock @@ -10833,10 +10833,10 @@ vary@~1.1.2: resolved "https://registry.yarnpkg.com/vary/-/vary-1.1.2.tgz#2299f02c6ded30d4a5961b0b9f74524a18f634fc" integrity sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg== -vite@^5.0.12: - version "5.0.12" - resolved "https://registry.yarnpkg.com/vite/-/vite-5.0.12.tgz#8a2ffd4da36c132aec4adafe05d7adde38333c47" - integrity sha512-4hsnEkG3q0N4Tzf1+t6NdN9dg/L3BM+q8SWgbSPnJvrgH2kgdyzfVJwbR1ic69/4uMJJ/3dqDZZE5/WwqW8U1w== +vite@^5.0.13: + version "5.0.13" + resolved "https://registry.yarnpkg.com/vite/-/vite-5.0.13.tgz#605865b0e482506163e3f04f91665238f3be8cf1" + integrity sha512-/9ovhv2M2dGTuA+dY93B9trfyWMDRQw2jdVBhHNP6wr0oF34wG2i/N55801iZIpgUpnHDm4F/FabGQLyc+eOgg== dependencies: esbuild "^0.19.3" postcss "^8.4.32" From 166f6f98d1922044cd88e3afdc87ff46ceca5d2a Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 11 Apr 2024 12:07:32 +0000 Subject: [PATCH 57/87] Bump tar from 6.2.0 to 6.2.1 in /login-workflow Bumps [tar](https://github.com/isaacs/node-tar) from 6.2.0 to 6.2.1. - [Release notes](https://github.com/isaacs/node-tar/releases) - [Changelog](https://github.com/isaacs/node-tar/blob/main/CHANGELOG.md) - [Commits](https://github.com/isaacs/node-tar/compare/v6.2.0...v6.2.1) --- updated-dependencies: - dependency-name: tar dependency-type: indirect ... Signed-off-by: dependabot[bot] --- login-workflow/yarn.lock | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/login-workflow/yarn.lock b/login-workflow/yarn.lock index ca54d358..3c46e675 100644 --- a/login-workflow/yarn.lock +++ b/login-workflow/yarn.lock @@ -8898,9 +8898,9 @@ tar-stream@^2.2.0: readable-stream "^3.1.1" tar@^6.1.11, tar@^6.1.2: - version "6.2.0" - resolved "https://registry.yarnpkg.com/tar/-/tar-6.2.0.tgz#b14ce49a79cb1cd23bc9b016302dea5474493f73" - integrity sha512-/Wo7DcT0u5HUV486xg675HtjNd3BXZ6xDbzsCUZPt5iw8bTQ63bP0Raut3mvro9u+CUyq7YQd8Cx55fsZXxqLQ== + version "6.2.1" + resolved "https://registry.yarnpkg.com/tar/-/tar-6.2.1.tgz#717549c541bc3c2af15751bea94b1dd068d4b03a" + integrity sha512-DZ4yORTwrbTj/7MZYq2w+/ZFdI6OZ/f9SFHR+71gIVUZhOQPHzVCLpvRnPgyaMpfWxxk/4ONva3GQSyNIKRv6A== dependencies: chownr "^2.0.0" fs-minipass "^2.0.0" From a16149b9a4688fa7ef763161d5d2bbee7119054b Mon Sep 17 00:00:00 2001 From: priyankakmEaton Date: Tue, 16 Apr 2024 16:02:30 +0530 Subject: [PATCH 58/87] remove workflowFinishState --- .../src/components/WorkflowFinishState.tsx | 47 ------------------- login-workflow/src/components/index.ts | 1 - .../SuccessScreen/SuccessScreenBase.tsx | 37 +++++++++++++-- 3 files changed, 34 insertions(+), 51 deletions(-) delete mode 100644 login-workflow/src/components/WorkflowFinishState.tsx diff --git a/login-workflow/src/components/WorkflowFinishState.tsx b/login-workflow/src/components/WorkflowFinishState.tsx deleted file mode 100644 index 3c6b4242..00000000 --- a/login-workflow/src/components/WorkflowFinishState.tsx +++ /dev/null @@ -1,47 +0,0 @@ -import React from 'react'; -import { EmptyStateProps, EmptyState } from '@brightlayer-ui/react-components'; -import Box from '@mui/material/Box'; - -/** - * Component that renders a EmptyState component indicating completion of a user flow. - * - * @param props all props will be passed to the EmptyState component, except for style - * which is applied to the root element - * - * @category Component - */ - -export const WorkflowFinishState: React.FC>> = ( - props -) => { - const { classes: emptyStateClasses = {}, style, sx, ...emptyStateProps } = props; - - return ( - - - - ); -}; diff --git a/login-workflow/src/components/index.ts b/login-workflow/src/components/index.ts index 17e17799..c939a928 100644 --- a/login-workflow/src/components/index.ts +++ b/login-workflow/src/components/index.ts @@ -1,7 +1,6 @@ export * from './Dialog'; export * from './PasswordTextField'; export * from './WorkflowCard'; -export * from './WorkflowFinishState'; export * from './RegistrationWorkflow'; export * from './SetPassword'; export * from './ChangePasswordDialog'; diff --git a/login-workflow/src/screens/SuccessScreen/SuccessScreenBase.tsx b/login-workflow/src/screens/SuccessScreen/SuccessScreenBase.tsx index 0c53d650..4b8a1934 100644 --- a/login-workflow/src/screens/SuccessScreen/SuccessScreenBase.tsx +++ b/login-workflow/src/screens/SuccessScreen/SuccessScreenBase.tsx @@ -7,7 +7,8 @@ import { WorkflowCardInstructions, } from '../../components/WorkflowCard'; import { SuccessScreenProps } from './types'; -import { WorkflowFinishState } from '../../components'; +import { EmptyState } from '@brightlayer-ui/react-components'; +import Box from '@mui/material/Box'; /** * Component that renders a success screen @@ -27,7 +28,15 @@ import { WorkflowFinishState } from '../../components'; */ export const SuccessScreenBase: React.FC = (props) => { - const { icon, messageTitle = '', message = '', dismissButtonLabel = '', canDismiss, onDismiss } = props; + const { + icon, + messageTitle = '', + message = '', + dismissButtonLabel = '', + canDismiss, + onDismiss, + ...emptyStateProps + } = props; const cardBaseProps = props.WorkflowCardBaseProps || {}; const headerProps = props.WorkflowCardHeaderProps || {}; @@ -39,7 +48,29 @@ export const SuccessScreenBase: React.FC = (props) => { {Object.keys(instructionsProps).length !== 0 && } - + + + Date: Thu, 18 Apr 2024 16:18:42 +0530 Subject: [PATCH 59/87] reload eula content --- .../contexts/SharedDictionaries/chinese.ts | 1 + .../contexts/SharedDictionaries/english.ts | 1 + .../src/contexts/SharedDictionaries/french.ts | 1 + .../contexts/SharedDictionaries/portuguese.ts | 1 + .../contexts/SharedDictionaries/spanish.ts | 1 + .../src/contexts/SharedDictionaries/types.ts | 1 + .../src/screens/EulaScreen/EulaScreen.tsx | 22 +++++++++++-------- .../src/screens/EulaScreen/EulaScreenBase.tsx | 12 +++++----- .../src/screens/EulaScreen/types.ts | 16 ++++++++++++++ 9 files changed, 42 insertions(+), 14 deletions(-) diff --git a/login-workflow/src/contexts/SharedDictionaries/chinese.ts b/login-workflow/src/contexts/SharedDictionaries/chinese.ts index a4f40f6d..0f0fcbf0 100644 --- a/login-workflow/src/contexts/SharedDictionaries/chinese.ts +++ b/login-workflow/src/contexts/SharedDictionaries/chinese.ts @@ -49,6 +49,7 @@ const resources: CommonTranslationsFile = { LOADING: '正在加载……', REQUEST_ERROR: '抱歉,发送您的请求时出现了程序错误。', PASSWORD_REQUIRED_ERROR: '密码为必填项', + RETRY: '重试', }, FORMS: { FIRST_NAME: '名', diff --git a/login-workflow/src/contexts/SharedDictionaries/english.ts b/login-workflow/src/contexts/SharedDictionaries/english.ts index 3e4e0c56..0f58e9b6 100644 --- a/login-workflow/src/contexts/SharedDictionaries/english.ts +++ b/login-workflow/src/contexts/SharedDictionaries/english.ts @@ -49,6 +49,7 @@ const resources: CommonTranslationsFile = { LOADING: 'Loading...', REQUEST_ERROR: 'Sorry, there was a problem sending your request.', PASSWORD_REQUIRED_ERROR: 'Password Required', + RETRY: 'Retry', }, FORMS: { FIRST_NAME: 'First Name', diff --git a/login-workflow/src/contexts/SharedDictionaries/french.ts b/login-workflow/src/contexts/SharedDictionaries/french.ts index fcf6e6cc..b1673fc6 100644 --- a/login-workflow/src/contexts/SharedDictionaries/french.ts +++ b/login-workflow/src/contexts/SharedDictionaries/french.ts @@ -49,6 +49,7 @@ const resources: CommonTranslationsFile = { LOADING: 'le chargement...', REQUEST_ERROR: `Désolé, un problème est survenu lors de l'envoi de votre demande.`, PASSWORD_REQUIRED_ERROR: 'Mot de passe requis', + RETRY: 'Recommencez', }, FORMS: { FIRST_NAME: 'Prénom', diff --git a/login-workflow/src/contexts/SharedDictionaries/portuguese.ts b/login-workflow/src/contexts/SharedDictionaries/portuguese.ts index 24f9eeff..95b96337 100644 --- a/login-workflow/src/contexts/SharedDictionaries/portuguese.ts +++ b/login-workflow/src/contexts/SharedDictionaries/portuguese.ts @@ -49,6 +49,7 @@ const resources: CommonTranslationsFile = { LOADING: 'A carregar...', REQUEST_ERROR: 'Pedimos desculpa, existe um problema ao submeter o seu pedido', PASSWORD_REQUIRED_ERROR: 'Senha requerida', + RETRY: 'Tentar novamente', }, FORMS: { FIRST_NAME: 'Primeiro Nome', diff --git a/login-workflow/src/contexts/SharedDictionaries/spanish.ts b/login-workflow/src/contexts/SharedDictionaries/spanish.ts index dfda5388..94cbd241 100644 --- a/login-workflow/src/contexts/SharedDictionaries/spanish.ts +++ b/login-workflow/src/contexts/SharedDictionaries/spanish.ts @@ -49,6 +49,7 @@ const resources: CommonTranslationsFile = { LOADING: 'Cargando...', REQUEST_ERROR: 'Lo sentimos, hubo un problema al enviar su solicitud.', PASSWORD_REQUIRED_ERROR: 'Se requiere contraseña', + RETRY: 'Rever', }, FORMS: { FIRST_NAME: 'Nombre', diff --git a/login-workflow/src/contexts/SharedDictionaries/types.ts b/login-workflow/src/contexts/SharedDictionaries/types.ts index 25457b9e..3df7ae57 100644 --- a/login-workflow/src/contexts/SharedDictionaries/types.ts +++ b/login-workflow/src/contexts/SharedDictionaries/types.ts @@ -46,6 +46,7 @@ export type CommonTranslations = { LOADING: string; REQUEST_ERROR: string; PASSWORD_REQUIRED_ERROR: string; + RETRY: string; }; FORMS: { FIRST_NAME: string; diff --git a/login-workflow/src/screens/EulaScreen/EulaScreen.tsx b/login-workflow/src/screens/EulaScreen/EulaScreen.tsx index 34b4a3af..f4d734db 100644 --- a/login-workflow/src/screens/EulaScreen/EulaScreen.tsx +++ b/login-workflow/src/screens/EulaScreen/EulaScreen.tsx @@ -19,7 +19,7 @@ import { useTranslation } from 'react-i18next'; * @param WorkflowCardInstructionProps props that will be passed to the WorkflowCardInstructions component * @param WorkflowCardActionsProps props that will be passed to the WorkflowCardActions component * @param errorDisplayConfig configuration for customizing how errors are displayed - * @param onRefetch used to refetch Eula content. + * @param refreshConfig used to refresh Eula content. * * @category Component */ @@ -162,13 +162,7 @@ export const EulaScreen: React.FC = (props) => { void loadAndCacheEula(); }, [loadAndCacheEula]); - const { - checkboxProps = { ...props.checkboxProps, disabled: eulaFetchError }, - onRefetch = (): void => { - setEulaFetchError(false); - void loadAndCacheEula(); - }, - } = props; + const { checkboxProps = { ...props.checkboxProps, disabled: eulaFetchError } } = props; const workflowCardHeaderProps = { title: t('bluiRegistration:REGISTRATION.STEPS.LICENSE'), @@ -195,6 +189,16 @@ export const EulaScreen: React.FC = (props) => { }, }; + const { + refreshConfig = { + showRefreshButton: eulaFetchError, + onRefresh: (): void => { + setEulaFetchError(false); + void loadAndCacheEula(); + }, + }, + } = props; + return ( = (props) => { onEulaAcceptedChange={updateEulaAcceptedStatus} WorkflowCardActionsProps={workflowCardActionsProps} errorDisplayConfig={errorDisplayConfig} - onRefetch={onRefetch} + refreshConfig={refreshConfig} {...otherEulaScreenProps} /> ); diff --git a/login-workflow/src/screens/EulaScreen/EulaScreenBase.tsx b/login-workflow/src/screens/EulaScreen/EulaScreenBase.tsx index 200112d5..56d49f2a 100644 --- a/login-workflow/src/screens/EulaScreen/EulaScreenBase.tsx +++ b/login-workflow/src/screens/EulaScreen/EulaScreenBase.tsx @@ -14,6 +14,7 @@ import DOMPurify from 'dompurify'; import ErrorManager from '../../components/Error/ErrorManager'; import { Typography } from '@mui/material'; import ReplaySharpIcon from '@mui/icons-material/ReplaySharp'; +import { useTranslation } from 'react-i18next'; /** * Component that renders a screen displaying the EULA and requests acceptance via a checkbox. @@ -29,7 +30,7 @@ import ReplaySharpIcon from '@mui/icons-material/ReplaySharp'; * @param WorkflowCardInstructionProps props that will be passed to the WorkflowCardInstructions component * @param WorkflowCardActionsProps props that will be passed to the WorkflowCardActions component * @param errorDisplayConfig configuration for customizing how errors are displayed - * @param onRefetch used to refetch Eula content. + * @param onRefresh used to refresh Eula content. * * @category Component */ @@ -43,9 +44,10 @@ export const EulaScreenBase: React.FC = (props) => { initialCheckboxValue, checkboxProps, errorDisplayConfig, - onRefetch, + refreshConfig, } = props; + const { t } = useTranslation(); const cardBaseProps = props.WorkflowCardBaseProps || {}; const headerProps = props.WorkflowCardHeaderProps || {}; const instructionsProps = props.WorkflowCardInstructionProps || {}; @@ -71,7 +73,7 @@ export const EulaScreenBase: React.FC = (props) => { {Object.keys(instructionsProps).length !== 0 && } - {checkboxProps?.disabled ? ( + {refreshConfig?.showRefreshButton ? ( = (props) => { cursor: 'pointer', p: 1, }} - onClick={onRefetch} + onClick={refreshConfig?.onRefresh} > - Retry + {refreshConfig?.refreshButtonLabel || t('bluiCommon:MESSAGES.RETRY')} diff --git a/login-workflow/src/screens/EulaScreen/types.ts b/login-workflow/src/screens/EulaScreen/types.ts index 5befc015..25f2a47c 100644 --- a/login-workflow/src/screens/EulaScreen/types.ts +++ b/login-workflow/src/screens/EulaScreen/types.ts @@ -47,4 +47,20 @@ export type EulaScreenProps = WorkflowCardProps & { * @returns void */ onRefetch?: () => void; + + refreshConfig?: { + /** + * Function to refresh Eula content + * @returns {void} + */ + onRefresh?: () => void; + /** + * the refresh button to be rendered + */ + showRefreshButton?: boolean; + /** + * Label of refresh button + */ + refreshButtonLabel?: string; + }; }; From 3446cedf164cf89fd6a8f9e312dc95074c88bff2 Mon Sep 17 00:00:00 2001 From: priyankakmEaton Date: Thu, 18 Apr 2024 17:03:07 +0530 Subject: [PATCH 60/87] reload eulastate --- login-workflow/src/screens/EulaScreen/types.ts | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/login-workflow/src/screens/EulaScreen/types.ts b/login-workflow/src/screens/EulaScreen/types.ts index 25f2a47c..bfb73c63 100644 --- a/login-workflow/src/screens/EulaScreen/types.ts +++ b/login-workflow/src/screens/EulaScreen/types.ts @@ -43,11 +43,8 @@ export type EulaScreenProps = WorkflowCardProps & { errorDisplayConfig?: ErrorManagerProps; /** - * Function to refetch Eula content - * @returns void + * used to show refresh button and refresh the Eula content */ - onRefetch?: () => void; - refreshConfig?: { /** * Function to refresh Eula content From 1c56b11edd1b329d62a96592a2c50823829b611e Mon Sep 17 00:00:00 2001 From: jeffgreiner-eaton Date: Thu, 18 Apr 2024 14:38:39 -0400 Subject: [PATCH 61/87] Use npm publish --- .github/workflows/blui-ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/blui-ci.yml b/.github/workflows/blui-ci.yml index 77327cbf..d2395361 100644 --- a/.github/workflows/blui-ci.yml +++ b/.github/workflows/blui-ci.yml @@ -116,5 +116,5 @@ jobs: registry-url: 'https://registry.npmjs.org' cache-dependency-path: login-workflow - run: yarn --frozen-lockfile - - run: yarn publish:package -b ${{env.BRANCH}} + - run: npm run publish:package -b ${{env.BRANCH}} working-directory: login-workflow \ No newline at end of file From 1125b92b4bc3b562cb322c2d8df4a5ce4d2f1a51 Mon Sep 17 00:00:00 2001 From: priyankakmEaton Date: Fri, 19 Apr 2024 15:58:48 +0530 Subject: [PATCH 62/87] type docs --- login-workflow/docs/API.md | 99 ++++++++++--------- login-workflow/docs/migration-guide-3-4.md | 4 +- login-workflow/docs/registration-workflow.md | 63 ++++++------ .../src/actions/RegistrationUIActions.tsx | 5 +- 4 files changed, 86 insertions(+), 85 deletions(-) diff --git a/login-workflow/docs/API.md b/login-workflow/docs/API.md index 2d1b0097..8a88ee62 100644 --- a/login-workflow/docs/API.md +++ b/login-workflow/docs/API.md @@ -1,39 +1,43 @@ # API + This document outlines the various exports and configuration options for the React Auth Workflow package. ## RegistrationContextProviderProps + The `RegistrationContextProvider` manages the state of the registration workflow. It is a React Context Provider that wraps the entire registration workflow. It is responsible for managing the state of the registration workflow and providing the necessary actions to the various screens. The `RegistrationContextProviderProps` type is used to configure the `RegistrationContextProvider`. ### Type Declaration -- **actions**: _`RegistrationUIActions`_ + +- **actions**: _`RegistrationUIActions`_ - Returns an object of functions that are used to manage the registration workflow. See [RegistrationUIActions](#registrationuiactions) for more information. -- **language**: _`string`_ +- **language**: _`string`_ - The language code to use for the registration workflow. This is used to determine which language to use for the UI and for the API calls. -- **navigate**: _`(destination: -1 | string) => void`_ +- **navigate**: _`(destination: -1 | string) => void`_ - A function that is used to navigate to a new URL. This is used to navigate to the various screens of the registration workflow and destination: -1 navigates back to the previous screen the user last visited. -- **routeConfig**: _`RouteConfig`_ +- **routeConfig**: _`RouteConfig`_ - An object that defines the various routes for the registration workflow. See [RouteConfig](#routeconfig) for more information. -- **i18n**: (optional) _`i18n`_ +- **i18n**: (optional) _`i18n`_ - An optional i18n object that is used to translate the UI. If not provided, the default i18n object will be used. -- **errorConfig**: (optional) _`ErrorContextProviderProps`_ +- **errorConfig**: (optional) _`ErrorContextProviderProps`_ - An optional object that is used to configure the error handling of the registration workflow. See [ErrorContextProviderProps](#errorcontextproviderprops) for more information. ## RegistrationUIActions ### Type Declaration -- **loadEula**: _`(language: string) => Promise`_ + +- **loadEula**: _`(language: string) => Promise`_ - A function that is used to load the EULA. This function will be called when the user lands on the EULA screen. -- **acceptEula**: _`() => Promise`_ +- **acceptEula**: _`() => Promise`_ - A function that is used to accept the EULA. This function will be called when the user clicks the Next button on the EULA screen. -- **requestRegistrationCode**: _`(email: string) => Promise`_ +- **requestRegistrationCode**: _`(email: string) => Promise`_ - A function that is used to request a registration code. This function will be called when the user lands on the Verify Code screen as well as when a user clicks the Resend Verification Code button. -- **validateUserRegistrationRequest**: _`(validationCode: string, validationEmail?: string) => Promise<{codeValid: boolean | string; accountExists?: boolean}>`_ +- **validateUserRegistrationRequest**: _`(validationCode: string, validationEmail?: string) => Promise<{codeValid: boolean | string; accountExists?: boolean}>`_ - A function that is used to validate a registration code. This function will be called when the user clicks the Next button on the Verify Code screen screen. -- **createPassword**: _`(password: string) => Promise`_ +- **createPassword**: _`(password: string) => Promise`_ - A function that is used to create a password. This function will be called when the user clicks the Next button on the Create Password screen. -- **setAccountDetails**: _`(details: AccountDetails) => Promise`_ +- **setAccountDetails**: _`(details: AccountDetails) => Promise`_ - A function that is used to set the account details. This function will be called when the user clicks the Next button on the Account Details screen. -- **completeRegistration**: _`(userData: any, validationCode: number | string, validationEmail: string) => Promise<{ email: string, organizationName: string }>`_ +- **completeRegistration**: _`(userData: object) => Promise<{ email: string, organizationName: string }>`_ - A function that is used to complete the registration. This function will be called when the user clicks the Next button on the final registration workflow screen. ## RouteConfig @@ -56,62 +60,69 @@ Type to represent the customizable route configuration of the authentication scr - The URL path for the Contact/Support screen ## ErrorContextProviderProps + The `ErrorContextProvider` manages the state of the error handling. It is a React Context Provider that is embedded into the entire authentication workflow. It is responsible for managing the state of the error handling and providing the necessary actions to the various screens. The `ErrorContextProviderProps` type is used to configure the `ErrorContextProvider`. ### Type Declaration -- **mode**: (default: "dialog") _`"dialog" | "message-box" | "none"`_ + +- **mode**: (default: "dialog") _`"dialog" | "message-box" | "none"`_ - The mode to use for displaying errors. If set to "dialog", errors will be displayed in a dialog. If set to "message-box", errors will be displayed in a message box. If set to "none", errors will not be displayed. -- **onClose**: (optional) _`() => void`_ +- **onClose**: (optional) _`() => void`_ - A function that is called when the error dialog is closed. -- **dialogConfig**: (optional) _`{ title?: string, dismissLabel?: string }`_ +- **dialogConfig**: (optional) _`{ title?: string, dismissLabel?: string }`_ - An optional object that is used to configure the error dialog. See [DialogConfig](#dialogconfig) for more information. -- **messageBoxConfig**: (optional) _`{ dismissible?: boolean, position?: "top" | "bottom", fontColor?: string, backgroundColor?: string, sx?: SxProps }`_ +- **messageBoxConfig**: (optional) _`{ dismissible?: boolean, position?: "top" | "bottom", fontColor?: string, backgroundColor?: string, sx?: SxProps }`_ - An optional object that is used to configure the error message box. See [MessageBoxConfig](#messageboxconfig) for more information. - + ## DialogConfig + Type to represent the customizable configuration of the error dialog. ### Type Declaration -- **title**: (optional) _`string`_ + +- **title**: (optional) _`string`_ - The title to display in the error dialog. -- **dismissLabel**: (optional) _`string`_ +- **dismissLabel**: (optional) _`string`_ - The label to display on the dismiss button in the error dialog. ## MessageBoxConfig + Type to represent the customizable configuration of the error message box. ### Type Declaration -- **dismissible**: (default: true) _`boolean`_ + +- **dismissible**: (default: true) _`boolean`_ - Determines if the error message box can be dismissed. -- **position**: (default: "top") _`"top" | "bottom"`_ +- **position**: (default: "top") _`"top" | "bottom"`_ - Determines if the error message box should be displayed at the top or bottom of the screen. -- **fontColor**: (default: "#ffffff") _`string`_ +- **fontColor**: (default: "#ffffff") _`string`_ - The font color to use for the error message box. -- **backgroundColor**: (default: theme.palette.error.main) _`string`_ +- **backgroundColor**: (default: theme.palette.error.main) _`string`_ - The background color to use for the error message box. ## Components -Exported components that can be used to customize the auth workflow. +Exported components that can be used to customize the auth workflow. + +- [BasicDialog](./components/basic-dialog.md) +- [ChangePasswordDialog](./components/change-password-dialog.md) +- [ErrorManager](./components/error-manager.md) +- [PasswordTextField](./components/password-text-field.md) +- [RegistrationWorkflow](./components/registration-workflow.md) +- [SetPassword](./components/set-password.md) +- [WorkflowCard](./components/workflow-card.md) -- [BasicDialog](./components/basic-dialog.md) -- [ChangePasswordDialog](./components/change-password-dialog.md) -- [ErrorManager](./components/error-manager.md) -- [PasswordTextField](./components/password-text-field.md) -- [RegistrationWorkflow](./components/registration-workflow.md) -- [SetPassword](./components/set-password.md) -- [WorkflowCard](./components/workflow-card.md) ## Screens -Exported screens that can be used to customize the auth workflow. - -- [AccountDetailsScreen](./screens/account-details.md) -- [ContactScreen](./screens/contact.md) -- [CreateAccountScreen](./screens/create-account.md) -- [CreatePasswordScreen](./screens/create-password.md) -- [EulaScreen](./screens/eula.md) -- [ForgotPasswordScreen](./screens/forgot-password.md) -- [LoginScreen](./screens/login.md) -- [ResetPasswordScreen](./screens/reset-password.md) -- [SuccessScreen](./screens/success.md) -- [VerifyCodeScreen](./screens/verify-code.md) \ No newline at end of file +Exported screens that can be used to customize the auth workflow. + +- [AccountDetailsScreen](./screens/account-details.md) +- [ContactScreen](./screens/contact.md) +- [CreateAccountScreen](./screens/create-account.md) +- [CreatePasswordScreen](./screens/create-password.md) +- [EulaScreen](./screens/eula.md) +- [ForgotPasswordScreen](./screens/forgot-password.md) +- [LoginScreen](./screens/login.md) +- [ResetPasswordScreen](./screens/reset-password.md) +- [SuccessScreen](./screens/success.md) +- [VerifyCodeScreen](./screens/verify-code.md) diff --git a/login-workflow/docs/migration-guide-3-4.md b/login-workflow/docs/migration-guide-3-4.md index 5b84486e..abb432ea 100644 --- a/login-workflow/docs/migration-guide-3-4.md +++ b/login-workflow/docs/migration-guide-3-4.md @@ -80,9 +80,7 @@ completeRegistration: async ( // after completeRegistration: async ( - userData: any, // TODO: this should be properly typed - validationCode: string | number, - validationEmail?: string + userData: object, ): Promise<{ email: string; organizationName: string }> => { ... }, diff --git a/login-workflow/docs/registration-workflow.md b/login-workflow/docs/registration-workflow.md index cd320f56..1581e095 100644 --- a/login-workflow/docs/registration-workflow.md +++ b/login-workflow/docs/registration-workflow.md @@ -7,6 +7,7 @@ The registration workflow includes screens related to user sign-up / registratio The screens in this workflow access shared data / configuration / API definitions through a `RegistrationContextProvider` which should wrap all of the relevant routes / screens. You must supply the `AuthContextProvider` with the following props / data: + - `actions`: defines the API calls / functions to execute when certain actions are performed in the UI (such as submitting the password form) - `language`: configures the language displayed on the screens - `navigate`: a function that can be called to navigate to a new route @@ -24,7 +25,7 @@ The example project includes a skeleton implementation of all required functions - This file will handle the implementation of the registration related actions (such as create password, verify code, and create account). - You can copy this file directly from the [example](../example/src/actions/RegistrationUIActions.tsx) project as a starting point and then update the implementation details if you choose. 2. You might also want to copy over the `example/src/store` and `example/src/constants` folders, which provide a very basic mechanism for storing important data using LocalStorage - - You will want to switch this out for a more secure approach before going to production with your application. + - You will want to switch this out for a more secure approach before going to production with your application. ## Example Usage @@ -37,12 +38,7 @@ The Registration Workflow is made available as a single-page, multi-step compone {/* Wrap all routes in a single shared RegistrationContextProvider */} + } @@ -61,37 +57,36 @@ For a detailed explanation of setting up routes, see the [Routing](./routing.md) ### RegistrationContextProviderProps - - -| Prop Name | Type | Description | Default | -|---|---|---|---| -| actions* | `RegistrationUIActions` | An object of functions that are used to manage the authentication workflow. See [RegistrationUIActions](#registrationuiactions) for more information | | -| language* | `string` | The language code specifying which language to use for the UI | `'en'` | -| navigate* | `(url: string) => void` | A function that is used to navigate to a new URL. This is used to navigate to the various screens of the workflow. | | -| routeConfig* | `RouteConfig` | An object that defines the various routes for the workflow. See [RouteConfig](#routeconfig) for more information. | | -| i18n | `i18n` | An optional i18n object that is used to translate the UI. This is only needed if you want to use custom translation keys / languages inside any of the workflow screens | | -| errorConfig | `ErrorContextProviderProps` | An object that is used to configure error handling within the workflow. See [Error Management](./error-management.md) for more information. | | +| Prop Name | Type | Description | Default | +| ------------- | --------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------- | +| actions\* | `RegistrationUIActions` | An object of functions that are used to manage the authentication workflow. See [RegistrationUIActions](#registrationuiactions) for more information | | +| language\* | `string` | The language code specifying which language to use for the UI | `'en'` | +| navigate\* | `(url: string) => void` | A function that is used to navigate to a new URL. This is used to navigate to the various screens of the workflow. | | +| routeConfig\* | `RouteConfig` | An object that defines the various routes for the workflow. See [RouteConfig](#routeconfig) for more information. | | +| i18n | `i18n` | An optional i18n object that is used to translate the UI. This is only needed if you want to use custom translation keys / languages inside any of the workflow screens | | +| errorConfig | `ErrorContextProviderProps` | An object that is used to configure error handling within the workflow. See [Error Management](./error-management.md) for more information. | | ### RegistrationUIActions -| Prop Name | Type | Description | Default | -|---|---|---|---| -| loadEula | `(language: string) => Promise` | A function that is used to load the Eula content. This function will be called when the Eula screen is loaded. | | -| acceptEula | `() => Promise` | A function that is called when the user has accepted the Eula and hit the Next button. | | -| requestRegistrationCode | `(email: string) => Promise` | A function that is used to request a registration code. This function will be called when the user clicks the Next button on the Create Account screen or Resend button on Verify Code screen. | | -| validateUserRegistrationRequest | `(validationCode: string, validationEmail?: string) => Promise<{codeValid: boolean | string; accountExists?: boolean}>` | A function that is used to verify registration code. This function will be called when the user clicks the Next button on the Verify Code screen. | | -| createPassword | `(password: string) => Promise` | A function that is used to create password. This function will be called when the user clicks the Next button on the Create Password screen. | | -| setAccountDetails | `(details: { firstName: string; lastName: string; extra?: { [key: string]: boolean \| string \| number }}) => Promise` | A function that is used to set account details. This function will be called when the user clicks the Next button on the Account Details screen. | | -| completeRegistration | `(userData: any, validationCode: number \| string, validationEmail: string) => Promise<{ email: string; organizationName: string }>` | A function that is used to complete the registration workflow. This function will be called when the user clicks the Next button on the last registration workflow screen. | | +| Prop Name | Type | Description | Default | +| ------------------------------- | ------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | --- | +| loadEula | `(language: string) => Promise` | A function that is used to load the Eula content. This function will be called when the Eula screen is loaded. | | +| acceptEula | `() => Promise` | A function that is called when the user has accepted the Eula and hit the Next button. | | +| requestRegistrationCode | `(email: string) => Promise` | A function that is used to request a registration code. This function will be called when the user clicks the Next button on the Create Account screen or Resend button on Verify Code screen. | | +| validateUserRegistrationRequest | `(validationCode: string, validationEmail?: string) => Promise<{codeValid: boolean | string; accountExists?: boolean}>` | A function that is used to verify registration code. This function will be called when the user clicks the Next button on the Verify Code screen. | | +| createPassword | `(password: string) => Promise` | A function that is used to create password. This function will be called when the user clicks the Next button on the Create Password screen. | | +| setAccountDetails | `(details: { firstName: string; lastName: string; extra?: { [key: string]: boolean \| string \| number }}) => Promise` | A function that is used to set account details. This function will be called when the user clicks the Next button on the Account Details screen. | | +| completeRegistration | `(userData: object) => Promise<{ email: string; organizationName: string }>` | A function that is used to complete the registration workflow. This function will be called when the user clicks the Next button on the last registration workflow screen. | | ### RouteConfig + The RouteConfig is an object that specifies the paths you are using for the routes / screens in your application to facilitate navigating between screens within the workflows. -| Key | Type | Description | Default | -|---|---|---|---| -| LOGIN | `string` | The URL path for the Login screen | | -| FORGOT_PASSWORD | `string` | The URL path for the Forgot Password screen | | -| RESET_PASSWORD | `string` | The URL path for the Reset Password screen | | -| REGISTER_INVITE | `string` | The URL path for the invitation-based registration workflow | | -| REGISTER_SELF | `string` | The URL path for the self-registration workflow | | -| SUPPORT | `string` | The URL path for the Contact/Support screen | | +| Key | Type | Description | Default | +| --------------- | -------- | ----------------------------------------------------------- | ------- | +| LOGIN | `string` | The URL path for the Login screen | | +| FORGOT_PASSWORD | `string` | The URL path for the Forgot Password screen | | +| RESET_PASSWORD | `string` | The URL path for the Reset Password screen | | +| REGISTER_INVITE | `string` | The URL path for the invitation-based registration workflow | | +| REGISTER_SELF | `string` | The URL path for the self-registration workflow | | +| SUPPORT | `string` | The URL path for the Contact/Support screen | | diff --git a/login-workflow/example-vite/src/actions/RegistrationUIActions.tsx b/login-workflow/example-vite/src/actions/RegistrationUIActions.tsx index 200b593b..87454cb4 100644 --- a/login-workflow/example-vite/src/actions/RegistrationUIActions.tsx +++ b/login-workflow/example-vite/src/actions/RegistrationUIActions.tsx @@ -92,10 +92,7 @@ export const ProjectRegistrationUIActions: () => RegistrationUIActions = () => ( * @returns Resolves when the code is valid. True if registration is complete, False if account information is needed. * If the code is not valid a rejection will occur with an error message. */ - validateUserRegistrationRequest: async ( - validationCode: string, - validationEmail?: string - ): Promise<{ codeValid: boolean | string; accountExists?: boolean }> => { + validateUserRegistrationRequest: async (): Promise<{ codeValid: boolean | string; accountExists?: boolean }> => { await sleep(800); if (isRandomFailure()) { From 393fd9f6607c5d542b07f794f3c5334750194e1f Mon Sep 17 00:00:00 2001 From: priyankakmEaton Date: Mon, 22 Apr 2024 15:48:09 +0530 Subject: [PATCH 63/87] adding emptyState props --- .../ChangePasswordDialog.tsx | 8 ++-- .../ExistingAccountSuccessScreen.tsx | 15 ++++--- .../ForgotPasswordScreen.tsx | 37 +++++++++------- .../RegistrationSuccessScreen.tsx | 43 ++++++++++--------- .../ResetPasswordScreen.tsx | 8 ++-- .../SuccessScreen/SuccessScreenBase.tsx | 29 +++++-------- .../src/screens/SuccessScreen/types.ts | 15 ++----- 7 files changed, 76 insertions(+), 79 deletions(-) diff --git a/login-workflow/src/components/ChangePasswordDialog/ChangePasswordDialog.tsx b/login-workflow/src/components/ChangePasswordDialog/ChangePasswordDialog.tsx index c5a95da6..365435d8 100644 --- a/login-workflow/src/components/ChangePasswordDialog/ChangePasswordDialog.tsx +++ b/login-workflow/src/components/ChangePasswordDialog/ChangePasswordDialog.tsx @@ -161,9 +161,11 @@ export const ChangePasswordDialog: React.FC = (props) slots={slots} slotProps={{ SuccessScreen: { - icon: , - messageTitle: t('bluiAuth:PASSWORD_RESET.SUCCESS_MESSAGE'), - message: t('bluiAuth:CHANGE_PASSWORD.SUCCESS_MESSAGE'), + EmptyStateProps: { + icon: , + title: t('bluiAuth:PASSWORD_RESET.SUCCESS_MESSAGE'), + description: t('bluiAuth:CHANGE_PASSWORD.SUCCESS_MESSAGE'), + }, onDismiss: (): void => { onFinish?.(); }, diff --git a/login-workflow/src/screens/ExistingAccountSuccessScreen/ExistingAccountSuccessScreen.tsx b/login-workflow/src/screens/ExistingAccountSuccessScreen/ExistingAccountSuccessScreen.tsx index af89ba2b..45776143 100644 --- a/login-workflow/src/screens/ExistingAccountSuccessScreen/ExistingAccountSuccessScreen.tsx +++ b/login-workflow/src/screens/ExistingAccountSuccessScreen/ExistingAccountSuccessScreen.tsx @@ -22,13 +22,11 @@ export const ExistingAccountSuccessScreen: React.FC = (props const { navigate, routeConfig } = useRegistrationContext(); const { - icon = , - messageTitle = t('bluiCommon:MESSAGES.WELCOME'), - message = t('bluiRegistration:REGISTRATION.SUCCESS_EXISTING'), canDismiss = true, onDismiss = (): void => navigate(routeConfig.LOGIN as string), WorkflowCardHeaderProps, WorkflowCardActionsProps, + EmptyStateProps, ...otherExistingAccountSuccessScreenProps } = props; @@ -49,13 +47,18 @@ export const ExistingAccountSuccessScreen: React.FC = (props }, }; + const emptyStateProps = { + icon: , + title: t('bluiCommon:MESSAGES.WELCOME'), + description: t('bluiRegistration:REGISTRATION.SUCCESS_EXISTING'), + ...EmptyStateProps, + }; + return ( ); diff --git a/login-workflow/src/screens/ForgotPasswordScreen/ForgotPasswordScreen.tsx b/login-workflow/src/screens/ForgotPasswordScreen/ForgotPasswordScreen.tsx index add83a7f..410963a6 100644 --- a/login-workflow/src/screens/ForgotPasswordScreen/ForgotPasswordScreen.tsx +++ b/login-workflow/src/screens/ForgotPasswordScreen/ForgotPasswordScreen.tsx @@ -148,22 +148,27 @@ export const ForgotPasswordScreen: React.FC = (props) slots={slots} slotProps={{ SuccessScreen: { - icon: , - messageTitle: t('bluiCommon:MESSAGES.EMAIL_SENT'), - message: ( - - - Link has been sent to {emailInput}. - - - ), + EmptyStateProps: { + icon: , + title: t('bluiCommon:MESSAGES.EMAIL_SENT'), + description: ( + + + Link has been sent to {emailInput}. + + + ), + }, WorkflowCardHeaderProps: { title: t('bluiAuth:HEADER.FORGOT_PASSWORD'), }, diff --git a/login-workflow/src/screens/RegistrationSuccessScreen/RegistrationSuccessScreen.tsx b/login-workflow/src/screens/RegistrationSuccessScreen/RegistrationSuccessScreen.tsx index edcff8c6..66fc0869 100644 --- a/login-workflow/src/screens/RegistrationSuccessScreen/RegistrationSuccessScreen.tsx +++ b/login-workflow/src/screens/RegistrationSuccessScreen/RegistrationSuccessScreen.tsx @@ -33,27 +33,11 @@ export const RegistrationSuccessScreen: React.FC = (props) = } = useRegistrationWorkflowContext(); const { - icon = , - messageTitle = `${t('bluiCommon:MESSAGES.WELCOME')}, ${firstName} ${lastName}!`, - message = ( - - - Your account has successfully been created with the email {email} belonging to the - {` ${String(organization)}`} org. - - - ), onDismiss = (): void => navigate(routeConfig.LOGIN as string), canDismiss = true, WorkflowCardHeaderProps, WorkflowCardActionsProps, + EmptyStateProps, ...otherRegistrationSuccessScreenProps } = props; @@ -74,13 +58,32 @@ export const RegistrationSuccessScreen: React.FC = (props) = }, }; + const emptyStateProps = { + icon: , + title: `${t('bluiCommon:MESSAGES.WELCOME')}, ${firstName} ${lastName}!`, + description: ( + + + Your account has successfully been created with the email {email} belonging to the + {` ${String(organization)}`} org. + + + ), + ...EmptyStateProps, + }; + return ( ); diff --git a/login-workflow/src/screens/ResetPasswordScreen/ResetPasswordScreen.tsx b/login-workflow/src/screens/ResetPasswordScreen/ResetPasswordScreen.tsx index 8c090682..8298accf 100644 --- a/login-workflow/src/screens/ResetPasswordScreen/ResetPasswordScreen.tsx +++ b/login-workflow/src/screens/ResetPasswordScreen/ResetPasswordScreen.tsx @@ -181,9 +181,11 @@ export const ResetPasswordScreen: React.FC = (props) = slots={slots} slotProps={{ SuccessScreen: { - icon: , - messageTitle: t('bluiAuth:PASSWORD_RESET.SUCCESS_MESSAGE'), - message: t('bluiAuth:CHANGE_PASSWORD.SUCCESS_MESSAGE'), + EmptyStateProps: { + icon: , + title: t('bluiAuth:PASSWORD_RESET.SUCCESS_MESSAGE'), + description: t('bluiAuth:CHANGE_PASSWORD.SUCCESS_MESSAGE'), + }, WorkflowCardActionsProps: { showPrevious: false, fullWidthButton: true, diff --git a/login-workflow/src/screens/SuccessScreen/SuccessScreenBase.tsx b/login-workflow/src/screens/SuccessScreen/SuccessScreenBase.tsx index 4b8a1934..a2a7108b 100644 --- a/login-workflow/src/screens/SuccessScreen/SuccessScreenBase.tsx +++ b/login-workflow/src/screens/SuccessScreen/SuccessScreenBase.tsx @@ -28,15 +28,7 @@ import Box from '@mui/material/Box'; */ export const SuccessScreenBase: React.FC = (props) => { - const { - icon, - messageTitle = '', - message = '', - dismissButtonLabel = '', - canDismiss, - onDismiss, - ...emptyStateProps - } = props; + const { EmptyStateProps, dismissButtonLabel = '', canDismiss, onDismiss } = props; const cardBaseProps = props.WorkflowCardBaseProps || {}; const headerProps = props.WorkflowCardHeaderProps || {}; @@ -60,16 +52,15 @@ export const SuccessScreenBase: React.FC = (props) => { }, ]} > - + {EmptyStateProps && ( + + )} Date: Mon, 22 Apr 2024 15:55:14 +0530 Subject: [PATCH 64/87] adding emptyStateprops --- login-workflow/src/screens/SuccessScreen/types.ts | 1 - 1 file changed, 1 deletion(-) diff --git a/login-workflow/src/screens/SuccessScreen/types.ts b/login-workflow/src/screens/SuccessScreen/types.ts index e7470f33..56e8f93e 100644 --- a/login-workflow/src/screens/SuccessScreen/types.ts +++ b/login-workflow/src/screens/SuccessScreen/types.ts @@ -1,4 +1,3 @@ -import { ReactNode } from 'react'; import { ErrorManagerProps } from '../../components/Error'; import { WorkflowCardProps } from '../../components/WorkflowCard/WorkflowCard.types'; import { EmptyStateProps } from '@brightlayer-ui/react-components'; From 8cbece5d0746c0a1eff5c209fc090b9939c33fc0 Mon Sep 17 00:00:00 2001 From: priyankakmEaton Date: Mon, 22 Apr 2024 17:42:42 +0530 Subject: [PATCH 65/87] update docs --- login-workflow/docs/customization.md | 39 ++++++++++--------- login-workflow/docs/screens/success.md | 15 +++---- .../src/screens/SuccessScreen/types.ts | 2 +- 3 files changed, 28 insertions(+), 28 deletions(-) diff --git a/login-workflow/docs/customization.md b/login-workflow/docs/customization.md index eb224f79..83309f11 100644 --- a/login-workflow/docs/customization.md +++ b/login-workflow/docs/customization.md @@ -6,7 +6,6 @@ These workflows are designed to work out of the box without any additional confi All of the screens in the workflow support various levels of customization. Refer to the [Screens](./screens/README.md) documentation for specific options available on each screen. - ## Customizing Registration Workflow The Registration is provided as a single component that will provide the default behavior without requiring any configuration or props. @@ -22,7 +21,7 @@ If you wish to customize any aspects of the workflow screens, you will need to p - + @@ -31,15 +30,15 @@ If you wish to customize any aspects of the workflow screens, you will need to p ### Customizing the Screen Order When passing children to the `RegistrationWorkflow` component, you can easily adjust the order of screens by simply placing them in the order you wish for them to appear. - + ```tsx {/* Create Account screen will now come before the Eula screen */} - - - - + + + + ``` @@ -47,7 +46,7 @@ When passing children to the `RegistrationWorkflow` component, you can easily ad If you want to skip a particular screen in the workflow, simply omit it in the list of children. Likewise, if you wish to add your own custom screens into the workflow, you simply pass them as another child element. -When passing custom children, it is important to match the look and feel of the other steps in the workflow. In order to support this, we provide several WorkflowCard components that you can use to create your custom screens. For more information on how to use these components, refer to our [WorkflowCard](./components/workflow-card.md) component documentation. +When passing custom children, it is important to match the look and feel of the other steps in the workflow. In order to support this, we provide several WorkflowCard components that you can use to create your custom screens. For more information on how to use these components, refer to our [WorkflowCard](./components/workflow-card.md) component documentation. Your custom implementation, removing the EulaScreen and VerifyCodeScreen, and adding a custom screen, might look like this: @@ -65,26 +64,28 @@ Your custom implementation, removing the EulaScreen and VerifyCodeScreen, and ad ``` ### Customizing the Success Screen + You may provide a custom success screen to be shown upon successful completion of the [Registration Workflow](./components/registration-workflow.md). The [Success Screen](./screens/success.md) is used by default, but may be customized via props. If you wish to build your own success screen it may look something like this: ```jsx import { SuccessScreenBase } from '@brightlayer-ui/react-auth-workflow'; const MyCustomSuccessScreen = () => { - return ( - - ); + return ( + + ); }; -} /> +} />; ``` A similar prop exists for `existingAccountSuccessScreen` which will be used if the account being registered already exists. - ## Customizing the Language Support For information about supporting multiple languages and customizing the translations, refer to our [Language Support](./language-support.md) guidelines. @@ -94,7 +95,9 @@ For information about supporting multiple languages and customizing the translat For information about handling errors in your application, refer to our [Error Management](./error-management.md) documentation. ## Components -For more details on customizing our components, refer to our [Components](./components/README.md) documentation. + +For more details on customizing our components, refer to our [Components](./components/README.md) documentation. ## Screens -For more details on customizing our screens, refer to our [Screens](./screens/README.md) documentation. \ No newline at end of file + +For more details on customizing our screens, refer to our [Screens](./screens/README.md) documentation. diff --git a/login-workflow/docs/screens/success.md b/login-workflow/docs/screens/success.md index 9b27ceb4..279c26ea 100644 --- a/login-workflow/docs/screens/success.md +++ b/login-workflow/docs/screens/success.md @@ -16,14 +16,11 @@ import { SuccessScreenBase } from '@brightlayer-ui/react-auth-workflow'; ## API -| Prop Name | Type | Description | Default | -|---|---|---|---| -| icon | `React.ReactNode` | The icon to be displayed on the screen. | | -| messageTitle | `string` | The title of the success message. | | -| message | `ReactNode` | The success message to be displayed on the screen. | | -| dismissButtonLabel | `string` | The label of the dismiss button. | | -| canDismiss | `boolean` | A boolean determining if the screen can be dismissed. | | -| onDismiss | `() => void` | A function to be called when the screen is dismissed. | | +| Prop Name | Type | Description | Default | +| ------------------ | ----------------- | ----------------------------------------------------------------------------------- | ------- | +| dismissButtonLabel | `string` | The label of the dismiss button. | | +| canDismiss | `boolean` | A boolean determining if the screen can be dismissed. | | +| EmptyStateProps | `EmptyStateProps` | EmptyStateProps, which include properties such as icon, title, and description etc. | | +| onDismiss | `() => void` | A function to be called when the screen is dismissed. | | This screen also extends the `WorkflowCardProps` type for updating the title, instructions, buttons, etc. See [Workflow Card](../components/workflow-card.md) for more details. - \ No newline at end of file diff --git a/login-workflow/src/screens/SuccessScreen/types.ts b/login-workflow/src/screens/SuccessScreen/types.ts index 56e8f93e..7d0a7ad9 100644 --- a/login-workflow/src/screens/SuccessScreen/types.ts +++ b/login-workflow/src/screens/SuccessScreen/types.ts @@ -4,7 +4,7 @@ import { EmptyStateProps } from '@brightlayer-ui/react-components'; export type SuccessScreenProps = WorkflowCardProps & { /** - * To pass EmptyStateProps i.e icon, title, description... etc + * EmptyStateProps, which include properties such as icon, title, and description etc. */ EmptyStateProps?: EmptyStateProps; From b5918e4110f6298250cffe95433ee3c6a33ad85d Mon Sep 17 00:00:00 2001 From: priyankakmEaton Date: Tue, 23 Apr 2024 12:58:04 +0530 Subject: [PATCH 66/87] update js docs --- .../ChangePasswordDialog.tsx | 16 +---------- .../ChangePasswordDialogBase.tsx | 17 +----------- .../src/components/Dialog/BasicDialog.tsx | 20 ++++++-------- .../PasswordRequirements.tsx | 3 +-- .../PasswordRequirementsCheck.tsx | 3 +-- .../RegistrationWorkflow.tsx | 19 ++++++------- .../components/SetPassword/SetPassword.tsx | 13 +-------- .../src/components/Spinner/Spinner.tsx | 2 +- .../components/WorkflowCard/WorkflowCard.tsx | 17 ++++++------ .../WorkflowCard/WorkflowCardActions.tsx | 27 ++++++------------- .../WorkflowCard/WorkflowCardInstructions.tsx | 3 +-- .../AccountDetailsScreen.tsx | 14 +--------- .../AccountDetailsScreenBase.tsx | 14 +--------- 13 files changed, 41 insertions(+), 127 deletions(-) diff --git a/login-workflow/src/components/ChangePasswordDialog/ChangePasswordDialog.tsx b/login-workflow/src/components/ChangePasswordDialog/ChangePasswordDialog.tsx index c5a95da6..84cfda08 100644 --- a/login-workflow/src/components/ChangePasswordDialog/ChangePasswordDialog.tsx +++ b/login-workflow/src/components/ChangePasswordDialog/ChangePasswordDialog.tsx @@ -10,21 +10,7 @@ import { useTranslation } from 'react-i18next'; * Component that renders a dialog with textField to enter current password and a change password form with a new password and confirm password inputs. * It includes callbacks so you can respond to changes in the inputs. * - * @param dialogTitle title to display in the dialog - * @param dialogDescription description to display in the dialog - * @param currentPasswordLabel label to display for the current password field - * @param previousLabel label to display for the previous button - * @param nextLabel label to display for the next button - * @param currentPasswordChange called when the current password field changes - * @param enableButton boolean to enable and disable the button - * @param onFinish function called when the button is clicked on success screen - * @param onSubmit Callback function to call when the form is submitted - * @param onPrevious called when the previous button is clicked - * @param loading boolean that indicates whether the loading spinner should be displayed - * @param currentPasswordTextFieldProps props to pass to the current password field. - * @param showSuccessScreen boolean that determines whether to show the success screen or not - * @param slots used for ChangePasswordDialog SuccessScreen props - * @param slotProps props that will be passed to the SuccessScreen component + * @param {ChangePasswordDialogProps} props - props of changePassword dailog * * @category Component */ diff --git a/login-workflow/src/components/ChangePasswordDialog/ChangePasswordDialogBase.tsx b/login-workflow/src/components/ChangePasswordDialog/ChangePasswordDialogBase.tsx index 708a7664..8723227a 100644 --- a/login-workflow/src/components/ChangePasswordDialog/ChangePasswordDialogBase.tsx +++ b/login-workflow/src/components/ChangePasswordDialog/ChangePasswordDialogBase.tsx @@ -22,22 +22,7 @@ import { SuccessScreenBase, SuccessScreenProps } from '../../screens'; * Component that renders a dialog with textField to enter current password and a change password form with a new password and confirm password inputs. * It includes callbacks so you can respond to changes in the inputs. * - * @param dialogTitle title to display in the dialog - * @param dialogDescription description to display in the dialog - * @param currentPasswordLabel label to display for the current password field - * @param previousLabel label to display for the previous button - * @param nextLabel label to display for the next button - * @param currentPasswordChange called when the current password field changes - * @param enableButton boolean to enable and disable the button - * @param onFinish function called when the button is clicked on success screen - * @param onSubmit callback function to call when the form is submitted - * @param onPrevious called when the previous button is clicked - * @param sx styles passed to the underlying root component - * @param loading boolean that indicates whether the loading spinner should be displayed - * @param currentPasswordTextFieldProps props to pass to the current password field. - * @param showSuccessScreen boolean that determines whether to show the success screen or not - * @param slots used for ChangePasswordDialog SuccessScreen props - * @param slotProps props that will be passed to the SuccessScreen component + * @param {ChangePasswordDialogProps} props - props of changePassword dailog * * @category Component */ diff --git a/login-workflow/src/components/Dialog/BasicDialog.tsx b/login-workflow/src/components/Dialog/BasicDialog.tsx index 482a90eb..f7ce4fb5 100644 --- a/login-workflow/src/components/Dialog/BasicDialog.tsx +++ b/login-workflow/src/components/Dialog/BasicDialog.tsx @@ -6,18 +6,6 @@ import DialogTitle from '@mui/material/DialogTitle'; import DialogContent from '@mui/material/DialogContent'; import DialogActions from '@mui/material/DialogActions'; -/** - * Component that renders a basic dialog with a title, body description, and a close button. - * - * @param title to show text in the title - * @param body text to show in the body - * @param onClose function to call when the close button is clicked - * @param props all other props will be spread to the underlying Dialog component - * @param dismissButtonText text to show in the close button - * - * @category Component - */ - export type BasicDialogProps = Omit & { /** * The title for the screen @@ -47,6 +35,14 @@ export type BasicDialogProps = Omit & { open?: boolean; }; +/** + * Component that renders a basic dialog with a title, body description, and a close button. + * + * @param {BasicDialogProps} props - basic props of Dialog + * + * @category Component + */ + export const BasicDialog: React.FC>> = (props) => { const { title, body, dismissButtonText, open = false, sx, ...dialogProps } = props; diff --git a/login-workflow/src/components/PasswordRequirements/PasswordRequirements.tsx b/login-workflow/src/components/PasswordRequirements/PasswordRequirements.tsx index a64f1eb6..ecf82a9b 100644 --- a/login-workflow/src/components/PasswordRequirements/PasswordRequirements.tsx +++ b/login-workflow/src/components/PasswordRequirements/PasswordRequirements.tsx @@ -20,8 +20,7 @@ export type PasswordRequirementsProps = BoxProps & { /** * Component that renders all of the password requirement line items with check indicators. * - * @param passwordText The string to conduct the complexity checks against - * @param passwordRequirements Optional requirements to set password + * @param {PasswordRequirementsProps} props - props of passwordRequirement component * * @category Component */ diff --git a/login-workflow/src/components/PasswordRequirements/PasswordRequirementsCheck.tsx b/login-workflow/src/components/PasswordRequirements/PasswordRequirementsCheck.tsx index da969c75..2a87aa51 100644 --- a/login-workflow/src/components/PasswordRequirements/PasswordRequirementsCheck.tsx +++ b/login-workflow/src/components/PasswordRequirements/PasswordRequirementsCheck.tsx @@ -18,8 +18,7 @@ export type PasswordRequirementsCheckProps = { /** * Component that renders an individual password complexity line item with check indicator. * - * @param isChecked True if the line item should have a blue check (false for gray) - * @param label text to display beside the check icon + * @param {PasswordRequirementsCheckProps} props - props of PasswordRequirementsCheck component * * @category Component */ diff --git a/login-workflow/src/components/RegistrationWorkflow/RegistrationWorkflow.tsx b/login-workflow/src/components/RegistrationWorkflow/RegistrationWorkflow.tsx index 93f9e2f6..17afbd2c 100644 --- a/login-workflow/src/components/RegistrationWorkflow/RegistrationWorkflow.tsx +++ b/login-workflow/src/components/RegistrationWorkflow/RegistrationWorkflow.tsx @@ -13,17 +13,6 @@ import { parseQueryString } from '../../utils'; import { useErrorManager } from '../../contexts/ErrorContext/useErrorManager'; import ErrorManager, { ErrorManagerProps } from '../Error/ErrorManager'; -/** - * Component that contain the registration workflow and index of screens. - * - * @param initialScreenIndex initial screen index to start the registration workflow from - * @param successScreen success screen to display upon successful registration - * @param isInviteRegistration boolean when true verifies validateUserRegistrationRequest for verifyCode - * @param existingAccountSuccessScreen component that displays the success screen - * - * @category Component - */ - export type RegistrationWorkflowProps = { /** * The initial screen index to start the registration workflow from @@ -53,6 +42,14 @@ export type RegistrationWorkflowProps = { errorDisplayConfig?: ErrorManagerProps; }; +/** + * Component that contain the registration workflow and index of screens. + * + * @param {RegistrationWorkflowProps} props - props of registrationworkflow component + * + * @category Component + */ + export const RegistrationWorkflow: React.FC> = (props) => { const { errorDisplayConfig: registrationWorkflowErrorConfig } = props; const [isAccountExist, setIsAccountExist] = useState(false); diff --git a/login-workflow/src/components/SetPassword/SetPassword.tsx b/login-workflow/src/components/SetPassword/SetPassword.tsx index e0d08b7d..4cc5f76a 100644 --- a/login-workflow/src/components/SetPassword/SetPassword.tsx +++ b/login-workflow/src/components/SetPassword/SetPassword.tsx @@ -8,18 +8,7 @@ import { PasswordRequirements } from '../PasswordRequirements'; * Component that renders a change password form with a new password and confirm password inputs. * It includes callbacks so you can respond to changes in the inputs. * - * @param onPasswordChange called when the new password or confirm new password fields value changes - * @param initialNewPasswordValue initial value for the new password field - * @param initialConfirmPasswordValue initial value for the confirm password field - * @param passwordRequirements requirements to set password - * @param newPasswordLabel label for the new password field (default = 'Password') - * @param confirmPasswordLabel label for the confirm password field (default = 'Confirm') - * @param passwordRef ref to forward to the password input. - * @param confirmRef ref to forward to the confirm password input. - * @param passwordNotMatchError text for showing message when passwords do not match. - * @param onSubmit function to call when the form is submitted - * @param passwordTextFieldProps props to pass to the password field. - * @param confirmPasswordTextFieldProps props to pass to the confirm password field. + * @param {SetPasswordProps} props - props of setPassword component * * @category Component */ diff --git a/login-workflow/src/components/Spinner/Spinner.tsx b/login-workflow/src/components/Spinner/Spinner.tsx index 7bd82f69..65132b8c 100644 --- a/login-workflow/src/components/Spinner/Spinner.tsx +++ b/login-workflow/src/components/Spinner/Spinner.tsx @@ -11,7 +11,7 @@ export type SpinnerProps = BoxProps & { /** * Component that renders a indeterminate circular progress spinner atop a semi-transparent white background. * - * @param visible True if the spinner should be displayed, false to render nothing + * @param {SpinnerProps} props - props of spinner component * * @category Component */ diff --git a/login-workflow/src/components/WorkflowCard/WorkflowCard.tsx b/login-workflow/src/components/WorkflowCard/WorkflowCard.tsx index 69cbab3e..20ab141c 100644 --- a/login-workflow/src/components/WorkflowCard/WorkflowCard.tsx +++ b/login-workflow/src/components/WorkflowCard/WorkflowCard.tsx @@ -7,15 +7,6 @@ import { WorkflowCardBaseProps } from './WorkflowCard.types'; import { getWorkflowCardUtilityClass, WorkflowCardClassKey } from './Utility'; import { unstable_composeClasses as composeClasses } from '@mui/base'; -/** - * Component that renders the workflow card that is used for all screen components. - * - * @param loading boolean value for isLoading - * @param backgroundImage to display card background - * - * @category Component - */ - const useUtilityClasses = (ownerState: WorkflowCardBaseProps): Record => { const { classes } = ownerState; @@ -27,6 +18,14 @@ const useUtilityClasses = (ownerState: WorkflowCardBaseProps): Record = (props) => { const { loading, backgroundImage, sx, children, ...otherBoxProps } = props; const defaultClasses = useUtilityClasses(props); diff --git a/login-workflow/src/components/WorkflowCard/WorkflowCardActions.tsx b/login-workflow/src/components/WorkflowCard/WorkflowCardActions.tsx index 059d4bc1..f7af3846 100644 --- a/login-workflow/src/components/WorkflowCard/WorkflowCardActions.tsx +++ b/login-workflow/src/components/WorkflowCard/WorkflowCardActions.tsx @@ -8,25 +8,6 @@ import { unstable_composeClasses as composeClasses } from '@mui/base'; import Divider from '@mui/material/Divider'; import Box from '@mui/material/Box'; -/** - * Component that renders the workflow card action elements used for all screen components. - * - * @param divider boolean value to display a divider above workflow card action buttons - * @param canGoNext boolean or function that indicates whether the next button should be enabled - * @param canGoPrevious boolean or function that indicates whether the previous button should be enabled - * @param showPrevious boolean that indicates whether the previous button should be displayed - * @param showNext boolean that indicates whether the next button should be displayed - * @param previousLabel label to display for the previous button - * @param nextLabel label to display for the next button - * @param onPrevious function called when the previous button is clicked - * @param onNext function that is called when the next button is clicked - * @param currentStep current step in the registration workflow - * @param totalSteps total number of steps in the registration workflow - * @param fullWidthButton boolean that indicates whether a button should be full width - * - * @category Component - */ - const useUtilityClasses = (ownerState: WorkflowCardActionsProps): Record => { const { classes } = ownerState; @@ -40,6 +21,14 @@ const useUtilityClasses = (ownerState: WorkflowCardActionsProps): Record = (props) => { const { divider = true, diff --git a/login-workflow/src/components/WorkflowCard/WorkflowCardInstructions.tsx b/login-workflow/src/components/WorkflowCard/WorkflowCardInstructions.tsx index 195d1966..fc859ac7 100644 --- a/login-workflow/src/components/WorkflowCard/WorkflowCardInstructions.tsx +++ b/login-workflow/src/components/WorkflowCard/WorkflowCardInstructions.tsx @@ -6,8 +6,7 @@ import { WorkflowCardInstructionProps } from './WorkflowCard.types'; /** * Component that renders the instructions content for the workflow card. * - * @param instructions text to display as instructions - * @param divider whether or not to show a divider below the instructions + * @param {WorkflowCardInstructionProps} props - props of workflowCardInstruction * * @category Component */ diff --git a/login-workflow/src/screens/AccountDetailsScreen/AccountDetailsScreen.tsx b/login-workflow/src/screens/AccountDetailsScreen/AccountDetailsScreen.tsx index b011c907..f2ebc02c 100644 --- a/login-workflow/src/screens/AccountDetailsScreen/AccountDetailsScreen.tsx +++ b/login-workflow/src/screens/AccountDetailsScreen/AccountDetailsScreen.tsx @@ -8,19 +8,7 @@ import { useTranslation } from 'react-i18next'; * Component renders a screen with account details information for support with the application. * Contact information is pulled from the context passed into the workflow. * - * @param firstNameLabel label for the first name text field - * @param initialFirstName initial value for the first name text field - * @param firstNameValidator function that validates the first name text field - * @param firstNameTextFieldProps props to pass to the first name field - * @param lastNameLabel label for the last name text field - * @param initialLastName initial value for the last name text field - * @param lastNameValidator function that validates the last name text field - * @param lastNameTextFieldProps props to pass to the last name field - * @param WorkflowCardBaseProps props that will be passed to the WorkflowCard component - * @param WorkflowCardHeaderProps props that will be passed to the WorkflowCardHeader component - * @param WorkflowCardInstructionProps props that will be passed to the WorkflowCardInstructions component - * @param WorkflowCardActionsProps props that will be passed to the WorkflowCardActions component - * @param errorDisplayConfig configuration for customizing how errors are displayed + * @param {AccountDetailsScreenProps} props - props of accountDetailsScreen * * @category Component */ diff --git a/login-workflow/src/screens/AccountDetailsScreen/AccountDetailsScreenBase.tsx b/login-workflow/src/screens/AccountDetailsScreen/AccountDetailsScreenBase.tsx index 6a431a86..6ca7b35f 100644 --- a/login-workflow/src/screens/AccountDetailsScreen/AccountDetailsScreenBase.tsx +++ b/login-workflow/src/screens/AccountDetailsScreen/AccountDetailsScreenBase.tsx @@ -14,19 +14,7 @@ import ErrorManager from '../../components/Error/ErrorManager'; * Component renders a screen with account details information for support with the application. * Contact information is pulled from the context passed into the workflow. * - * @param firstNameLabel label for the first name text field - * @param initialFirstName initial value for the first name text field - * @param firstNameValidator function that validates the first name text field - * @param firstNameTextFieldProps props to pass to the first name field - * @param lastNameLabel label for the last name text field - * @param initialLastName initial value for the last name text field - * @param lastNameValidator function that validates the last name text field - * @param lastNameTextFieldProps props to pass to the last name field - * @param WorkflowCardBaseProps props that will be passed to the WorkflowCard component - * @param WorkflowCardHeaderProps props that will be passed to the WorkflowCardHeader component - * @param WorkflowCardInstructionProps props that will be passed to the WorkflowCardInstructions component - * @param WorkflowCardActionsProps props that will be passed to the WorkflowCardActions component - * @param errorDisplayConfig configuration for customizing how errors are displayed + * @param {AccountDetailsScreenProps} props - props of accountDetailsScreen * * @category Component */ From 78c97417e1fb9fd9487cb652ef92f167e4b265e9 Mon Sep 17 00:00:00 2001 From: priyankakmEaton Date: Tue, 23 Apr 2024 15:08:26 +0530 Subject: [PATCH 67/87] update js docs --- .../components/Error/ErrorManager.test.tsx | 3 +- .../src/components/Error/ErrorManager.tsx | 80 +------------------ login-workflow/src/components/Error/types.ts | 64 +++++++++++++++ .../RegistrationWorkflow.tsx | 3 +- .../src/contexts/AuthContext/provider.tsx | 2 +- .../src/contexts/ErrorContext/types.ts | 2 +- .../contexts/ErrorContext/useErrorManager.tsx | 2 +- .../contexts/RegistrationContext/provider.tsx | 2 +- .../src/screens/AccountDetailsScreen/types.ts | 2 +- .../src/screens/CreateAccountScreen/types.ts | 2 +- .../src/screens/CreatePasswordScreen/types.ts | 2 +- .../src/screens/EulaScreen/types.ts | 2 +- .../src/screens/ForgotPasswordScreen/types.ts | 2 +- .../src/screens/LoginScreen/types.ts | 2 +- .../src/screens/ResetPasswordScreen/types.ts | 2 +- .../src/screens/SuccessScreen/types.ts | 2 +- .../src/screens/VerifyCodeScreen/types.ts | 2 +- 17 files changed, 84 insertions(+), 92 deletions(-) create mode 100644 login-workflow/src/components/Error/types.ts diff --git a/login-workflow/src/components/Error/ErrorManager.test.tsx b/login-workflow/src/components/Error/ErrorManager.test.tsx index dd26a1c7..b488c827 100644 --- a/login-workflow/src/components/Error/ErrorManager.test.tsx +++ b/login-workflow/src/components/Error/ErrorManager.test.tsx @@ -1,7 +1,8 @@ import React from 'react'; import '@testing-library/jest-dom'; import { render, cleanup, screen, RenderResult } from '@testing-library/react'; -import ErrorManager, { ErrorManagerProps } from './ErrorManager'; +import ErrorManager from './ErrorManager'; +import { ErrorManagerProps } from './types'; import { RegistrationContextProvider } from '../../contexts'; import { RegistrationWorkflow } from '../../components'; import { registrationContextProviderProps } from '../../testUtils'; diff --git a/login-workflow/src/components/Error/ErrorManager.tsx b/login-workflow/src/components/Error/ErrorManager.tsx index ebdf55c4..4b01b63e 100644 --- a/login-workflow/src/components/Error/ErrorManager.tsx +++ b/login-workflow/src/components/Error/ErrorManager.tsx @@ -1,87 +1,13 @@ import React, { useCallback } from 'react'; import { BasicDialog } from '../Dialog/BasicDialog'; import ErrorMessageBox from './ErrorMessageBox'; -import { SxProps, Theme } from '@mui/material/styles'; -import { TFunction, TOptions } from 'i18next'; - -export type AuthError = { - cause: { title: string; errorMessage: string; errorOptions?: TOptions; titleOptions?: TOptions }; -}; - -export type ErrorManagerProps = { - /** - * Determines whether to display a dialog, a message box, or neither - */ - mode?: 'dialog' | 'message-box' | 'none'; - - /** - * Title to display in message box and dialog - */ - title?: string; - - /** - * The function to call when the close/dismiss button is clicked - * @returns void - */ - onClose?: () => void; - - /** - * The error text to display - */ - error?: string; - - /** - * Interpolate string with a dynamic value to pass values using t function for message - */ - errorOptions?: TOptions; - - /** - * Interpolate string with a dynamic value to pass values using t function for title - */ - titleOptions?: TOptions; - - /** - * Translate function to translate error related text - */ - t?: TFunction; - - /** - * Configuration options when using mode='dialog' - * @param {string} dialogConfig.title - The title used in the dialog header - * @param {string} dialogConfig.dismissLabel - The label on the dismiss button in dialog mode. - */ - dialogConfig?: { - dismissLabel?: string; - title?: string; - sx?: SxProps; - }; - messageBoxConfig?: { - title?: string; - dismissible?: boolean; - position?: 'top' | 'bottom'; - fontColor?: string; - backgroundColor?: string; - sx?: SxProps; - }; - children?: React.ReactNode; -}; +import { ErrorManagerProps } from './types'; +import { TOptions } from 'i18next'; /** * Component that manages the display of error messages. Can be configured to display a dialog, a message box, or neither. * - * @param mode determines whether to display a dialog, a message box, or neither - * @param onClose function to call when the close/dismiss button is clicked - * @param error error text to display - * @param dialogConfig configuration for the error dialog - * @param dialogConfig.title text to show in the title of the dialog - * @param dialogConfig.dismissLabel text to show in the close button - * @param dialogConfig.sx sx styles passed to the underlying root(Dialog) component - * @param messageBoxConfig configuration for the error message box - * @param messageBoxConfig.dismissible whether the message box can be dismissed - * @param messageBoxConfig.position determines whether the message box should be displayed at the top or bottom of the screen - * @param messageBoxConfig.fontColor the font color of the text inside the message box - * @param messageBoxConfig.backgroundColor the background color of the message box - * @param messageBoxConfig.sx sx styles passed to the underlying root(Box) component + * @param {ErrorManagerProps} props - props of errorManager component * * @category Component */ diff --git a/login-workflow/src/components/Error/types.ts b/login-workflow/src/components/Error/types.ts new file mode 100644 index 00000000..cc709f8e --- /dev/null +++ b/login-workflow/src/components/Error/types.ts @@ -0,0 +1,64 @@ +import { SxProps, Theme } from '@mui/material/styles'; +import { TFunction, TOptions } from 'i18next'; + +export type AuthError = { + cause: { title: string; errorMessage: string; errorOptions?: TOptions; titleOptions?: TOptions }; +}; + +export type ErrorManagerProps = { + /** + * Determines whether to display a dialog, a message box, or neither + */ + mode?: 'dialog' | 'message-box' | 'none'; + + /** + * Title to display in message box and dialog + */ + title?: string; + + /** + * The function to call when the close/dismiss button is clicked + * @returns void + */ + onClose?: () => void; + + /** + * The error text to display + */ + error?: string; + + /** + * Interpolate string with a dynamic value to pass values using t function for message + */ + errorOptions?: TOptions; + + /** + * Interpolate string with a dynamic value to pass values using t function for title + */ + titleOptions?: TOptions; + + /** + * Translate function to translate error related text + */ + t?: TFunction; + + /** + * Configuration options when using mode='dialog' + * @param {string} dialogConfig.title - The title used in the dialog header + * @param {string} dialogConfig.dismissLabel - The label on the dismiss button in dialog mode. + */ + dialogConfig?: { + dismissLabel?: string; + title?: string; + sx?: SxProps; + }; + messageBoxConfig?: { + title?: string; + dismissible?: boolean; + position?: 'top' | 'bottom'; + fontColor?: string; + backgroundColor?: string; + sx?: SxProps; + }; + children?: React.ReactNode; +}; diff --git a/login-workflow/src/components/RegistrationWorkflow/RegistrationWorkflow.tsx b/login-workflow/src/components/RegistrationWorkflow/RegistrationWorkflow.tsx index 17afbd2c..736d1444 100644 --- a/login-workflow/src/components/RegistrationWorkflow/RegistrationWorkflow.tsx +++ b/login-workflow/src/components/RegistrationWorkflow/RegistrationWorkflow.tsx @@ -11,7 +11,8 @@ import { } from '../../screens'; import { parseQueryString } from '../../utils'; import { useErrorManager } from '../../contexts/ErrorContext/useErrorManager'; -import ErrorManager, { ErrorManagerProps } from '../Error/ErrorManager'; +import ErrorManager from '../Error/ErrorManager'; +import { ErrorManagerProps } from '../Error/types'; export type RegistrationWorkflowProps = { /** diff --git a/login-workflow/src/contexts/AuthContext/provider.tsx b/login-workflow/src/contexts/AuthContext/provider.tsx index dfa21e64..898f70e6 100644 --- a/login-workflow/src/contexts/AuthContext/provider.tsx +++ b/login-workflow/src/contexts/AuthContext/provider.tsx @@ -11,7 +11,7 @@ import { i18nAuthInstance } from './i18nAuthInstance'; import { ErrorContext } from '../ErrorContext'; import { AuthDictionaries } from './AuthDictionaries'; import { SharedDictionaries } from '../SharedDictionaries'; -import { ErrorManagerProps } from '../../components/Error'; +import { ErrorManagerProps } from '../../components/Error/types'; const AuthContextProviderContent: React.FC< React.PropsWithChildren & { PasswordDialog?: JSX.Element }> diff --git a/login-workflow/src/contexts/ErrorContext/types.ts b/login-workflow/src/contexts/ErrorContext/types.ts index 4df673e9..5369dbd9 100644 --- a/login-workflow/src/contexts/ErrorContext/types.ts +++ b/login-workflow/src/contexts/ErrorContext/types.ts @@ -3,6 +3,6 @@ * @module ErrorContext */ -import { ErrorManagerProps } from '../../components/Error/ErrorManager'; +import { ErrorManagerProps } from '../../components/Error/types'; export type ErrorContextProviderProps = Omit; diff --git a/login-workflow/src/contexts/ErrorContext/useErrorManager.tsx b/login-workflow/src/contexts/ErrorContext/useErrorManager.tsx index b53a8430..e559c26d 100644 --- a/login-workflow/src/contexts/ErrorContext/useErrorManager.tsx +++ b/login-workflow/src/contexts/ErrorContext/useErrorManager.tsx @@ -1,5 +1,5 @@ import { useState } from 'react'; -import { AuthError, ErrorManagerProps } from '../../components/Error'; +import { AuthError, ErrorManagerProps } from '../../components/Error/types'; import { useErrorContext } from '.'; export const useErrorManager = (): { diff --git a/login-workflow/src/contexts/RegistrationContext/provider.tsx b/login-workflow/src/contexts/RegistrationContext/provider.tsx index 11a45783..8d9a7e21 100644 --- a/login-workflow/src/contexts/RegistrationContext/provider.tsx +++ b/login-workflow/src/contexts/RegistrationContext/provider.tsx @@ -11,7 +11,7 @@ import { i18nRegistrationInstance } from './i18nRegistrationInstance'; import { ErrorContext } from '../ErrorContext'; import { SharedDictionaries } from '../SharedDictionaries'; import { RegistrationDictionaries } from './RegistrationDictionaries'; -import { ErrorManagerProps } from '../../components/Error'; +import { ErrorManagerProps } from '../../components/Error/types'; const RegistrationContextProviderContent: React.FC< React.PropsWithChildren> diff --git a/login-workflow/src/screens/AccountDetailsScreen/types.ts b/login-workflow/src/screens/AccountDetailsScreen/types.ts index 988b4314..9bc9fb39 100644 --- a/login-workflow/src/screens/AccountDetailsScreen/types.ts +++ b/login-workflow/src/screens/AccountDetailsScreen/types.ts @@ -1,6 +1,6 @@ import { BoxProps, TextFieldProps } from '@mui/material'; import { WorkflowCardProps } from '../../components/WorkflowCard/WorkflowCard.types'; -import { ErrorManagerProps } from '../../components/Error'; +import { ErrorManagerProps } from '../../components/Error/types'; export type AccountDetailsScreenProps = WorkflowCardProps & BoxProps & { diff --git a/login-workflow/src/screens/CreateAccountScreen/types.ts b/login-workflow/src/screens/CreateAccountScreen/types.ts index 6875c7e9..eaa0a505 100644 --- a/login-workflow/src/screens/CreateAccountScreen/types.ts +++ b/login-workflow/src/screens/CreateAccountScreen/types.ts @@ -1,6 +1,6 @@ import { TextFieldProps } from '@mui/material'; import { WorkflowCardProps } from '../../components/WorkflowCard/WorkflowCard.types'; -import { ErrorManagerProps } from '../../components/Error'; +import { ErrorManagerProps } from '../../components/Error/types'; export type CreateAccountScreenProps = WorkflowCardProps & { /** diff --git a/login-workflow/src/screens/CreatePasswordScreen/types.ts b/login-workflow/src/screens/CreatePasswordScreen/types.ts index 2adede0f..da6dc83f 100644 --- a/login-workflow/src/screens/CreatePasswordScreen/types.ts +++ b/login-workflow/src/screens/CreatePasswordScreen/types.ts @@ -1,5 +1,5 @@ import { SetPasswordProps } from '../../components'; -import { ErrorManagerProps } from '../../components/Error'; +import { ErrorManagerProps } from '../../components/Error/types'; import { WorkflowCardProps } from '../../components/WorkflowCard/WorkflowCard.types'; export type CreatePasswordScreenProps = WorkflowCardProps & { diff --git a/login-workflow/src/screens/EulaScreen/types.ts b/login-workflow/src/screens/EulaScreen/types.ts index bfb73c63..46bd6e08 100644 --- a/login-workflow/src/screens/EulaScreen/types.ts +++ b/login-workflow/src/screens/EulaScreen/types.ts @@ -1,6 +1,6 @@ import { CheckboxProps } from '@mui/material'; import { WorkflowCardProps } from '../../components/WorkflowCard/WorkflowCard.types'; -import { ErrorManagerProps } from '../../components/Error'; +import { ErrorManagerProps } from '../../components/Error/types'; export type EulaScreenProps = WorkflowCardProps & { /** diff --git a/login-workflow/src/screens/ForgotPasswordScreen/types.ts b/login-workflow/src/screens/ForgotPasswordScreen/types.ts index cf0274b6..2f031983 100644 --- a/login-workflow/src/screens/ForgotPasswordScreen/types.ts +++ b/login-workflow/src/screens/ForgotPasswordScreen/types.ts @@ -1,5 +1,5 @@ import { TextFieldProps } from '@mui/material'; -import { ErrorManagerProps } from '../../components/Error'; +import { ErrorManagerProps } from '../../components/Error/types'; import { WorkflowCardProps } from '../../components/WorkflowCard/WorkflowCard.types'; import { SuccessScreenProps } from '../SuccessScreen'; diff --git a/login-workflow/src/screens/LoginScreen/types.ts b/login-workflow/src/screens/LoginScreen/types.ts index 02f0fe48..8472a1b7 100644 --- a/login-workflow/src/screens/LoginScreen/types.ts +++ b/login-workflow/src/screens/LoginScreen/types.ts @@ -1,6 +1,6 @@ import { TextFieldProps } from '@mui/material'; import { WorkflowCardBaseProps } from '../../components/WorkflowCard/WorkflowCard.types'; -import { ErrorManagerProps } from '../../components/Error'; +import { ErrorManagerProps } from '../../components/Error/types'; export type LoginScreenProps = WorkflowCardBaseProps & { // configure fields diff --git a/login-workflow/src/screens/ResetPasswordScreen/types.ts b/login-workflow/src/screens/ResetPasswordScreen/types.ts index 48c89660..8a36502e 100644 --- a/login-workflow/src/screens/ResetPasswordScreen/types.ts +++ b/login-workflow/src/screens/ResetPasswordScreen/types.ts @@ -1,4 +1,4 @@ -import { ErrorManagerProps } from '../../components/Error'; +import { ErrorManagerProps } from '../../components/Error/types'; import { SetPasswordProps } from '../../components/SetPassword/types'; import { WorkflowCardProps } from '../../components/WorkflowCard/WorkflowCard.types'; import { SuccessScreenProps } from '../SuccessScreen'; diff --git a/login-workflow/src/screens/SuccessScreen/types.ts b/login-workflow/src/screens/SuccessScreen/types.ts index ee477c3a..3cfcf5a1 100644 --- a/login-workflow/src/screens/SuccessScreen/types.ts +++ b/login-workflow/src/screens/SuccessScreen/types.ts @@ -1,5 +1,5 @@ import { ReactNode } from 'react'; -import { ErrorManagerProps } from '../../components/Error'; +import { ErrorManagerProps } from '../../components/Error/types'; import { WorkflowCardProps } from '../../components/WorkflowCard/WorkflowCard.types'; export type SuccessScreenProps = WorkflowCardProps & { diff --git a/login-workflow/src/screens/VerifyCodeScreen/types.ts b/login-workflow/src/screens/VerifyCodeScreen/types.ts index c27f9154..2d2a9d37 100644 --- a/login-workflow/src/screens/VerifyCodeScreen/types.ts +++ b/login-workflow/src/screens/VerifyCodeScreen/types.ts @@ -1,5 +1,5 @@ import { TextFieldProps } from '@mui/material'; -import { ErrorManagerProps } from '../../components/Error'; +import { ErrorManagerProps } from '../../components/Error/types'; import { WorkflowCardProps } from '../../components/WorkflowCard/WorkflowCard.types'; export type VerifyCodeScreenProps = WorkflowCardProps & { From e6062943ea32c47361d4a7ea12d64ece2ea0dc1e Mon Sep 17 00:00:00 2001 From: priyankakmEaton Date: Tue, 23 Apr 2024 22:51:23 +0530 Subject: [PATCH 68/87] update js docs --- .../src/components/Error/ErrorMessageBox.tsx | 48 +--------- login-workflow/src/components/Error/types.ts | 92 +++++++++++++++++++ .../WorkflowCard/WorkflowCard.types.ts | 15 +++ 3 files changed, 109 insertions(+), 46 deletions(-) diff --git a/login-workflow/src/components/Error/ErrorMessageBox.tsx b/login-workflow/src/components/Error/ErrorMessageBox.tsx index 01b51be0..d75ec21d 100644 --- a/login-workflow/src/components/Error/ErrorMessageBox.tsx +++ b/login-workflow/src/components/Error/ErrorMessageBox.tsx @@ -1,57 +1,13 @@ import React from 'react'; import Box from '@mui/material/Box'; import Close from '@mui/icons-material/Close'; -import { SxProps, Theme } from '@mui/material/styles'; import Typography from '@mui/material/Typography'; - -export type ErrorMessageBoxProps = { - /** - * The text to show in the title - */ - title: string; - /** - * The text to show in the message - */ - errorMessage: string; - - /** - * The background color of the message box - */ - backgroundColor?: string; - - /** - * Boolean whether the message box can be dismissed - * @default true - */ - dismissible?: boolean; - - /** - * The font color of the text inside the message box - */ - fontColor?: string; - - /** - * The function to call when the close button is clicked - * @returns void - */ - onClose?: () => void; - - /** - * Styles passed to the underlying root component - */ - sx?: SxProps; -}; +import { ErrorMessageBoxProps } from './types'; /** * Component that renders a basic message box with an error message and a configurable dismiss button. * - * @param text to show as the title - * @param errorMessage text to show in the message - * @param backgroundColor the background color of the message box - * @param dismissible whether the message box can be dismissed - * @param fontColor the font color of the text inside the message box - * @param onClose function to call when the close button is clicked - * @param sx styles passed to the underlying root component + * @param {ErrorMessageBoxProps} props - props of errorMessageBox component * * @category Component */ diff --git a/login-workflow/src/components/Error/types.ts b/login-workflow/src/components/Error/types.ts index cc709f8e..b2a254c0 100644 --- a/login-workflow/src/components/Error/types.ts +++ b/login-workflow/src/components/Error/types.ts @@ -1,10 +1,17 @@ import { SxProps, Theme } from '@mui/material/styles'; import { TFunction, TOptions } from 'i18next'; +/** + * Props of AuthError + */ export type AuthError = { cause: { title: string; errorMessage: string; errorOptions?: TOptions; titleOptions?: TOptions }; }; +/** + * Props of ErrorManager Component that manages the display of error messages. + * + */ export type ErrorManagerProps = { /** * Determines whether to display a dialog, a message box, or neither @@ -48,17 +55,102 @@ export type ErrorManagerProps = { * @param {string} dialogConfig.dismissLabel - The label on the dismiss button in dialog mode. */ dialogConfig?: { + /** + * Label to show in the close button + * @default t('bluiCommon:ACTIONS.CLOSE') + */ dismissLabel?: string; + /** + * Text to show in the title of the dialog + * @default t('bluiCommon:MESSAGES.ERROR') + */ title?: string; + /** + * Style overrides object + * + */ sx?: SxProps; }; + + /** + * Configuration options when using mode='message-box' + */ messageBoxConfig?: { + /** + * The title used in the dialog header + * @default t('bluiCommon:MESSAGES.ERROR') + */ title?: string; + /** + * The label on the dismiss button + * @default true + */ dismissible?: boolean; + /** + * Determines whether the message box should be displayed before or after children elements + * @default 'top' + */ position?: 'top' | 'bottom'; + /** + * The font color of the text inside the message box. + * @default error.contrastText + */ fontColor?: string; + /** + * The background color of the message box + * @default error.main + */ backgroundColor?: string; + /** + * Apply style to message box + */ sx?: SxProps; }; + + /** + * Message box errors will appear before or after content passed as children + */ children?: React.ReactNode; }; + +/** + * Props of ErrorMessageBox to error messages. + * + */ +export type ErrorMessageBoxProps = { + /** + * The text to show in the title + */ + title: string; + /** + * The text to show in the message + */ + errorMessage: string; + + /** + * The background color of the message box + */ + backgroundColor?: string; + + /** + * Boolean whether the message box can be dismissed + * @default true + */ + dismissible?: boolean; + + /** + * The font color of the text inside the message box + */ + fontColor?: string; + + /** + * The function to call when the close button is clicked + * @returns void + */ + onClose?: () => void; + + /** + * Styles passed to the underlying root component + */ + sx?: SxProps; +}; diff --git a/login-workflow/src/components/WorkflowCard/WorkflowCard.types.ts b/login-workflow/src/components/WorkflowCard/WorkflowCard.types.ts index 51d5dc6d..7c4dc57e 100644 --- a/login-workflow/src/components/WorkflowCard/WorkflowCard.types.ts +++ b/login-workflow/src/components/WorkflowCard/WorkflowCard.types.ts @@ -103,9 +103,24 @@ export type WorkflowCardActionsProps = CardActionsProps & { fullWidthButton?: boolean; }; +/** + * Props for WorkflowCard component + */ export type WorkflowCardProps = { + /** + * Props for WorkflowCardBase component + */ WorkflowCardBaseProps?: WorkflowCardBaseProps; + /** + * Props for WorkflowCardHeader component + */ WorkflowCardHeaderProps?: WorkflowCardHeaderProps; + /** + * Props for WorkflowCardInstructions component + */ WorkflowCardInstructionProps?: WorkflowCardInstructionProps; + /** + * Props for WorkflowCardActions component + */ WorkflowCardActionsProps?: WorkflowCardActionsProps; }; From 6aad9da3d80005bd67abc3e0a82758d0dddf628d Mon Sep 17 00:00:00 2001 From: priyankakmEaton Date: Tue, 23 Apr 2024 23:32:52 +0530 Subject: [PATCH 69/87] update js docs --- .../RegistrationWorkflow.test.tsx | 3 +- .../RegistrationWorkflow.tsx | 30 +------------------ .../components/RegistrationWorkflow/types.ts | 30 +++++++++++++++++++ .../ContactScreen/ContactSupportScreen.tsx | 14 +-------- .../ContactSupportScreenBase.tsx | 30 ++++++------------- .../CreateAccountScreen.tsx | 10 +------ .../CreateAccountScreenBase.tsx | 10 +------ .../CreatePasswordScreen.tsx | 7 +---- .../CreatePasswordScreenBase.tsx | 7 +---- .../src/screens/EulaScreen/EulaScreen.tsx | 13 +------- .../src/screens/EulaScreen/EulaScreenBase.tsx | 13 +------- .../ExistingAccountSuccessScreen.tsx | 7 +---- 12 files changed, 50 insertions(+), 124 deletions(-) create mode 100644 login-workflow/src/components/RegistrationWorkflow/types.ts diff --git a/login-workflow/src/components/RegistrationWorkflow/RegistrationWorkflow.test.tsx b/login-workflow/src/components/RegistrationWorkflow/RegistrationWorkflow.test.tsx index 80a68509..8e34d819 100644 --- a/login-workflow/src/components/RegistrationWorkflow/RegistrationWorkflow.test.tsx +++ b/login-workflow/src/components/RegistrationWorkflow/RegistrationWorkflow.test.tsx @@ -1,7 +1,8 @@ import React from 'react'; import '@testing-library/jest-dom'; import { cleanup, fireEvent, render, screen, renderHook, act, RenderResult } from '@testing-library/react'; -import { RegistrationWorkflow, RegistrationWorkflowProps } from './RegistrationWorkflow'; +import { RegistrationWorkflow } from './RegistrationWorkflow'; +import { RegistrationWorkflowProps } from './types'; import Typography from '@mui/material/Typography'; import Button from '@mui/material/Button'; import { RegistrationContextProvider, useRegistrationWorkflowContext } from '../../contexts'; diff --git a/login-workflow/src/components/RegistrationWorkflow/RegistrationWorkflow.tsx b/login-workflow/src/components/RegistrationWorkflow/RegistrationWorkflow.tsx index 736d1444..160b3e4f 100644 --- a/login-workflow/src/components/RegistrationWorkflow/RegistrationWorkflow.tsx +++ b/login-workflow/src/components/RegistrationWorkflow/RegistrationWorkflow.tsx @@ -13,35 +13,7 @@ import { parseQueryString } from '../../utils'; import { useErrorManager } from '../../contexts/ErrorContext/useErrorManager'; import ErrorManager from '../Error/ErrorManager'; import { ErrorManagerProps } from '../Error/types'; - -export type RegistrationWorkflowProps = { - /** - * The initial screen index to start the registration workflow from - */ - initialScreenIndex?: number; - - /** - * The success screen to display upon successful registration - */ - successScreen?: JSX.Element; - - /** - * When true verifies validateUserRegistrationRequest for verifyCode and several of the default screens will be skipped - * not requiring user input for email and the validation code will be pulled from the url - * @default false - */ - isInviteRegistration?: boolean; - - /** - * Component to display for the success screen if the account already exists. - */ - existingAccountSuccessScreen?: JSX.Element; - - /** - * The configuration for customizing how errors are displayed - */ - errorDisplayConfig?: ErrorManagerProps; -}; +import { RegistrationWorkflowProps } from './types'; /** * Component that contain the registration workflow and index of screens. diff --git a/login-workflow/src/components/RegistrationWorkflow/types.ts b/login-workflow/src/components/RegistrationWorkflow/types.ts new file mode 100644 index 00000000..2b5a0b41 --- /dev/null +++ b/login-workflow/src/components/RegistrationWorkflow/types.ts @@ -0,0 +1,30 @@ +import { ErrorManagerProps } from '../Error/types'; + +export type RegistrationWorkflowProps = { + /** + * The initial screen index to start the registration workflow from + */ + initialScreenIndex?: number; + + /** + * The success screen to display upon successful registration + */ + successScreen?: JSX.Element; + + /** + * When true verifies validateUserRegistrationRequest for verifyCode and several of the default screens will be skipped + * not requiring user input for email and the validation code will be pulled from the url + * @default false + */ + isInviteRegistration?: boolean; + + /** + * Component to display for the success screen if the account already exists. + */ + existingAccountSuccessScreen?: JSX.Element; + + /** + * The configuration for customizing how errors are displayed + */ + errorDisplayConfig?: ErrorManagerProps; +}; diff --git a/login-workflow/src/screens/ContactScreen/ContactSupportScreen.tsx b/login-workflow/src/screens/ContactScreen/ContactSupportScreen.tsx index 48e1a2a1..9795229e 100644 --- a/login-workflow/src/screens/ContactScreen/ContactSupportScreen.tsx +++ b/login-workflow/src/screens/ContactScreen/ContactSupportScreen.tsx @@ -11,19 +11,7 @@ import { Typography } from '@mui/material'; * Component renders a screen with contact information for support with the application. * Contact information is pulled from the context passed into the workflow. * - * @param icon the icon to display in the header - * @param emailSupportTitle text to display as the contact support title - * @param emailSupportContent content to display as the contact support content - * @param phoneSupportTitle text to display as the phone support title - * @param phoneSupportContent content to display as the phone support content - * @param contactEmail to display the contact email - * @param contactPhone to display contact phone number - * @param dismissButtonLabel to display label for the button - * @param onDismiss function to call when user clicks button - * @param WorkflowCardBaseProps props that will be passed to the WorkflowCard component - * @param WorkflowCardHeaderProps props that will be passed to the WorkflowCardHeader component - * @param WorkflowCardInstructionProps props that will be passed to the WorkflowCardInstructions component - * @param WorkflowCardActionsProps props that will be passed to the WorkflowCardActions component + * @param {ContactSupportScreenProps} props - props of contactSupportScreen * * @category Component */ diff --git a/login-workflow/src/screens/ContactScreen/ContactSupportScreenBase.tsx b/login-workflow/src/screens/ContactScreen/ContactSupportScreenBase.tsx index ae302cdf..83beaddc 100644 --- a/login-workflow/src/screens/ContactScreen/ContactSupportScreenBase.tsx +++ b/login-workflow/src/screens/ContactScreen/ContactSupportScreenBase.tsx @@ -12,27 +12,6 @@ import Box, { BoxProps } from '@mui/material/Box'; import { ContactScreenClassKey, getContactScreenUtilityClass } from './utilityClasses'; import { unstable_composeClasses as composeClasses } from '@mui/base'; -/** - * Component renders a screen with contact information for support with the application. - * Contact information is pulled from the context passed into the workflow. - * - * @param icon the icon to display in the header - * @param emailSupportTitle text to display as the contact support title - * @param emailSupportContent content to display as the contact support content - * @param phoneSupportTitle text to display as the phone support title - * @param phoneSupportContent content to display as the phone support content - * @param contactEmail to display the contact email - * @param contactPhone to display contact phone number - * @param dismissButtonLabel to display label for the button - * @param onDismiss function to call when user clicks button - * @param WorkflowCardBaseProps props that will be passed to the WorkflowCard component - * @param WorkflowCardHeaderProps props that will be passed to the WorkflowCardHeader component - * @param WorkflowCardInstructionProps props that will be passed to the WorkflowCardInstructions component - * @param WorkflowCardActionsProps props that will be passed to the WorkflowCardActions component - * - * @category Component - */ - const useUtilityClasses = (ownerState: ContactSupportScreenProps & BoxProps): Record => { const { classes } = ownerState; @@ -52,6 +31,15 @@ const useUtilityClasses = (ownerState: ContactSupportScreenProps & BoxProps): Re return composeClasses(slots, getContactScreenUtilityClass, classes); }; +/** + * Component renders a screen with contact information for support with the application. + * Contact information is pulled from the context passed into the workflow. + * + * @param {ContactSupportScreenProps} props - props of contactSupportScreen + * + * @category Component + */ + export const ContactSupportScreenBase: React.FC = (props) => { const { icon, diff --git a/login-workflow/src/screens/CreateAccountScreen/CreateAccountScreen.tsx b/login-workflow/src/screens/CreateAccountScreen/CreateAccountScreen.tsx index 8775642a..ac759cc0 100644 --- a/login-workflow/src/screens/CreateAccountScreen/CreateAccountScreen.tsx +++ b/login-workflow/src/screens/CreateAccountScreen/CreateAccountScreen.tsx @@ -10,15 +10,7 @@ import { useTranslation } from 'react-i18next'; * Component that renders a screen for the user to enter their email address to start the * account creation process. * - * @param emailLabel label for the email field - * @param initialValue initial value for the email text field - * @param emailValidator function used to test the input for valid formatting - * @param emailTextFieldProps props to pass to the email text field - * @param WorkflowCardBaseProps props that will be passed to the WorkflowCard component - * @param WorkflowCardHeaderProps props that will be passed to the WorkflowCardHeader component - * @param WorkflowCardInstructionProps props that will be passed to the WorkflowCardInstructions component - * @param WorkflowCardActionsProps props that will be passed to the WorkflowCardActions component - * @param errorDisplayConfig configuration for customizing how errors are displayed + * @param {CreateAccountScreenProps} props - props of createAccountScreen * * @category Component */ diff --git a/login-workflow/src/screens/CreateAccountScreen/CreateAccountScreenBase.tsx b/login-workflow/src/screens/CreateAccountScreen/CreateAccountScreenBase.tsx index cd48a7d6..64e9558c 100644 --- a/login-workflow/src/screens/CreateAccountScreen/CreateAccountScreenBase.tsx +++ b/login-workflow/src/screens/CreateAccountScreen/CreateAccountScreenBase.tsx @@ -12,15 +12,7 @@ import ErrorManager from '../../components/Error/ErrorManager'; * Component that renders a screen for the user to enter their email address to start the * account creation process. * - * @param emailLabel label for the email field - * @param initialValue initial value for the email text field - * @param emailValidator function used to test the input for valid formatting - * @param emailTextFieldProps props to pass to the email text field - * @param WorkflowCardBaseProps props that will be passed to the WorkflowCard component - * @param WorkflowCardHeaderProps props that will be passed to the WorkflowCardHeader component - * @param WorkflowCardInstructionProps props that will be passed to the WorkflowCardInstructions component - * @param WorkflowCardActionsProps props that will be passed to the WorkflowCardActions component - * @param errorDisplayConfig configuration for customizing how errors are displayed + * @param {CreateAccountScreenProps} props - props of createAccountScreen * * @category Component */ diff --git a/login-workflow/src/screens/CreatePasswordScreen/CreatePasswordScreen.tsx b/login-workflow/src/screens/CreatePasswordScreen/CreatePasswordScreen.tsx index 44ccdc4a..022e85d6 100644 --- a/login-workflow/src/screens/CreatePasswordScreen/CreatePasswordScreen.tsx +++ b/login-workflow/src/screens/CreatePasswordScreen/CreatePasswordScreen.tsx @@ -9,12 +9,7 @@ import { useTranslation } from 'react-i18next'; /** * The component renders a screen with the password and confirm password field for creating a new password. * - * @param errorDisplayConfig configuration for customizing how errors are displayed - * @param PasswordProps props passed from SetPassword component - * @param WorkflowCardBaseProps props that will be passed to the WorkflowCard component - * @param WorkflowCardHeaderProps props that will be passed to the WorkflowCardHeader component - * @param WorkflowCardInstructionProps props that will be passed to the WorkflowCardInstructions component - * @param WorkflowCardActionsProps props that will be passed to the WorkflowCardActions component + * @param {CreatePasswordScreenProps} props - props of createPasswordScreen * * @category Component */ diff --git a/login-workflow/src/screens/CreatePasswordScreen/CreatePasswordScreenBase.tsx b/login-workflow/src/screens/CreatePasswordScreen/CreatePasswordScreenBase.tsx index 6e3c9916..8be20488 100644 --- a/login-workflow/src/screens/CreatePasswordScreen/CreatePasswordScreenBase.tsx +++ b/login-workflow/src/screens/CreatePasswordScreen/CreatePasswordScreenBase.tsx @@ -13,12 +13,7 @@ import ErrorManager from '../../components/Error/ErrorManager'; /** * The component renders a screen with the password and confirm password field for creating a new password. * - * @param errorDisplayConfig configuration for customizing how errors are displayed - * @param PasswordProps props passed from SetPassword component - * @param WorkflowCardBaseProps props that will be passed to the WorkflowCard component - * @param WorkflowCardHeaderProps props that will be passed to the WorkflowCardHeader component - * @param WorkflowCardInstructionProps props that will be passed to the WorkflowCardInstructions component - * @param WorkflowCardActionsProps props that will be passed to the WorkflowCardActions component + * @param {CreatePasswordScreenProps} props - props of createPasswordScreen * * @category Component */ diff --git a/login-workflow/src/screens/EulaScreen/EulaScreen.tsx b/login-workflow/src/screens/EulaScreen/EulaScreen.tsx index f4d734db..5da49bcc 100644 --- a/login-workflow/src/screens/EulaScreen/EulaScreen.tsx +++ b/login-workflow/src/screens/EulaScreen/EulaScreen.tsx @@ -8,18 +8,7 @@ import { useTranslation } from 'react-i18next'; /** * Component that renders a screen displaying the EULA and requests acceptance via a checkbox. * - * @param eulaContent the content to render for the EULA. Can be a plain string or HTML - * @param html true if the EULA should be rendered as HTML - * @param checkboxLabel label for the EULA checkbox - * @param initialCheckboxValue used to pre-populate the checked/unchecked checkbox when the screen loads - * @param checkboxProps used to set checkbox props - * @param onEulaAcceptedChange used to test eula checkbox accepted - * @param WorkflowCardBaseProps props that will be passed to the WorkflowCard component - * @param WorkflowCardHeaderProps props that will be passed to the WorkflowCardHeader component - * @param WorkflowCardInstructionProps props that will be passed to the WorkflowCardInstructions component - * @param WorkflowCardActionsProps props that will be passed to the WorkflowCardActions component - * @param errorDisplayConfig configuration for customizing how errors are displayed - * @param refreshConfig used to refresh Eula content. + * @param {EulaScreenProps} props - props of eulaScreen * * @category Component */ diff --git a/login-workflow/src/screens/EulaScreen/EulaScreenBase.tsx b/login-workflow/src/screens/EulaScreen/EulaScreenBase.tsx index 56d49f2a..6ec34d08 100644 --- a/login-workflow/src/screens/EulaScreen/EulaScreenBase.tsx +++ b/login-workflow/src/screens/EulaScreen/EulaScreenBase.tsx @@ -19,18 +19,7 @@ import { useTranslation } from 'react-i18next'; /** * Component that renders a screen displaying the EULA and requests acceptance via a checkbox. * - * @param eulaContent the content to render for the EULA. Can be a plain string or HTML - * @param html true if the EULA should be rendered as HTML - * @param checkboxLabel label for the EULA checkbox - * @param initialCheckboxValue used to pre-populate the checked/unchecked checkbox when the screen loads - * @param checkboxProps used to set checkbox props - * @param onEulaAcceptedChange called when the checkbox clicked - * @param WorkflowCardBaseProps props that will be passed to the WorkflowCard component - * @param WorkflowCardHeaderProps props that will be passed to the WorkflowCardHeader component - * @param WorkflowCardInstructionProps props that will be passed to the WorkflowCardInstructions component - * @param WorkflowCardActionsProps props that will be passed to the WorkflowCardActions component - * @param errorDisplayConfig configuration for customizing how errors are displayed - * @param onRefresh used to refresh Eula content. + * @param {EulaScreenProps} props - props of eulaScreen * * @category Component */ diff --git a/login-workflow/src/screens/ExistingAccountSuccessScreen/ExistingAccountSuccessScreen.tsx b/login-workflow/src/screens/ExistingAccountSuccessScreen/ExistingAccountSuccessScreen.tsx index af89ba2b..5aa86d6d 100644 --- a/login-workflow/src/screens/ExistingAccountSuccessScreen/ExistingAccountSuccessScreen.tsx +++ b/login-workflow/src/screens/ExistingAccountSuccessScreen/ExistingAccountSuccessScreen.tsx @@ -7,12 +7,7 @@ import { useTranslation } from 'react-i18next'; /** * Full Screen component that renders a Success Screen for the accounts which are already exists in the records * - * @param icon the icon to be displayed on the screen - * @param messageTitle title of the success message - * @param message success message to be displayed on the screen - * @param dismissButtonLabel to display label for the button - * @param canDismiss boolean flag prop to dismiss the success screen or not - * @param onDismiss function to call when the dismiss button is clicked + * @param {SuccessScreenProps} props - props of successScreen * * @category Component */ From ed70767f8e6115a538c7d3670aed31c27628ae27 Mon Sep 17 00:00:00 2001 From: priyankakmEaton Date: Wed, 24 Apr 2024 11:59:30 +0530 Subject: [PATCH 70/87] update js docs --- .../ForgotPasswordScreen.tsx | 13 +----- .../ForgotPasswordScreenBase.tsx | 14 +----- .../src/screens/LoginScreen/LoginScreen.tsx | 30 +------------ .../screens/LoginScreen/LoginScreenBase.tsx | 44 ++++--------------- .../RegistrationSuccessScreen.tsx | 6 +-- .../ResetPasswordScreen.tsx | 11 +---- .../ResetPasswordScreenBase.tsx | 11 +---- .../SuccessScreen/SuccessScreenBase.tsx | 11 +---- .../VerifyCodeScreen/VerifyCodeScreen.tsx | 13 +----- .../VerifyCodeScreen/VerifyCodeScreenBase.tsx | 13 +----- 10 files changed, 17 insertions(+), 149 deletions(-) diff --git a/login-workflow/src/screens/ForgotPasswordScreen/ForgotPasswordScreen.tsx b/login-workflow/src/screens/ForgotPasswordScreen/ForgotPasswordScreen.tsx index add83a7f..4015cfc8 100644 --- a/login-workflow/src/screens/ForgotPasswordScreen/ForgotPasswordScreen.tsx +++ b/login-workflow/src/screens/ForgotPasswordScreen/ForgotPasswordScreen.tsx @@ -12,18 +12,7 @@ import { useErrorManager } from '../../contexts/ErrorContext/useErrorManager'; /** * Component renders a screen with forgot password for support with the application. * - * @param emailLabel label for the email field - * @param initialEmailValue initial value for the email text field - * @param emailValidator function used to test the input for valid formatting - * @param showSuccessScreen used to determine whether to show a success screen after the form is submitted - * @param slots used for ForgotPasswordScreen SuccessScreen - * @param slotProps applied to slot from SuccessScreen - * @param WorkflowCardBaseProps props that will be passed to the WorkflowCard component - * @param WorkflowCardHeaderProps props that will be passed to the WorkflowCardHeader component - * @param WorkflowCardInstructionProps props that will be passed to the WorkflowCardInstructions component - * @param WorkflowCardActionsProps props that will be passed to the WorkflowCardActions component - * @param errorDisplayConfig configuration for customizing how errors are displayed - * @param emailTextFieldProps props to pass to the email field. + * @param {ForgotPasswordScreenProps} props - props of forgotPasswordScreen * * @category Component */ diff --git a/login-workflow/src/screens/ForgotPasswordScreen/ForgotPasswordScreenBase.tsx b/login-workflow/src/screens/ForgotPasswordScreen/ForgotPasswordScreenBase.tsx index 9d821c3c..7456fca3 100644 --- a/login-workflow/src/screens/ForgotPasswordScreen/ForgotPasswordScreenBase.tsx +++ b/login-workflow/src/screens/ForgotPasswordScreen/ForgotPasswordScreenBase.tsx @@ -14,19 +14,7 @@ import ErrorManager from '../../components/Error/ErrorManager'; /** * Component renders a screen with forgot password for support with the application. * - * @param emailLabel label for the email field - * @param initialEmailValue initial value for the email text field - * @param emailValidator function used to test the input for valid formatting - * @param canGoNext boolean or function that indicates whether the next button should be enabled - * @param showSuccessScreen used to determine whether to show a success screen after the form is submitted - * @param slots used for ForgotPasswordScreen SuccessScreen - * @param slotProps applied to slot from SuccessScreen - * @param WorkflowCardBaseProps props that will be passed to the WorkflowCard component - * @param WorkflowCardHeaderProps props that will be passed to the WorkflowCardHeader component - * @param WorkflowCardInstructionProps props that will be passed to the WorkflowCardInstructions component - * @param WorkflowCardActionsProps props that will be passed to the WorkflowCardActions component - * @param errorDisplayConfig configuration for customizing how errors are displayed - * @param emailTextFieldProps props to pass to the email field. + * @param {ForgotPasswordScreenProps} props - props of forgotPasswordScreen base component * * @category Component */ diff --git a/login-workflow/src/screens/LoginScreen/LoginScreen.tsx b/login-workflow/src/screens/LoginScreen/LoginScreen.tsx index 49470ca9..6f7b233b 100644 --- a/login-workflow/src/screens/LoginScreen/LoginScreen.tsx +++ b/login-workflow/src/screens/LoginScreen/LoginScreen.tsx @@ -10,35 +10,7 @@ const EMAIL_REGEX = /^[A-Z0-9._%+'-]+@[A-Z0-9.-]+\.[A-Z]{2,}$/i; /** * Component that renders a login screen that prompts a user to enter a username and password to login. * - * @param usernameLabel label for the username field - * @param usernameTextFieldProps props to pass to the username text field - * @param usernameValidator function used to validate the username - * @param initialUsernameValue username used to pre-populate the field - * @param passwordLabel label for the password field - * @param passwordTextFieldProps props to pass to the password text field - * @param passwordValidator function used to validate the password - * @param showRememberMe whether or not to show the 'remember me' checkbox - * @param rememberMeLabel label for the 'remember me' checkbox - * @param rememberMeInitialValue whether or not the 'remember me' checkbox should be checked by default - * @param onRememberMeChanged callback function that is called when the 'remember me' checkbox is changed - * @param loginButtonLabel label for the login button - * @param onLogin callback function that is called when the login button is clicked - * @param showForgotPassword whether or not to show the 'forgot password' link - * @param forgotPasswordLabel label for the 'forgot password' link - * @param onForgotPassword callback function that is called when the 'forgot password' link is clicked - * @param showSelfRegistration whether or not to show the 'self registration' link - * @param selfRegisterButtonLabel label for the 'self registration' link - * @param selfRegisterInstructions instructions for the 'self registration' link - * @param onSelfRegister callback function that is called when the 'self registration' link is clicked - * @param showContactSupport whether or not to show the 'contact support' link - * @param contactSupportLabel label for the 'contact support' link - * @param onContactSupport callback function that is called when the 'contact support' link is clicked - * @param errorDisplayConfig configuration for customizing how errors are displayed - * @param showCyberSecurityBadge whether or not to show the cyber security badge - * @param projectImage image to display at the top of the screen - * @param header header to display at the top of the screen - * @param footer footer to display at the bottom of the screen - * @param WorkflowCardBaseProps props that will be passed to the WorkflowCard component + * @param {LoginScreenProps} props - props of loginScreen * * @category Component */ diff --git a/login-workflow/src/screens/LoginScreen/LoginScreenBase.tsx b/login-workflow/src/screens/LoginScreen/LoginScreenBase.tsx index 0d63f3dd..9df105e1 100644 --- a/login-workflow/src/screens/LoginScreen/LoginScreenBase.tsx +++ b/login-workflow/src/screens/LoginScreen/LoginScreenBase.tsx @@ -16,42 +16,6 @@ import { unstable_composeClasses as composeClasses } from '@mui/base'; import ErrorManager from '../../components/Error/ErrorManager'; import { LinkStyles } from '../../styles'; -/** - * Component that renders a login screen that prompts a user to enter a username and password to login. - * - * @param usernameLabel label for the username field - * @param usernameTextFieldProps props to pass to the username text field - * @param usernameValidator function used to validate the username - * @param initialUsernameValue username used to pre-populate the field - * @param passwordLabel label for the password field - * @param passwordTextFieldProps props to pass to the password text field - * @param passwordValidator function used to validate the password - * @param showRememberMe whether or not to show the 'remember me' checkbox - * @param rememberMeLabel label for the 'remember me' checkbox - * @param rememberMeInitialValue whether or not the 'remember me' checkbox should be checked by default - * @param onRememberMeChanged callback function that is called when the 'remember me' checkbox is changed - * @param loginButtonLabel label for the login button - * @param onLogin callback function that is called when the login button is clicked - * @param showForgotPassword whether or not to show the 'forgot password' link - * @param forgotPasswordLabel label for the 'forgot password' link - * @param onForgotPassword callback function that is called when the 'forgot password' link is clicked - * @param showSelfRegistration whether or not to show the 'self registration' link - * @param selfRegisterButtonLabel label for the 'self registration' link - * @param selfRegisterInstructions instructions for the 'self registration' link - * @param onSelfRegister callback function that is called when the 'self registration' link is clicked - * @param showContactSupport whether or not to show the 'contact support' link - * @param contactSupportLabel label for the 'contact support' link - * @param onContactSupport callback function that is called when the 'contact support' link is clicked - * @param errorDisplayConfig configuration for customizing how errors are displayed - * @param showCyberSecurityBadge whether or not to show the cyber security badge - * @param projectImage image to display at the top of the screen - * @param header header to display at the top of the screen - * @param footer footer to display at the bottom of the screen - * @param WorkflowCardBaseProps props that will be passed to the WorkflowCard component - * - * @category Component - */ - const useUtilityClasses = (ownerState: LoginScreenProps): Record => { const { classes } = ownerState; @@ -81,6 +45,14 @@ const useUtilityClasses = (ownerState: LoginScreenProps): Record> = (props) => { const { usernameLabel, diff --git a/login-workflow/src/screens/RegistrationSuccessScreen/RegistrationSuccessScreen.tsx b/login-workflow/src/screens/RegistrationSuccessScreen/RegistrationSuccessScreen.tsx index edcff8c6..393bb236 100644 --- a/login-workflow/src/screens/RegistrationSuccessScreen/RegistrationSuccessScreen.tsx +++ b/login-workflow/src/screens/RegistrationSuccessScreen/RegistrationSuccessScreen.tsx @@ -8,11 +8,7 @@ import { useRegistrationWorkflowContext, useRegistrationContext } from '../../co /** * Component that renders a success screen for when registration completes. * - * @param icon the icon to be displayed on the screen - * @param messageTitle title of the success message - * @param message success message to be displayed on the screen - * @param onDismiss function to call when user clicks button - * @param canDismiss function to call when the dismiss button is clicked + * @param {SuccessScreenProps} props - props of successScreen * * @category Component */ diff --git a/login-workflow/src/screens/ResetPasswordScreen/ResetPasswordScreen.tsx b/login-workflow/src/screens/ResetPasswordScreen/ResetPasswordScreen.tsx index 8c090682..c370727b 100644 --- a/login-workflow/src/screens/ResetPasswordScreen/ResetPasswordScreen.tsx +++ b/login-workflow/src/screens/ResetPasswordScreen/ResetPasswordScreen.tsx @@ -11,16 +11,7 @@ import { useTranslation } from 'react-i18next'; /** * Component that renders a ResetPassword screen that allows a user to reset their password and shows a success message upon a successful password reset.. * - * @param PasswordProps props that will be passed to the SetPassword component - * @param showSuccessScreen boolean that determines whether to show the success screen or not - * @param slots used for ResetPasswordScreen SuccessScreen props - * @param slotProps props that will be passed to the SuccessScreen component - * @param errorDisplayConfig configuration for customizing how errors are displayed - * @param SuccessScreen component that will be rendered when showSuccessScreen is true - * @param WorkflowCardBaseProps props that will be passed to the WorkflowCard component - * @param WorkflowCardHeaderProps props that will be passed to the WorkflowCardHeader component - * @param WorkflowCardInstructionProps props that will be passed to the WorkflowCardInstructions component - * @param WorkflowCardActionsProps props that will be passed to the WorkflowCardActions component + * @param {ResetPasswordScreenProps} props - props of resetPasswordScreen * @returns a React JSX Element that renders a ResetPassword screen * * @category Component diff --git a/login-workflow/src/screens/ResetPasswordScreen/ResetPasswordScreenBase.tsx b/login-workflow/src/screens/ResetPasswordScreen/ResetPasswordScreenBase.tsx index 59d559a4..23510b98 100644 --- a/login-workflow/src/screens/ResetPasswordScreen/ResetPasswordScreenBase.tsx +++ b/login-workflow/src/screens/ResetPasswordScreen/ResetPasswordScreenBase.tsx @@ -14,16 +14,7 @@ import { SuccessScreenBase, SuccessScreenProps } from '../SuccessScreen'; /** * Component that renders a ResetPassword screen that allows a user to reset their password and shows a success message upon a successful password reset.. * - * @param PasswordProps props that will be passed to the SetPassword component - * @param showSuccessScreen boolean that determines whether to show the success screen or not - * @param slots used for ResetPasswordScreen SuccessScreen props - * @param slotProps props that will be passed to the SuccessScreen component - * @param errorDisplayConfig configuration for customizing how errors are displayed - * @param SuccessScreen component that will be rendered when showSuccessScreen is true - * @param WorkflowCardBaseProps props that will be passed to the WorkflowCard component - * @param WorkflowCardHeaderProps props that will be passed to the WorkflowCardHeader component - * @param WorkflowCardInstructionProps props that will be passed to the WorkflowCardInstructions component - * @param WorkflowCardActionsProps props that will be passed to the WorkflowCardActions component + * @param {ResetPasswordScreenProps} props - props of resetPasswordScreen base component * @returns a React JSX Element that renders a ResetPassword screen * * @category Component diff --git a/login-workflow/src/screens/SuccessScreen/SuccessScreenBase.tsx b/login-workflow/src/screens/SuccessScreen/SuccessScreenBase.tsx index 0c53d650..853400e5 100644 --- a/login-workflow/src/screens/SuccessScreen/SuccessScreenBase.tsx +++ b/login-workflow/src/screens/SuccessScreen/SuccessScreenBase.tsx @@ -12,16 +12,7 @@ import { WorkflowFinishState } from '../../components'; /** * Component that renders a success screen * - * @param icon the icon to be displayed on the screen - * @param messageTitle title of the success message - * @param message success message to be displayed on the screen - * @param dismissButtonLabel to display label for the button - * @param canDismiss function to call when the dismiss button is clicked - * @param onDismiss function to call when user clicks button - * @param WorkflowCardBaseProps props that will be passed to the WorkflowCard component - * @param WorkflowCardHeaderProps props that will be passed to the WorkflowCardHeader component - * @param WorkflowCardInstructionProps props that will be passed to the WorkflowCardInstructions component - * @param WorkflowCardActionsProps props that will be passed to the WorkflowCardActions component + * @param {SuccessScreenProps} props - props of successScreen base component * * @category Component */ diff --git a/login-workflow/src/screens/VerifyCodeScreen/VerifyCodeScreen.tsx b/login-workflow/src/screens/VerifyCodeScreen/VerifyCodeScreen.tsx index 0f8c90ba..e97abde7 100644 --- a/login-workflow/src/screens/VerifyCodeScreen/VerifyCodeScreen.tsx +++ b/login-workflow/src/screens/VerifyCodeScreen/VerifyCodeScreen.tsx @@ -9,18 +9,7 @@ import { useTranslation } from 'react-i18next'; * Component that renders a screen that prompts a user to enter the confirmation code * that was sent to the email address that they used to register. * - * @param codeValidator function that validates the code text field - * @param onResend function that is called when the resend link/button is clicked - * @param resendInstructions text to display ahead of the resend link/button - * @param resendLabel text to display for the resend link/button - * @param initialValue the initial value for the code text field - * @param verifyCodeInputLabel the label for the code text field - * @param errorDisplayConfig configuration for customizing how errors are displayed - * @param WorkflowCardBaseProps props that will be passed to the WorkflowCard component - * @param WorkflowCardHeaderProps props that will be passed to the WorkflowCardHeader component - * @param WorkflowCardInstructionProps props that will be passed to the WorkflowCardInstructions component - * @param WorkflowCardActionsProps props that will be passed to the WorkflowCardActions component - * @param verifyCodeTextFieldProps props to pass to the verify code field. + * @param {VerifyCodeScreenProps} props - props of verifyCodeScreen * * @category Component */ diff --git a/login-workflow/src/screens/VerifyCodeScreen/VerifyCodeScreenBase.tsx b/login-workflow/src/screens/VerifyCodeScreen/VerifyCodeScreenBase.tsx index 98e2d116..090872a5 100644 --- a/login-workflow/src/screens/VerifyCodeScreen/VerifyCodeScreenBase.tsx +++ b/login-workflow/src/screens/VerifyCodeScreen/VerifyCodeScreenBase.tsx @@ -14,18 +14,7 @@ import ErrorManager from '../../components/Error/ErrorManager'; * Component that renders a screen that prompts a user to enter the confirmation code * that was sent to the email address that they used to register. * - * @param codeValidator function that validates the code text field - * @param onResend function that is called when the resend link/button is clicked - * @param resendInstructions text to display ahead of the resend link/button - * @param resendLabel text to display for the resend link/button - * @param initialValue the initial value for the code text field - * @param verifyCodeInputLabel the label for the code text field - * @param errorDisplayConfig configuration for customizing how errors are displayed - * @param WorkflowCardBaseProps props that will be passed to the WorkflowCard component - * @param WorkflowCardHeaderProps props that will be passed to the WorkflowCardHeader component - * @param WorkflowCardInstructionProps props that will be passed to the WorkflowCardInstructions component - * @param WorkflowCardActionsProps props that will be passed to the WorkflowCardActions component - * @param verifyCodeTextFieldProps props to pass to the verify code field. + * @param {VerifyCodeScreenProps} props - props of verifyCodeScreen base component * * @category Component */ From 3e83bd1d6e47c9cacb5191fd61e7e48167300913 Mon Sep 17 00:00:00 2001 From: priyankakmEaton Date: Wed, 24 Apr 2024 12:29:50 +0530 Subject: [PATCH 71/87] update js docs --- .../ChangePasswordDialogBase.tsx | 2 +- .../PasswordRequirements.tsx | 16 ++-------- .../PasswordRequirementsCheck.tsx | 13 +------- .../components/PasswordRequirements/types.ts | 32 +++++++++++++++++++ .../src/components/Spinner/Spinner.tsx | 9 ++---- .../src/components/Spinner/types.ts | 8 +++++ .../WorkflowCard/WorkflowCardHeader.tsx | 2 ++ .../WorkflowCard/WorkflowCardInstructions.tsx | 2 +- .../AccountDetailsScreen.tsx | 2 +- .../AccountDetailsScreenBase.tsx | 2 +- .../ContactScreen/ContactSupportScreen.tsx | 2 +- .../ContactSupportScreenBase.tsx | 2 +- .../CreateAccountScreen.tsx | 2 +- .../CreateAccountScreenBase.tsx | 2 +- .../CreatePasswordScreen.tsx | 2 +- .../CreatePasswordScreenBase.tsx | 2 +- .../src/screens/EulaScreen/EulaScreen.tsx | 2 +- .../src/screens/EulaScreen/EulaScreenBase.tsx | 2 +- .../ExistingAccountSuccessScreen.tsx | 2 +- .../ForgotPasswordScreen.tsx | 2 +- .../ForgotPasswordScreenBase.tsx | 2 +- .../src/screens/LoginScreen/LoginScreen.tsx | 2 +- .../screens/LoginScreen/LoginScreenBase.tsx | 2 +- .../RegistrationSuccessScreen.tsx | 2 +- .../ResetPasswordScreen.tsx | 2 +- .../ResetPasswordScreenBase.tsx | 2 +- .../SuccessScreen/SuccessScreenBase.tsx | 2 +- .../VerifyCodeScreen/VerifyCodeScreen.tsx | 2 +- .../VerifyCodeScreen/VerifyCodeScreenBase.tsx | 2 +- 29 files changed, 70 insertions(+), 56 deletions(-) create mode 100644 login-workflow/src/components/PasswordRequirements/types.ts create mode 100644 login-workflow/src/components/Spinner/types.ts diff --git a/login-workflow/src/components/ChangePasswordDialog/ChangePasswordDialogBase.tsx b/login-workflow/src/components/ChangePasswordDialog/ChangePasswordDialogBase.tsx index 8723227a..70090b5c 100644 --- a/login-workflow/src/components/ChangePasswordDialog/ChangePasswordDialogBase.tsx +++ b/login-workflow/src/components/ChangePasswordDialog/ChangePasswordDialogBase.tsx @@ -22,7 +22,7 @@ import { SuccessScreenBase, SuccessScreenProps } from '../../screens'; * Component that renders a dialog with textField to enter current password and a change password form with a new password and confirm password inputs. * It includes callbacks so you can respond to changes in the inputs. * - * @param {ChangePasswordDialogProps} props - props of changePassword dailog + * @param {ChangePasswordDialogProps} props - props of changePassword dailog base component * * @category Component */ diff --git a/login-workflow/src/components/PasswordRequirements/PasswordRequirements.tsx b/login-workflow/src/components/PasswordRequirements/PasswordRequirements.tsx index ecf82a9b..a0245efb 100644 --- a/login-workflow/src/components/PasswordRequirements/PasswordRequirements.tsx +++ b/login-workflow/src/components/PasswordRequirements/PasswordRequirements.tsx @@ -1,21 +1,9 @@ import React from 'react'; import { PasswordRequirementsCheck } from './PasswordRequirementsCheck'; -import Box, { BoxProps } from '@mui/material/Box'; -import { PasswordRequirement } from '../SetPassword'; +import Box from '@mui/material/Box'; import { defaultPasswordRequirements } from '../../constants'; import { useTranslation } from 'react-i18next'; - -export type PasswordRequirementsProps = BoxProps & { - /** - * The string to conduct the complexity checks against - */ - passwordText: string; - - /** - * Optional requirements to set password - */ - passwordRequirements?: PasswordRequirement[]; -}; +import { PasswordRequirementsProps } from './types'; /** * Component that renders all of the password requirement line items with check indicators. diff --git a/login-workflow/src/components/PasswordRequirements/PasswordRequirementsCheck.tsx b/login-workflow/src/components/PasswordRequirements/PasswordRequirementsCheck.tsx index 2a87aa51..053b0d8c 100644 --- a/login-workflow/src/components/PasswordRequirements/PasswordRequirementsCheck.tsx +++ b/login-workflow/src/components/PasswordRequirements/PasswordRequirementsCheck.tsx @@ -2,18 +2,7 @@ import React from 'react'; import Typography from '@mui/material/Typography'; import Check from '@mui/icons-material/Check'; import Box from '@mui/material/Box'; - -export type PasswordRequirementsCheckProps = { - /** - * True if the line item should have a blue check (false for gray) - */ - isChecked: boolean; - - /** - * The text to display beside the check icon - */ - label: string; -}; +import { PasswordRequirementsCheckProps } from './types'; /** * Component that renders an individual password complexity line item with check indicator. diff --git a/login-workflow/src/components/PasswordRequirements/types.ts b/login-workflow/src/components/PasswordRequirements/types.ts new file mode 100644 index 00000000..56bc4838 --- /dev/null +++ b/login-workflow/src/components/PasswordRequirements/types.ts @@ -0,0 +1,32 @@ +import { BoxProps } from '@mui/material/Box'; +import { PasswordRequirement } from '../SetPassword'; + +/** + * Props for PasswordRequirements component. + */ +export type PasswordRequirementsProps = BoxProps & { + /** + * The string to conduct the complexity checks against + */ + passwordText: string; + + /** + * Optional requirements to set password + */ + passwordRequirements?: PasswordRequirement[]; +}; + +/** + * Props for PasswordRequirementsCheck component shows whether the status of the password matches the requirements. + */ +export type PasswordRequirementsCheckProps = { + /** + * True if the line item should have a blue check (false for gray) + */ + isChecked: boolean; + + /** + * The text to display beside the check icon + */ + label: string; +}; diff --git a/login-workflow/src/components/Spinner/Spinner.tsx b/login-workflow/src/components/Spinner/Spinner.tsx index 65132b8c..42590d33 100644 --- a/login-workflow/src/components/Spinner/Spinner.tsx +++ b/login-workflow/src/components/Spinner/Spinner.tsx @@ -1,13 +1,8 @@ import React from 'react'; import CircularProgress from '@mui/material/CircularProgress'; -import Box, { BoxProps } from '@mui/material/Box'; +import Box from '@mui/material/Box'; +import { SpinnerProps } from './types'; -export type SpinnerProps = BoxProps & { - /** - * True if the spinner should be displayed, false to render nothing - */ - visible?: boolean; -}; /** * Component that renders a indeterminate circular progress spinner atop a semi-transparent white background. * diff --git a/login-workflow/src/components/Spinner/types.ts b/login-workflow/src/components/Spinner/types.ts new file mode 100644 index 00000000..f4036308 --- /dev/null +++ b/login-workflow/src/components/Spinner/types.ts @@ -0,0 +1,8 @@ +import { BoxProps } from '@mui/material/Box'; + +export type SpinnerProps = BoxProps & { + /** + * True if the spinner should be displayed, false to render nothing + */ + visible?: boolean; +}; diff --git a/login-workflow/src/components/WorkflowCard/WorkflowCardHeader.tsx b/login-workflow/src/components/WorkflowCard/WorkflowCardHeader.tsx index 440ebac4..e7117458 100644 --- a/login-workflow/src/components/WorkflowCard/WorkflowCardHeader.tsx +++ b/login-workflow/src/components/WorkflowCard/WorkflowCardHeader.tsx @@ -6,6 +6,8 @@ import { WorkflowCardHeaderProps } from './WorkflowCard.types'; /** * Component that renders the header content for the workflow card. * + * @param {WorkflowCardHeaderProps} props - props of WorkflowCardHeader component + * * @category Component */ diff --git a/login-workflow/src/components/WorkflowCard/WorkflowCardInstructions.tsx b/login-workflow/src/components/WorkflowCard/WorkflowCardInstructions.tsx index fc859ac7..eeb1cba0 100644 --- a/login-workflow/src/components/WorkflowCard/WorkflowCardInstructions.tsx +++ b/login-workflow/src/components/WorkflowCard/WorkflowCardInstructions.tsx @@ -6,7 +6,7 @@ import { WorkflowCardInstructionProps } from './WorkflowCard.types'; /** * Component that renders the instructions content for the workflow card. * - * @param {WorkflowCardInstructionProps} props - props of workflowCardInstruction + * @param {WorkflowCardInstructionProps} props - props of WorkflowCardInstruction * * @category Component */ diff --git a/login-workflow/src/screens/AccountDetailsScreen/AccountDetailsScreen.tsx b/login-workflow/src/screens/AccountDetailsScreen/AccountDetailsScreen.tsx index f2ebc02c..7b756813 100644 --- a/login-workflow/src/screens/AccountDetailsScreen/AccountDetailsScreen.tsx +++ b/login-workflow/src/screens/AccountDetailsScreen/AccountDetailsScreen.tsx @@ -8,7 +8,7 @@ import { useTranslation } from 'react-i18next'; * Component renders a screen with account details information for support with the application. * Contact information is pulled from the context passed into the workflow. * - * @param {AccountDetailsScreenProps} props - props of accountDetailsScreen + * @param {AccountDetailsScreenProps} props - props of AccountDetailsScreen * * @category Component */ diff --git a/login-workflow/src/screens/AccountDetailsScreen/AccountDetailsScreenBase.tsx b/login-workflow/src/screens/AccountDetailsScreen/AccountDetailsScreenBase.tsx index 6ca7b35f..ddc25b40 100644 --- a/login-workflow/src/screens/AccountDetailsScreen/AccountDetailsScreenBase.tsx +++ b/login-workflow/src/screens/AccountDetailsScreen/AccountDetailsScreenBase.tsx @@ -14,7 +14,7 @@ import ErrorManager from '../../components/Error/ErrorManager'; * Component renders a screen with account details information for support with the application. * Contact information is pulled from the context passed into the workflow. * - * @param {AccountDetailsScreenProps} props - props of accountDetailsScreen + * @param {AccountDetailsScreenProps} props - props of AccountDetailsScreen base component * * @category Component */ diff --git a/login-workflow/src/screens/ContactScreen/ContactSupportScreen.tsx b/login-workflow/src/screens/ContactScreen/ContactSupportScreen.tsx index 9795229e..73eabce6 100644 --- a/login-workflow/src/screens/ContactScreen/ContactSupportScreen.tsx +++ b/login-workflow/src/screens/ContactScreen/ContactSupportScreen.tsx @@ -11,7 +11,7 @@ import { Typography } from '@mui/material'; * Component renders a screen with contact information for support with the application. * Contact information is pulled from the context passed into the workflow. * - * @param {ContactSupportScreenProps} props - props of contactSupportScreen + * @param {ContactSupportScreenProps} props - props of ContactSupportScreen * * @category Component */ diff --git a/login-workflow/src/screens/ContactScreen/ContactSupportScreenBase.tsx b/login-workflow/src/screens/ContactScreen/ContactSupportScreenBase.tsx index 83beaddc..882d20ba 100644 --- a/login-workflow/src/screens/ContactScreen/ContactSupportScreenBase.tsx +++ b/login-workflow/src/screens/ContactScreen/ContactSupportScreenBase.tsx @@ -35,7 +35,7 @@ const useUtilityClasses = (ownerState: ContactSupportScreenProps & BoxProps): Re * Component renders a screen with contact information for support with the application. * Contact information is pulled from the context passed into the workflow. * - * @param {ContactSupportScreenProps} props - props of contactSupportScreen + * @param {ContactSupportScreenProps} props - props of ContactSupportScreen base component * * @category Component */ diff --git a/login-workflow/src/screens/CreateAccountScreen/CreateAccountScreen.tsx b/login-workflow/src/screens/CreateAccountScreen/CreateAccountScreen.tsx index ac759cc0..18a62c1e 100644 --- a/login-workflow/src/screens/CreateAccountScreen/CreateAccountScreen.tsx +++ b/login-workflow/src/screens/CreateAccountScreen/CreateAccountScreen.tsx @@ -10,7 +10,7 @@ import { useTranslation } from 'react-i18next'; * Component that renders a screen for the user to enter their email address to start the * account creation process. * - * @param {CreateAccountScreenProps} props - props of createAccountScreen + * @param {CreateAccountScreenProps} props - props of CreateAccountScreen * * @category Component */ diff --git a/login-workflow/src/screens/CreateAccountScreen/CreateAccountScreenBase.tsx b/login-workflow/src/screens/CreateAccountScreen/CreateAccountScreenBase.tsx index 64e9558c..294c0176 100644 --- a/login-workflow/src/screens/CreateAccountScreen/CreateAccountScreenBase.tsx +++ b/login-workflow/src/screens/CreateAccountScreen/CreateAccountScreenBase.tsx @@ -12,7 +12,7 @@ import ErrorManager from '../../components/Error/ErrorManager'; * Component that renders a screen for the user to enter their email address to start the * account creation process. * - * @param {CreateAccountScreenProps} props - props of createAccountScreen + * @param {CreateAccountScreenProps} props - props of CreateAccountScreen base component * * @category Component */ diff --git a/login-workflow/src/screens/CreatePasswordScreen/CreatePasswordScreen.tsx b/login-workflow/src/screens/CreatePasswordScreen/CreatePasswordScreen.tsx index 022e85d6..fcefcc58 100644 --- a/login-workflow/src/screens/CreatePasswordScreen/CreatePasswordScreen.tsx +++ b/login-workflow/src/screens/CreatePasswordScreen/CreatePasswordScreen.tsx @@ -9,7 +9,7 @@ import { useTranslation } from 'react-i18next'; /** * The component renders a screen with the password and confirm password field for creating a new password. * - * @param {CreatePasswordScreenProps} props - props of createPasswordScreen + * @param {CreatePasswordScreenProps} props - props of CreatePasswordScreen * * @category Component */ diff --git a/login-workflow/src/screens/CreatePasswordScreen/CreatePasswordScreenBase.tsx b/login-workflow/src/screens/CreatePasswordScreen/CreatePasswordScreenBase.tsx index 8be20488..58de4bb8 100644 --- a/login-workflow/src/screens/CreatePasswordScreen/CreatePasswordScreenBase.tsx +++ b/login-workflow/src/screens/CreatePasswordScreen/CreatePasswordScreenBase.tsx @@ -13,7 +13,7 @@ import ErrorManager from '../../components/Error/ErrorManager'; /** * The component renders a screen with the password and confirm password field for creating a new password. * - * @param {CreatePasswordScreenProps} props - props of createPasswordScreen + * @param {CreatePasswordScreenProps} props - props of CreatePasswordScreen base component * * @category Component */ diff --git a/login-workflow/src/screens/EulaScreen/EulaScreen.tsx b/login-workflow/src/screens/EulaScreen/EulaScreen.tsx index 5da49bcc..c40a1717 100644 --- a/login-workflow/src/screens/EulaScreen/EulaScreen.tsx +++ b/login-workflow/src/screens/EulaScreen/EulaScreen.tsx @@ -8,7 +8,7 @@ import { useTranslation } from 'react-i18next'; /** * Component that renders a screen displaying the EULA and requests acceptance via a checkbox. * - * @param {EulaScreenProps} props - props of eulaScreen + * @param {EulaScreenProps} props - props of EULA screen * * @category Component */ diff --git a/login-workflow/src/screens/EulaScreen/EulaScreenBase.tsx b/login-workflow/src/screens/EulaScreen/EulaScreenBase.tsx index 6ec34d08..51b89f94 100644 --- a/login-workflow/src/screens/EulaScreen/EulaScreenBase.tsx +++ b/login-workflow/src/screens/EulaScreen/EulaScreenBase.tsx @@ -19,7 +19,7 @@ import { useTranslation } from 'react-i18next'; /** * Component that renders a screen displaying the EULA and requests acceptance via a checkbox. * - * @param {EulaScreenProps} props - props of eulaScreen + * @param {EulaScreenProps} props - props of EUlA screen base component * * @category Component */ diff --git a/login-workflow/src/screens/ExistingAccountSuccessScreen/ExistingAccountSuccessScreen.tsx b/login-workflow/src/screens/ExistingAccountSuccessScreen/ExistingAccountSuccessScreen.tsx index 5aa86d6d..19abb2d7 100644 --- a/login-workflow/src/screens/ExistingAccountSuccessScreen/ExistingAccountSuccessScreen.tsx +++ b/login-workflow/src/screens/ExistingAccountSuccessScreen/ExistingAccountSuccessScreen.tsx @@ -7,7 +7,7 @@ import { useTranslation } from 'react-i18next'; /** * Full Screen component that renders a Success Screen for the accounts which are already exists in the records * - * @param {SuccessScreenProps} props - props of successScreen + * @param {SuccessScreenProps} props - props of SuccessScreen * * @category Component */ diff --git a/login-workflow/src/screens/ForgotPasswordScreen/ForgotPasswordScreen.tsx b/login-workflow/src/screens/ForgotPasswordScreen/ForgotPasswordScreen.tsx index 4015cfc8..77fa8982 100644 --- a/login-workflow/src/screens/ForgotPasswordScreen/ForgotPasswordScreen.tsx +++ b/login-workflow/src/screens/ForgotPasswordScreen/ForgotPasswordScreen.tsx @@ -12,7 +12,7 @@ import { useErrorManager } from '../../contexts/ErrorContext/useErrorManager'; /** * Component renders a screen with forgot password for support with the application. * - * @param {ForgotPasswordScreenProps} props - props of forgotPasswordScreen + * @param {ForgotPasswordScreenProps} props - props of ForgotPasswordScreen * * @category Component */ diff --git a/login-workflow/src/screens/ForgotPasswordScreen/ForgotPasswordScreenBase.tsx b/login-workflow/src/screens/ForgotPasswordScreen/ForgotPasswordScreenBase.tsx index 7456fca3..6d193e06 100644 --- a/login-workflow/src/screens/ForgotPasswordScreen/ForgotPasswordScreenBase.tsx +++ b/login-workflow/src/screens/ForgotPasswordScreen/ForgotPasswordScreenBase.tsx @@ -14,7 +14,7 @@ import ErrorManager from '../../components/Error/ErrorManager'; /** * Component renders a screen with forgot password for support with the application. * - * @param {ForgotPasswordScreenProps} props - props of forgotPasswordScreen base component + * @param {ForgotPasswordScreenProps} props - props of ForgotPasswordScreen base component * * @category Component */ diff --git a/login-workflow/src/screens/LoginScreen/LoginScreen.tsx b/login-workflow/src/screens/LoginScreen/LoginScreen.tsx index 6f7b233b..16dd1e63 100644 --- a/login-workflow/src/screens/LoginScreen/LoginScreen.tsx +++ b/login-workflow/src/screens/LoginScreen/LoginScreen.tsx @@ -10,7 +10,7 @@ const EMAIL_REGEX = /^[A-Z0-9._%+'-]+@[A-Z0-9.-]+\.[A-Z]{2,}$/i; /** * Component that renders a login screen that prompts a user to enter a username and password to login. * - * @param {LoginScreenProps} props - props of loginScreen + * @param {LoginScreenProps} props - props of LoginScreen * * @category Component */ diff --git a/login-workflow/src/screens/LoginScreen/LoginScreenBase.tsx b/login-workflow/src/screens/LoginScreen/LoginScreenBase.tsx index 9df105e1..40634971 100644 --- a/login-workflow/src/screens/LoginScreen/LoginScreenBase.tsx +++ b/login-workflow/src/screens/LoginScreen/LoginScreenBase.tsx @@ -48,7 +48,7 @@ const useUtilityClasses = (ownerState: LoginScreenProps): Record Date: Wed, 24 Apr 2024 15:50:36 +0530 Subject: [PATCH 72/87] testcase on EulaScreen --- .../screens/EulaScreen/EulaScreen.test.tsx | 32 +++++++++++++++++++ 1 file changed, 32 insertions(+) diff --git a/login-workflow/src/screens/EulaScreen/EulaScreen.test.tsx b/login-workflow/src/screens/EulaScreen/EulaScreen.test.tsx index 0eb396fe..f88648db 100644 --- a/login-workflow/src/screens/EulaScreen/EulaScreen.test.tsx +++ b/login-workflow/src/screens/EulaScreen/EulaScreen.test.tsx @@ -6,6 +6,7 @@ import { RegistrationContextProvider } from '../../contexts'; import { EulaScreenProps } from './types'; import { RegistrationWorkflow } from '../../components'; import { registrationContextProviderProps } from '../../testUtils'; +import { i18nRegistrationInstance } from '../../contexts/RegistrationContext/i18nRegistrationInstance'; afterEach(cleanup); @@ -100,4 +101,35 @@ describe('Eula Screen', () => { fireEvent.click(backButton); expect(mockOnPrevious).toHaveBeenCalled(); }); + + it('should throw error in eula and clicking refresh button should call loadEula', async () => { + const loadFn = jest.fn().mockRejectedValue(new Error('qwertyuiop')); + const { findByText } = render( + {}, + routeConfig: {}, + actions: { + loadEula: loadFn, + acceptEula: jest.fn(), + requestRegistrationCode: jest.fn(), + validateUserRegistrationRequest: jest.fn(), + createPassword: jest.fn(), + setAccountDetails: jest.fn(), + completeRegistration: jest.fn().mockImplementation(() => Promise.resolve()), + }, + }} + > + + + + + ); + + await waitFor(() => expect(screen.queryByText('Loading...')).toBeNull()); + fireEvent.click(await findByText('Retry')); + expect(loadFn).toBeCalled(); + }, 10000); }); From 3fdd34bc6945751fb838d39fa5bf9bc615178a8b Mon Sep 17 00:00:00 2001 From: priyankakmEaton Date: Wed, 24 Apr 2024 17:26:27 +0530 Subject: [PATCH 73/87] emptyStateprops --- login-workflow/src/screens/SuccessScreen/SuccessScreenBase.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/login-workflow/src/screens/SuccessScreen/SuccessScreenBase.tsx b/login-workflow/src/screens/SuccessScreen/SuccessScreenBase.tsx index a2a7108b..2cff2df3 100644 --- a/login-workflow/src/screens/SuccessScreen/SuccessScreenBase.tsx +++ b/login-workflow/src/screens/SuccessScreen/SuccessScreenBase.tsx @@ -54,11 +54,11 @@ export const SuccessScreenBase: React.FC = (props) => { > {EmptyStateProps && ( )} From ed9268ca7356fc9cb259bdb266829e8c206bdd43 Mon Sep 17 00:00:00 2001 From: priyankakmEaton Date: Wed, 24 Apr 2024 18:44:36 +0530 Subject: [PATCH 74/87] type docs --- login-workflow/docs/migration-guide-3-4.md | 2 -- 1 file changed, 2 deletions(-) diff --git a/login-workflow/docs/migration-guide-3-4.md b/login-workflow/docs/migration-guide-3-4.md index abb432ea..1532c995 100644 --- a/login-workflow/docs/migration-guide-3-4.md +++ b/login-workflow/docs/migration-guide-3-4.md @@ -63,8 +63,6 @@ loadEula: async (language: string): Promise => { The `userData` parameter will now pass all data collected from the registration workflow, including custom data. -The `validationCode` parameter now supports numbers or string. - ```tsx // before completeRegistration: async ( From b9ae55142a7b2e0b05faae33ce7d40f43ecad8bd Mon Sep 17 00:00:00 2001 From: priyankakmEaton Date: Thu, 25 Apr 2024 12:39:55 +0530 Subject: [PATCH 75/87] update js docs --- .../components/ChangePasswordDialog/types.ts | 12 ++++++++++ .../components/WorkflowCard/ErrorState.tsx | 8 +++++++ .../src/components/WorkflowCard/Utility.ts | 22 +++++++++++++++++++ .../src/contexts/AuthContext/context.ts | 3 +++ .../src/contexts/ErrorContext/context.ts | 3 +++ .../src/contexts/ErrorContext/types.ts | 3 +++ .../RegistrationWorkflowContext/context.ts | 3 +++ 7 files changed, 54 insertions(+) diff --git a/login-workflow/src/components/ChangePasswordDialog/types.ts b/login-workflow/src/components/ChangePasswordDialog/types.ts index fb74d8a3..bbc5f363 100644 --- a/login-workflow/src/components/ChangePasswordDialog/types.ts +++ b/login-workflow/src/components/ChangePasswordDialog/types.ts @@ -3,11 +3,23 @@ import { SuccessScreenProps } from '../../screens'; import { BasicDialogProps } from '../Dialog'; import { SetPasswordProps } from '../SetPassword'; +/** + * Props of ChangePasswordDialogSlots + */ export type ChangePasswordDialogSlots = { + /** + * used to define a function that renders success screen + */ SuccessScreen?: (props?: SuccessScreenProps) => JSX.Element; }; +/** + * Props of ChangePasswordDialogSlotsProps + */ export type ChangePasswordDialogSlotsProps = { + /** + * The props that will be passed to the success screen + */ SuccessScreen?: SuccessScreenProps; }; diff --git a/login-workflow/src/components/WorkflowCard/ErrorState.tsx b/login-workflow/src/components/WorkflowCard/ErrorState.tsx index ce2fee38..5b44b87a 100644 --- a/login-workflow/src/components/WorkflowCard/ErrorState.tsx +++ b/login-workflow/src/components/WorkflowCard/ErrorState.tsx @@ -2,6 +2,14 @@ import React from 'react'; import { Typography } from '@mui/material'; import { ErrorStateProps } from './WorkflowCard.types'; +/** + * Component renders a screen with ErrorState to display error message for support with the application. + * + * @param {ErrorStateProps} props - props of ErrorStateProps component + * + * @category Component + */ + export const ErrorState: React.FC = (props) => { const { message, sx, ...otherTypographyProps } = props; diff --git a/login-workflow/src/components/WorkflowCard/Utility.ts b/login-workflow/src/components/WorkflowCard/Utility.ts index d8953da3..240f5fa6 100644 --- a/login-workflow/src/components/WorkflowCard/Utility.ts +++ b/login-workflow/src/components/WorkflowCard/Utility.ts @@ -1,7 +1,14 @@ import generateUtilityClass from '@mui/material/generateUtilityClass'; export type WorkflowCardClasses = { + /** + * The class name for the root element. + */ root?: string; + + /** + * The class name for the card element. + */ card?: string; }; @@ -13,9 +20,24 @@ export function getWorkflowCardUtilityClass(slot: string): string { // For WorkflowCardActions component export type workflowCardActionsClasses = { + /** + * The class name for the root element. + */ root?: string; + + /** + * The class name for the next button element. + */ nextButton?: string; + + /** + * The class name for the previous button element. + */ previousButton?: string; + + /** + * The class name for the stepper element. + */ stepper?: string; }; diff --git a/login-workflow/src/contexts/AuthContext/context.ts b/login-workflow/src/contexts/AuthContext/context.ts index 3e15e1cd..0c830fad 100644 --- a/login-workflow/src/contexts/AuthContext/context.ts +++ b/login-workflow/src/contexts/AuthContext/context.ts @@ -5,4 +5,7 @@ import { createContext } from 'react'; import { AuthContextProviderProps } from './types'; +/** + * Auth Context is used to access context in the authentication workflow + */ export const AuthContext = createContext(null); diff --git a/login-workflow/src/contexts/ErrorContext/context.ts b/login-workflow/src/contexts/ErrorContext/context.ts index c94e2cf3..ba21b762 100644 --- a/login-workflow/src/contexts/ErrorContext/context.ts +++ b/login-workflow/src/contexts/ErrorContext/context.ts @@ -5,4 +5,7 @@ import { createContext } from 'react'; import { ErrorContextProviderProps } from './types'; +/** + * An object that is used for error handling within the application + */ export const ErrorContext = createContext(null); diff --git a/login-workflow/src/contexts/ErrorContext/types.ts b/login-workflow/src/contexts/ErrorContext/types.ts index 5369dbd9..e27b5d65 100644 --- a/login-workflow/src/contexts/ErrorContext/types.ts +++ b/login-workflow/src/contexts/ErrorContext/types.ts @@ -5,4 +5,7 @@ import { ErrorManagerProps } from '../../components/Error/types'; +/** + * An object that is used as error handling context within the workflow. + */ export type ErrorContextProviderProps = Omit; diff --git a/login-workflow/src/contexts/RegistrationWorkflowContext/context.ts b/login-workflow/src/contexts/RegistrationWorkflowContext/context.ts index 5ec2f5a4..af9bbd59 100644 --- a/login-workflow/src/contexts/RegistrationWorkflowContext/context.ts +++ b/login-workflow/src/contexts/RegistrationWorkflowContext/context.ts @@ -6,4 +6,7 @@ import { createContext } from 'react'; import { RegistrationWorkflowContextProps } from './types'; +/** + * Registration Workflow Context is used to access context in the Registration Workflow component + */ export const RegistrationWorkflowContext = createContext(null); From be5da0e41763e41dbc303da23a790a20d23fce34 Mon Sep 17 00:00:00 2001 From: priyankakmEaton Date: Thu, 25 Apr 2024 18:21:13 +0530 Subject: [PATCH 76/87] update Eula docs --- login-workflow/docs/screens/eula.md | 31 +++++++++++++++++++---------- 1 file changed, 20 insertions(+), 11 deletions(-) diff --git a/login-workflow/docs/screens/eula.md b/login-workflow/docs/screens/eula.md index 9e48af5c..963225a3 100644 --- a/login-workflow/docs/screens/eula.md +++ b/login-workflow/docs/screens/eula.md @@ -18,14 +18,23 @@ import { RegistrationContextProvider, EulaScreen } from '@brightlayer-ui/react-a ## API -| Prop Name | Type | Description | Default | -|---|---|---|---| -| eulaContent | `string \| JSX.Element` | The content to render for the EULA. Can be a plain string or HTML. | `t('bluiAuth:EULA.EULA_CONTENT')` | -| checkboxLabel | `string` | The text to render for the acceptance checkbox. | `t('bluiAuth:EULA.ACCEPT_EULA')` | -| checkboxProps | `CheckboxProps` | Props to spread to the MUI [Checkbox](https://mui.com/material-ui/api/checkbox/) component | | -| html | `boolean` | True if the EULA should be rendered as HTML, false for plain text | `false` | -| initialCheckboxValue | `boolean` | Used to pre-populate the checked/unchecked checkbox when the screen loads. | `false` | -| onEulaAcceptedChange | `(accepted: boolean) => void` | Called when the acceptance checkbox clicked. | | -| errorDisplayConfig | `ErrorManagerProps` | See [Error Management](../error-management.md) | | - -This screen also extends the `WorkflowCardProps` type for updating the title, instructions, buttons, etc. See [Workflow Card](../components/workflow-card.md) for more details. \ No newline at end of file +| Prop Name | Type | Description | Default | +| -------------------- | ----------------------------- | ------------------------------------------------------------------------------------------ | --------------------------------- | +| eulaContent | `string \| JSX.Element` | The content to render for the EULA. Can be a plain string or HTML. | `t('bluiAuth:EULA.EULA_CONTENT')` | +| checkboxLabel | `string` | The text to render for the acceptance checkbox. | `t('bluiAuth:EULA.ACCEPT_EULA')` | +| checkboxProps | `CheckboxProps` | Props to spread to the MUI [Checkbox](https://mui.com/material-ui/api/checkbox/) component | | +| html | `boolean` | True if the EULA should be rendered as HTML, false for plain text | `false` | +| initialCheckboxValue | `boolean` | Used to pre-populate the checked/unchecked checkbox when the screen loads. | `false` | +| onEulaAcceptedChange | `(accepted: boolean) => void` | Called when the acceptance checkbox clicked. | | +| errorDisplayConfig | `ErrorManagerProps` | See [Error Management](../error-management.md) | | +| refreshConfig | `RefreshConfigProps` | configuration for refresh screen | | + +This screen also extends the `WorkflowCardProps` type for updating the title, instructions, buttons, etc. See [Workflow Card](../components/workflow-card.md) for more details. + +### RefreshConfigProps + +| Prop Name | Type | Description | Default | +| ------------------ | ------------ | --------------------------------- | ------------------------------------------- | +| onRefresh | `() => void` | Function to refresh Eula content | | +| refreshButtonLabel | `string` | Label of refresh button | `t('bluiCommon:MESSAGES.RETRY') // "Retry"` | +| showRefreshButton | `boolean` | the refresh button to be rendered | | From 72c37c56ee21d6dfe49278c76e2c775afde5105e Mon Sep 17 00:00:00 2001 From: jeffgreiner-eaton Date: Tue, 30 Apr 2024 12:07:51 -0400 Subject: [PATCH 77/87] add build badge & remove reference to circleCI --- .github/workflows/blui-ci.yml | 4 +--- login-workflow/PUBLISHING.md | 4 ++-- login-workflow/README.md | 2 +- 3 files changed, 4 insertions(+), 6 deletions(-) diff --git a/.github/workflows/blui-ci.yml b/.github/workflows/blui-ci.yml index d2395361..e3507206 100644 --- a/.github/workflows/blui-ci.yml +++ b/.github/workflows/blui-ci.yml @@ -1,4 +1,4 @@ -name: CI Run +name: Build on: push: @@ -81,7 +81,6 @@ jobs: with: node-version: ${{ matrix.node-version }} cache: 'yarn' - cache-dependency-path: login-workflow - run: yarn --frozen-lockfile working-directory: login-workflow - run: yarn build @@ -114,7 +113,6 @@ jobs: with: node-version: ${{ matrix.node-version }} registry-url: 'https://registry.npmjs.org' - cache-dependency-path: login-workflow - run: yarn --frozen-lockfile - run: npm run publish:package -b ${{env.BRANCH}} working-directory: login-workflow \ No newline at end of file diff --git a/login-workflow/PUBLISHING.md b/login-workflow/PUBLISHING.md index 9aa1da37..8cbb14ec 100644 --- a/login-workflow/PUBLISHING.md +++ b/login-workflow/PUBLISHING.md @@ -2,7 +2,7 @@ ## Automatic Publishing -This package is published to NPM automatically by CircleCI when code is merged into the `dev` or `master` branches. To publish a new version, simply update the version in `package.json` and merge your code into the appropriate branch. +This package is published to NPM automatically by Github when code is merged into the `dev` or `master` branches. To publish a new version, simply update the version in `package.json` and merge your code into the appropriate branch. - The `dev` branch will publish versions marked as `alpha` or `beta`. - The `master` branch will publish any version (`alpha`, `beta`, or `latest`). In both cases, the code will only be published if the version number differs from the current version published under the respective dist tag. @@ -27,4 +27,4 @@ yarn build npm adduser && yarn publish:package ``` -> Publishing manually should only be done for `alpha` or `beta` packages. The command will work for `latest` packages, but this should be avoided except in rare situations where the automatic publishing functionality is not working in CircleCI. +> Publishing manually should only be done for `alpha` or `beta` packages. The command will work for `latest` packages, but this should be avoided except in rare situations where the automatic publishing functionality is not working in Github. diff --git a/login-workflow/README.md b/login-workflow/README.md index a4d2bbdd..84bcc06d 100644 --- a/login-workflow/README.md +++ b/login-workflow/README.md @@ -1,6 +1,6 @@ # Test React Auth Workflow -[![](https://img.shields.io/circleci/project/github/etn-ccis/blui-react-workflows/master.svg?style=flat)](https://circleci.com/gh/etn-ccis/blui-react-workflows/tree/master) ![npm (scoped)](https://img.shields.io/npm/v/@brightlayer-ui/react-auth-workflow) [![codecov](https://codecov.io/gh/etn-ccis/blui-react-workflows/branch/master/graph/badge.svg?token=H18T75WBFS)](https://codecov.io/gh/etn-ccis/blui-react-workflows) +[![Build](https://github.com/etn-ccis/blui-react-workflows/actions/workflows/blui-ci.yml/badge.svg?branch=master)](https://github.com/etn-ccis/blui-react-workflows/actions/workflows/blui-ci.yml) ![npm (scoped)](https://img.shields.io/npm/v/@brightlayer-ui/react-auth-workflow) [![codecov](https://codecov.io/gh/etn-ccis/blui-react-workflows/branch/master/graph/badge.svg?token=H18T75WBFS)](https://codecov.io/gh/etn-ccis/blui-react-workflows) The React Auth Workflow package provides a consistent UI implementation of authentication-related capabilities for use in Eaton web applications built with React. From 4c1d72699b84a8a0a5aec192053eb1807780c077 Mon Sep 17 00:00:00 2001 From: jeffgreiner-eaton Date: Tue, 30 Apr 2024 12:12:35 -0400 Subject: [PATCH 78/87] cache path --- .github/workflows/blui-ci.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.github/workflows/blui-ci.yml b/.github/workflows/blui-ci.yml index e3507206..23c20e66 100644 --- a/.github/workflows/blui-ci.yml +++ b/.github/workflows/blui-ci.yml @@ -81,6 +81,7 @@ jobs: with: node-version: ${{ matrix.node-version }} cache: 'yarn' + cache-dependency-path: login-workflow - run: yarn --frozen-lockfile working-directory: login-workflow - run: yarn build @@ -113,6 +114,7 @@ jobs: with: node-version: ${{ matrix.node-version }} registry-url: 'https://registry.npmjs.org' + cache-dependency-path: login-workflow - run: yarn --frozen-lockfile - run: npm run publish:package -b ${{env.BRANCH}} working-directory: login-workflow \ No newline at end of file From 4d2acb510f0ca440c75b153613e8c01f14897d75 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 1 May 2024 11:53:38 +0000 Subject: [PATCH 79/87] Bump typescript from 5.2.2 to 5.4.5 in /login-workflow Bumps [typescript](https://github.com/Microsoft/TypeScript) from 5.2.2 to 5.4.5. - [Release notes](https://github.com/Microsoft/TypeScript/releases) - [Changelog](https://github.com/microsoft/TypeScript/blob/main/azure-pipelines.release.yml) - [Commits](https://github.com/Microsoft/TypeScript/compare/v5.2.2...v5.4.5) --- updated-dependencies: - dependency-name: typescript dependency-type: direct:development update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- login-workflow/yarn.lock | 37 +++++++++++++++++++++++++++++++------ 1 file changed, 31 insertions(+), 6 deletions(-) diff --git a/login-workflow/yarn.lock b/login-workflow/yarn.lock index 3c46e675..adbf50e8 100644 --- a/login-workflow/yarn.lock +++ b/login-workflow/yarn.lock @@ -8684,7 +8684,16 @@ string-length@^4.0.1: char-regex "^1.0.2" strip-ansi "^6.0.0" -"string-width-cjs@npm:string-width@^4.2.0", "string-width@^1.0.2 || 2 || 3 || 4", string-width@^4.0.0, string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.2, string-width@^4.2.3: +"string-width-cjs@npm:string-width@^4.2.0": + version "4.2.3" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" + integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== + dependencies: + emoji-regex "^8.0.0" + is-fullwidth-code-point "^3.0.0" + strip-ansi "^6.0.1" + +"string-width@^1.0.2 || 2 || 3 || 4", string-width@^4.0.0, string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.2, string-width@^4.2.3: version "4.2.3" resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== @@ -8763,7 +8772,7 @@ string_decoder@~1.1.1: dependencies: safe-buffer "~5.1.0" -"strip-ansi-cjs@npm:strip-ansi@^6.0.1", strip-ansi@^6.0.0, strip-ansi@^6.0.1: +"strip-ansi-cjs@npm:strip-ansi@^6.0.1": version "6.0.1" resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== @@ -8777,6 +8786,13 @@ strip-ansi@^0.3.0: dependencies: ansi-regex "^0.2.1" +strip-ansi@^6.0.0, strip-ansi@^6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" + integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== + dependencies: + ansi-regex "^5.0.1" + strip-ansi@^7.0.1: version "7.1.0" resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-7.1.0.tgz#d5b6568ca689d8561370b0707685d22434faff45" @@ -9161,9 +9177,9 @@ typedarray-to-buffer@^3.1.5: is-typedarray "^1.0.0" typescript@^5.0.3: - version "5.2.2" - resolved "https://registry.yarnpkg.com/typescript/-/typescript-5.2.2.tgz#5ebb5e5a5b75f085f22bc3f8460fba308310fa78" - integrity sha512-mI4WrpHsbCIcwT9cF4FZvr80QUeKvsUsUvKDoR+X/7XHQH98xYD8YHZg7ANtz2GtZt/CBq2QJ0thkGJMHfqc1w== + version "5.4.5" + resolved "https://registry.yarnpkg.com/typescript/-/typescript-5.4.5.tgz#42ccef2c571fdbd0f6718b1d1f5e6e5ef006f611" + integrity sha512-vcI4UpRgg81oIRUFwR0WSIHKt11nJ7SAVlYNIu+QpqeyXP+gpQJy/Z4+F0aGxSE4MqwjyXvW/TzgkLAx2AGHwQ== uc.micro@^1.0.1, uc.micro@^1.0.5: version "1.0.6" @@ -9559,7 +9575,7 @@ word-wrap@~1.2.3: resolved "https://registry.yarnpkg.com/word-wrap/-/word-wrap-1.2.5.tgz#d2c45c6dd4fbce621a66f136cbe328afd0410b34" integrity sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA== -"wrap-ansi-cjs@npm:wrap-ansi@^7.0.0", wrap-ansi@^7.0.0: +"wrap-ansi-cjs@npm:wrap-ansi@^7.0.0": version "7.0.0" resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43" integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== @@ -9577,6 +9593,15 @@ wrap-ansi@^6.0.1: string-width "^4.1.0" strip-ansi "^6.0.0" +wrap-ansi@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43" + integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== + dependencies: + ansi-styles "^4.0.0" + string-width "^4.1.0" + strip-ansi "^6.0.0" + wrap-ansi@^8.1.0: version "8.1.0" resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-8.1.0.tgz#56dc22368ee570face1b49819975d9b9a5ead214" From 507f59875bc6d873e0dd1313a6a59baad397b9f7 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 1 May 2024 12:00:15 +0000 Subject: [PATCH 80/87] Bump date-fns from 3.0.6 to 3.6.0 in /login-workflow/example Bumps [date-fns](https://github.com/date-fns/date-fns) from 3.0.6 to 3.6.0. - [Release notes](https://github.com/date-fns/date-fns/releases) - [Changelog](https://github.com/date-fns/date-fns/blob/main/CHANGELOG.md) - [Commits](https://github.com/date-fns/date-fns/compare/v3.0.6...v3.6.0) --- updated-dependencies: - dependency-name: date-fns dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- login-workflow/example/package.json | 2 +- login-workflow/example/yarn.lock | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/login-workflow/example/package.json b/login-workflow/example/package.json index 107bb8f6..307860f4 100644 --- a/login-workflow/example/package.json +++ b/login-workflow/example/package.json @@ -43,7 +43,7 @@ "@types/node": "^17.0.23", "@types/react": "^18.0.31", "@types/react-dom": "^18.0.0", - "date-fns": "^3.0.6", + "date-fns": "^3.6.0", "i18next": "^23.7.13", "react": "^18.2.0", "react-app-polyfill": "^3.0.0", diff --git a/login-workflow/example/yarn.lock b/login-workflow/example/yarn.lock index 467854da..0adc5623 100644 --- a/login-workflow/example/yarn.lock +++ b/login-workflow/example/yarn.lock @@ -4312,10 +4312,10 @@ data-urls@^2.0.0: whatwg-mimetype "^2.3.0" whatwg-url "^8.0.0" -date-fns@^3.0.6: - version "3.0.6" - resolved "https://registry.yarnpkg.com/date-fns/-/date-fns-3.0.6.tgz#fe3aeb7592d359f075ffc41cb16139828810ca83" - integrity sha512-W+G99rycpKMMF2/YD064b2lE7jJGUe+EjOES7Q8BIGY8sbNdbgcs9XFTZwvzc9Jx1f3k7LB7gZaZa7f8Agzljg== +date-fns@^3.6.0: + version "3.6.0" + resolved "https://registry.yarnpkg.com/date-fns/-/date-fns-3.6.0.tgz#f20ca4fe94f8b754951b24240676e8618c0206bf" + integrity sha512-fRHTG8g/Gif+kSh50gaGEdToemgfj74aRX3swtiouboip5JDLAyDE9F11nHMIcvOaXeOC6D7SpNhi7uFyB7Uww== debug@2.6.9, debug@^2.6.0: version "2.6.9" From d4039b91001cc4afb908879be25a2f167ac70c4e Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 1 May 2024 13:00:25 +0000 Subject: [PATCH 81/87] Bump ejs from 3.1.9 to 3.1.10 in /login-workflow/example-vite Bumps [ejs](https://github.com/mde/ejs) from 3.1.9 to 3.1.10. - [Release notes](https://github.com/mde/ejs/releases) - [Commits](https://github.com/mde/ejs/compare/v3.1.9...v3.1.10) --- updated-dependencies: - dependency-name: ejs dependency-type: indirect ... Signed-off-by: dependabot[bot] --- login-workflow/example-vite/yarn.lock | 37 ++++++++++++++++++++++----- 1 file changed, 31 insertions(+), 6 deletions(-) diff --git a/login-workflow/example-vite/yarn.lock b/login-workflow/example-vite/yarn.lock index 911b73e8..70edc212 100644 --- a/login-workflow/example-vite/yarn.lock +++ b/login-workflow/example-vite/yarn.lock @@ -4943,9 +4943,9 @@ ee-first@1.1.1: integrity sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow== ejs@^3.1.6: - version "3.1.9" - resolved "https://registry.yarnpkg.com/ejs/-/ejs-3.1.9.tgz#03c9e8777fe12686a9effcef22303ca3d8eeb361" - integrity sha512-rC+QVNMJWv+MtPgkt0y+0rVEIdbtxVADApW9JXrUVlzHetgcyczP/E7DJmWJ4fJCZF2cPcBk0laWO9ZHMG3DmQ== + version "3.1.10" + resolved "https://registry.yarnpkg.com/ejs/-/ejs-3.1.10.tgz#69ab8358b14e896f80cc39e62087b88500c3ac3b" + integrity sha512-UeJmFfOrAQS8OJWPZ4qtgHyWExa088/MtK5UEyoJGFH67cDEXkZSviOiKRCZ4Xij0zxI3JECgYs3oKx+AizQBA== dependencies: jake "^10.8.5" @@ -10130,7 +10130,16 @@ string-natural-compare@^3.0.1: resolved "https://registry.yarnpkg.com/string-natural-compare/-/string-natural-compare-3.0.1.tgz#7a42d58474454963759e8e8b7ae63d71c1e7fdf4" integrity sha512-n3sPwynL1nwKi3WJ6AIsClwBMa0zTi54fn2oLU6ndfTSIO05xaznjSf15PcBZU6FNWbmN5Q6cxT4V5hGvB4taw== -"string-width-cjs@npm:string-width@^4.2.0", string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.3: +"string-width-cjs@npm:string-width@^4.2.0": + version "4.2.3" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" + integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== + dependencies: + emoji-regex "^8.0.0" + is-fullwidth-code-point "^3.0.0" + strip-ansi "^6.0.1" + +string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.3: version "4.2.3" resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== @@ -10213,7 +10222,14 @@ stringify-object@^3.3.0: is-obj "^1.0.1" is-regexp "^1.0.0" -"strip-ansi-cjs@npm:strip-ansi@^6.0.1", strip-ansi@^6.0.0, strip-ansi@^6.0.1: +"strip-ansi-cjs@npm:strip-ansi@^6.0.1": + version "6.0.1" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" + integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== + dependencies: + ansi-regex "^5.0.1" + +strip-ansi@^6.0.0, strip-ansi@^6.0.1: version "6.0.1" resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== @@ -11293,7 +11309,16 @@ workbox-window@6.6.1: "@types/trusted-types" "^2.0.2" workbox-core "6.6.1" -"wrap-ansi-cjs@npm:wrap-ansi@^7.0.0", wrap-ansi@^7.0.0: +"wrap-ansi-cjs@npm:wrap-ansi@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43" + integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== + dependencies: + ansi-styles "^4.0.0" + string-width "^4.1.0" + strip-ansi "^6.0.0" + +wrap-ansi@^7.0.0: version "7.0.0" resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43" integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== From b736ec473135b1cecb57d7a55fad4f5ed9dc2c32 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 1 May 2024 13:00:25 +0000 Subject: [PATCH 82/87] Bump ejs from 3.1.9 to 3.1.10 in /login-workflow/example Bumps [ejs](https://github.com/mde/ejs) from 3.1.9 to 3.1.10. - [Release notes](https://github.com/mde/ejs/releases) - [Commits](https://github.com/mde/ejs/compare/v3.1.9...v3.1.10) --- updated-dependencies: - dependency-name: ejs dependency-type: indirect ... Signed-off-by: dependabot[bot] --- login-workflow/example/yarn.lock | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/login-workflow/example/yarn.lock b/login-workflow/example/yarn.lock index 0adc5623..71d9b430 100644 --- a/login-workflow/example/yarn.lock +++ b/login-workflow/example/yarn.lock @@ -4605,9 +4605,9 @@ ee-first@1.1.1: integrity sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow== ejs@^3.1.6: - version "3.1.9" - resolved "https://registry.yarnpkg.com/ejs/-/ejs-3.1.9.tgz#03c9e8777fe12686a9effcef22303ca3d8eeb361" - integrity sha512-rC+QVNMJWv+MtPgkt0y+0rVEIdbtxVADApW9JXrUVlzHetgcyczP/E7DJmWJ4fJCZF2cPcBk0laWO9ZHMG3DmQ== + version "3.1.10" + resolved "https://registry.yarnpkg.com/ejs/-/ejs-3.1.10.tgz#69ab8358b14e896f80cc39e62087b88500c3ac3b" + integrity sha512-UeJmFfOrAQS8OJWPZ4qtgHyWExa088/MtK5UEyoJGFH67cDEXkZSviOiKRCZ4Xij0zxI3JECgYs3oKx+AizQBA== dependencies: jake "^10.8.5" From 4b909e2bf289928cb24bd7fbab4a8ce712e7e706 Mon Sep 17 00:00:00 2001 From: jeffgreiner-eaton Date: Wed, 1 May 2024 13:42:10 -0400 Subject: [PATCH 83/87] use yarn --immutable --- .github/workflows/blui-ci.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/blui-ci.yml b/.github/workflows/blui-ci.yml index 23c20e66..92a1d3ce 100644 --- a/.github/workflows/blui-ci.yml +++ b/.github/workflows/blui-ci.yml @@ -54,7 +54,7 @@ jobs: node-version: ${{ matrix.node-version }} cache: 'yarn' cache-dependency-path: login-workflow - - run: yarn --frozen-lockfile + - run: yarn --immutable working-directory: login-workflow - run: yarn test:ci --coverage --watchAll=false working-directory: login-workflow @@ -82,7 +82,7 @@ jobs: node-version: ${{ matrix.node-version }} cache: 'yarn' cache-dependency-path: login-workflow - - run: yarn --frozen-lockfile + - run: yarn --immutable working-directory: login-workflow - run: yarn build working-directory: login-workflow @@ -115,6 +115,6 @@ jobs: node-version: ${{ matrix.node-version }} registry-url: 'https://registry.npmjs.org' cache-dependency-path: login-workflow - - run: yarn --frozen-lockfile + - run: yarn --immutable - run: npm run publish:package -b ${{env.BRANCH}} working-directory: login-workflow \ No newline at end of file From fb2f6ee32f163f6976e0a26796a0dde7e2aeae95 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 3 May 2024 20:08:14 +0000 Subject: [PATCH 84/87] Bump firebase-tools from 11.30.0 to 13.6.0 in /login-workflow Bumps [firebase-tools](https://github.com/firebase/firebase-tools) from 11.30.0 to 13.6.0. - [Release notes](https://github.com/firebase/firebase-tools/releases) - [Changelog](https://github.com/firebase/firebase-tools/blob/master/CHANGELOG.md) - [Commits](https://github.com/firebase/firebase-tools/compare/v11.30.0...v13.6.0) --- updated-dependencies: - dependency-name: firebase-tools dependency-type: direct:development ... Signed-off-by: dependabot[bot] --- login-workflow/package.json | 2 +- login-workflow/yarn.lock | 599 ++++++++++++------------------------ 2 files changed, 197 insertions(+), 404 deletions(-) diff --git a/login-workflow/package.json b/login-workflow/package.json index 57258363..2227f7c3 100644 --- a/login-workflow/package.json +++ b/login-workflow/package.json @@ -96,7 +96,7 @@ "eslint-config-prettier": "^8.3.0", "eslint-plugin-react": "^7.29.4", "eslint-plugin-react-hooks": "^4.4.0", - "firebase-tools": "^11.0.1", + "firebase-tools": "^13.6.0", "i18next": "^23.2.6", "identity-obj-proxy": "^3.0.0", "jest": "^29.3.1", diff --git a/login-workflow/yarn.lock b/login-workflow/yarn.lock index adbf50e8..a9ee4709 100644 --- a/login-workflow/yarn.lock +++ b/login-workflow/yarn.lock @@ -2009,16 +2009,16 @@ resolved "https://registry.yarnpkg.com/@testing-library/user-event/-/user-event-14.5.1.tgz#27337d72046d5236b32fd977edee3f74c71d332f" integrity sha512-UCcUKrUYGj7ClomOo2SpNVvx4/fkd/2BbIHDCle8A0ax+P3bU7yJwDBDrS6ZwdTMARWTGODX1hEsCcO+7beJjg== -"@tootallnate/once@1": - version "1.1.2" - resolved "https://registry.yarnpkg.com/@tootallnate/once/-/once-1.1.2.tgz#ccb91445360179a04e7fe6aff78c00ffc1eeaf82" - integrity sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw== - "@tootallnate/once@2": version "2.0.0" resolved "https://registry.yarnpkg.com/@tootallnate/once/-/once-2.0.0.tgz#f544a148d3ab35801c1f633a7441fd87c2e484bf" integrity sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A== +"@tootallnate/quickjs-emscripten@^0.23.0": + version "0.23.0" + resolved "https://registry.yarnpkg.com/@tootallnate/quickjs-emscripten/-/quickjs-emscripten-0.23.0.tgz#db4ecfd499a9765ab24002c3b696d02e6d32a12c" + integrity sha512-C5Mc6rdnsaJDjO3UpGW/CQTHtCKaYlScZTly4JIu97Jxo/odCiH0ITnDXSJPTOrEKk/ycSZ0AOgTmkDtkOsvIA== + "@types/aria-query@^5.0.1": version "5.0.1" resolved "https://registry.yarnpkg.com/@types/aria-query/-/aria-query-5.0.1.tgz#3286741fb8f1e1580ac28784add4c7a1d49bdfbc" @@ -2485,23 +2485,30 @@ acorn-jsx@^5.3.2: resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.3.2.tgz#7ed5bb55908b3b2f1bc55c6af1653bada7f07937" integrity sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ== -acorn-walk@^8.0.2, acorn-walk@^8.2.0: +acorn-walk@^8.0.2: version "8.2.0" resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-8.2.0.tgz#741210f2e2426454508853a2f44d0ab83b7f69c1" integrity sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA== -acorn@^8.1.0, acorn@^8.7.0, acorn@^8.8.1, acorn@^8.9.0: +acorn@^8.1.0, acorn@^8.8.1, acorn@^8.9.0: version "8.10.0" resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.10.0.tgz#8be5b3907a67221a81ab23c7889c4c5526b62ec5" integrity sha512-F0SAmZ8iUtS//m8DmCTA0jlh6TDKkHQyK6xc6V4KDTyZKA9dnvX9/3sRTVQrWm79glUAZbnmmNcdYwUIHWVybw== -agent-base@6, agent-base@^6.0.0, agent-base@^6.0.2: +agent-base@6, agent-base@^6.0.2: version "6.0.2" resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-6.0.2.tgz#49fff58577cfee3f37176feab4c22e00f86d7f77" integrity sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ== dependencies: debug "4" +agent-base@^7.0.2, agent-base@^7.1.0, agent-base@^7.1.1: + version "7.1.1" + resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-7.1.1.tgz#bdbded7dfb096b751a2a087eeeb9664725b2e317" + integrity sha512-H0TSyFNDMomMNJQBn8wFV5YC/2eJ+VXECwOadZJT554xP6cODZHPX3H9QMQECxvrgiSOP1pHjy1sMWQVYJOUOA== + dependencies: + debug "^4.3.4" + agentkeepalive@^4.2.1: version "4.5.0" resolved "https://registry.yarnpkg.com/agentkeepalive/-/agentkeepalive-4.5.0.tgz#2673ad1389b3c418c5a20c5d7364f93ca04be923" @@ -2524,7 +2531,7 @@ ajv-formats@^2.1.0: dependencies: ajv "^8.0.0" -ajv@^6.12.3, ajv@^6.12.4, ajv@^6.12.6: +ajv@^6.12.4, ajv@^6.12.6: version "6.12.6" resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.6.tgz#baf5a62e802b07d977034586f8c3baf5adf26df4" integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g== @@ -2551,7 +2558,7 @@ ansi-align@^3.0.0: dependencies: string-width "^4.1.0" -ansi-escapes@^4.2.1: +ansi-escapes@^4.2.1, ansi-escapes@^4.3.2: version "4.3.2" resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-4.3.2.tgz#6b2291d1db7d98b6521d5f1efa42d0f3a9feb65e" integrity sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ== @@ -2799,19 +2806,7 @@ asap@^2.0.0: resolved "https://registry.yarnpkg.com/asap/-/asap-2.0.6.tgz#e50347611d7e690943208bbdafebcbc2fb866d46" integrity sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA== -asn1@~0.2.3: - version "0.2.6" - resolved "https://registry.yarnpkg.com/asn1/-/asn1-0.2.6.tgz#0d3a7bb6e64e02a90c0303b31f292868ea09a08d" - integrity sha512-ix/FxPn0MDjeyJ7i/yoHGFt/EX6LyNbxSEhPPXODPL+KB0VPk86UYfL0lMdy+KCnv+fmvIzySwaK5COwqVbWTQ== - dependencies: - safer-buffer "~2.1.0" - -assert-plus@1.0.0, assert-plus@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/assert-plus/-/assert-plus-1.0.0.tgz#f12e0f3c5d77b0b1cdd9146942e4e96c1e4dd525" - integrity sha512-NfJ4UzBCcQGLDlQq7nHxH+tv3kyZ0hHQqF5BO6J7tNJeP5do1llPr8dZ8zHonfhAu0PHAdMkSo+8o0wxg9lZWw== - -ast-types@^0.13.2: +ast-types@^0.13.4: version "0.13.4" resolved "https://registry.yarnpkg.com/ast-types/-/ast-types-0.13.4.tgz#ee0d77b343263965ecc3fb62da16e7222b2b6782" integrity sha512-x1FCFnFifvYDDzTaLII71vG5uvDwgtmDTEVWAxrgeiR8VjMONcCXJx7E+USjDtHlwFmt9MysbqgF9b9Vjr6w+w== @@ -2852,16 +2847,6 @@ available-typed-arrays@^1.0.5: resolved "https://registry.yarnpkg.com/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz#92f95616501069d07d10edb2fc37d3e1c65123b7" integrity sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw== -aws-sign2@~0.7.0: - version "0.7.0" - resolved "https://registry.yarnpkg.com/aws-sign2/-/aws-sign2-0.7.0.tgz#b46e890934a9591f2d2f6f86d7e6a9f1b3fe76a8" - integrity sha512-08kcGqnYf/YmjoRhfxyu+CLxBjUtHLXLXX/vUfx9l2LYzG3c1m61nrpyFUZI6zeS+Li/wWMMidD9KgrqtGq3mA== - -aws4@^1.8.0: - version "1.12.0" - resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.12.0.tgz#ce1c9d143389679e253b314241ea9aa5cec980d3" - integrity sha512-NmWvPnx0F1SfrQbYwOi7OeaNGokp9XhzNioJ/CSBs8Qa4vxug81mhJEAVZwxXuBmYB5KDRfMq/F3RR0BIU7sWg== - babel-jest@^28.1.3: version "28.1.3" resolved "https://registry.yarnpkg.com/babel-jest/-/babel-jest-28.1.3.tgz#c1187258197c099072156a0a121c11ee1e3917d5" @@ -3008,12 +2993,10 @@ basic-auth@~2.0.1: dependencies: safe-buffer "5.1.2" -bcrypt-pbkdf@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz#a4301d389b6a43f9b67ff3ca11a3f6637e360e9e" - integrity sha512-qeFIXtP4MSoi6NLqO12WfqARWWuCKi2Rn/9hJLEmtB5yTNr9DqFWkJRCf2qShWzPeAMRnOgCrq0sg/KLv5ES9w== - dependencies: - tweetnacl "^0.14.3" +basic-ftp@^5.0.2: + version "5.0.5" + resolved "https://registry.yarnpkg.com/basic-ftp/-/basic-ftp-5.0.5.tgz#14a474f5fffecca1f4f406f1c26b18f800225ac0" + integrity sha512-4Bcg1P8xhUuqcii/S0Z9wiHIrQVPMermM1any+MX5GeGD7faD3/msQUDGLol9wOcz4/jbg/WJnGqoJF6LiBdtg== bignumber.js@^9.0.0: version "9.1.2" @@ -3224,11 +3207,6 @@ cardinal@^2.1.1: ansicolors "~0.3.2" redeyed "~2.1.0" -caseless@~0.12.0: - version "0.12.0" - resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.12.0.tgz#1b681c21ff84033c826543090689420d187151dc" - integrity sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw== - catharsis@^0.9.0: version "0.9.0" resolved "https://registry.yarnpkg.com/catharsis/-/catharsis-0.9.0.tgz#40382a168be0e6da308c277d3a2b3eb40c7d2121" @@ -3477,7 +3455,7 @@ colorspace@1.1.x: color "^3.1.3" text-hex "1.0.x" -combined-stream@^1.0.6, combined-stream@^1.0.8, combined-stream@~1.0.6: +combined-stream@^1.0.8: version "1.0.8" resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.8.tgz#c3d45a8b34fd730631a110a8a2520682b31d5a7f" integrity sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg== @@ -3603,11 +3581,6 @@ core-js-compat@^3.31.0, core-js-compat@^3.33.1: dependencies: browserslist "^4.22.1" -core-util-is@1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" - integrity sha512-3lqz5YjWTYnW6dlDa5TLaTCcShfar1e40rmcJVwCBJC6mWlFuj0eCHIElmG1g5kyuJ/GD+8Wn4FFCcz4gJPfaQ== - core-util-is@~1.0.0: version "1.0.3" resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.3.tgz#a6042d3634c2b27e9328f837b965fac83808db85" @@ -3722,17 +3695,10 @@ csv-parse@^5.0.4: resolved "https://registry.yarnpkg.com/csv-parse/-/csv-parse-5.5.0.tgz#2313421e69b650dae32a79ac884b20b21ca1d9da" integrity sha512-RxruSK3M4XgzcD7Trm2wEN+SJ26ChIb903+IWxNOcB5q4jT2Cs+hFr6QP39J05EohshRFEvyzEBoZ/466S2sbw== -dashdash@^1.12.0: - version "1.14.1" - resolved "https://registry.yarnpkg.com/dashdash/-/dashdash-1.14.1.tgz#853cfa0f7cbe2fed5de20326b8dd581035f6e2f0" - integrity sha512-jRFi8UDGo6j+odZiEpjazZaWqEal3w/basFjQHQEwVtZJGDpxbH1MeYluwCS8Xq5wmLJooDlMgvVarmWfGM44g== - dependencies: - assert-plus "^1.0.0" - -data-uri-to-buffer@3: - version "3.0.1" - resolved "https://registry.yarnpkg.com/data-uri-to-buffer/-/data-uri-to-buffer-3.0.1.tgz#594b8973938c5bc2c33046535785341abc4f3636" - integrity sha512-WboRycPNsVw3B3TL559F7kuBUM4d8CgMEvk6xEJlOp7OBPjt6G7z8WMWlD2rOFZLk6OYfFIUGsCOWzcQH9K2og== +data-uri-to-buffer@^6.0.2: + version "6.0.2" + resolved "https://registry.yarnpkg.com/data-uri-to-buffer/-/data-uri-to-buffer-6.0.2.tgz#8a58bb67384b261a38ef18bea1810cb01badd28b" + integrity sha512-7hvf7/GW8e86rW0ptuwS3OcBGDjIi6SZva7hCyWC0yYry2cOPmLIjXAUHI6DK2HsnwJd9ifmt57i8eV2n4YNpw== data-urls@^3.0.2: version "3.0.2" @@ -3791,6 +3757,14 @@ dedent@^1.0.0: resolved "https://registry.yarnpkg.com/dedent/-/dedent-1.5.1.tgz#4f3fc94c8b711e9bb2800d185cd6ad20f2a90aff" integrity sha512-+LxW+KLWxu3HW3M2w2ympwtqPrqYRzU8fqi6Fhd18fBALe15blJPI/I4+UHveMVG6lJqB4JNd4UG0S5cnVHwIg== +deep-equal-in-any-order@^2.0.6: + version "2.0.6" + resolved "https://registry.yarnpkg.com/deep-equal-in-any-order/-/deep-equal-in-any-order-2.0.6.tgz#9fb208dfc6836e35e2d4c942db85fc291820318a" + integrity sha512-RfnWHQzph10YrUjvWwhd15Dne8ciSJcZ3U6OD7owPwiVwsdE5IFSoZGg8rlwJD11ES+9H5y8j3fCofviRHOqLQ== + dependencies: + lodash.mapvalues "^4.6.0" + sort-any "^2.0.0" + deep-equal@^2.0.5: version "2.2.2" resolved "https://registry.yarnpkg.com/deep-equal/-/deep-equal-2.2.2.tgz#9b2635da569a13ba8e1cc159c2f744071b115daa" @@ -3860,15 +3834,14 @@ define-properties@^1.1.3, define-properties@^1.1.4, define-properties@^1.2.0, de has-property-descriptors "^1.0.0" object-keys "^1.1.1" -degenerator@^3.0.2: - version "3.0.4" - resolved "https://registry.yarnpkg.com/degenerator/-/degenerator-3.0.4.tgz#07ccf95bc11044a37a6efc2f66029fb636e31f24" - integrity sha512-Z66uPeBfHZAHVmue3HPfyKu2Q0rC2cRxbTOsvmU/po5fvvcx27W4mIu9n0PUlQih4oUYvcG1BsbtVv8x7KDOSw== +degenerator@^5.0.0: + version "5.0.1" + resolved "https://registry.yarnpkg.com/degenerator/-/degenerator-5.0.1.tgz#9403bf297c6dad9a1ece409b37db27954f91f2f5" + integrity sha512-TllpMR/t0M5sqCXfj85i4XaAzxmS5tVA16dqvdkMwGmzI+dXLXnw3J+3Vdv7VKw+ThlTMboK6i9rnZ6Nntj5CQ== dependencies: - ast-types "^0.13.2" - escodegen "^1.8.1" - esprima "^4.0.0" - vm2 "^3.9.17" + ast-types "^0.13.4" + escodegen "^2.1.0" + esprima "^4.0.1" delayed-stream@~1.0.0: version "1.0.0" @@ -3991,14 +3964,6 @@ eastasianwidth@^0.2.0: resolved "https://registry.yarnpkg.com/eastasianwidth/-/eastasianwidth-0.2.0.tgz#696ce2ec0aa0e6ea93a397ffcf24aa7840c827cb" integrity sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA== -ecc-jsbn@~0.1.1: - version "0.1.2" - resolved "https://registry.yarnpkg.com/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz#3a83a904e54353287874c564b7549386849a98c9" - integrity sha512-eh9O+hwRHNbG4BLTjEl3nw044CkGm5X6LoaCf7LPp7UU8Qrt47JYNi6nPX8xjW97TKGKm1ouctg0QSpZe9qrnw== - dependencies: - jsbn "~0.1.0" - safer-buffer "^2.1.0" - ecdsa-sig-formatter@1.0.11, ecdsa-sig-formatter@^1.0.11: version "1.0.11" resolved "https://registry.yarnpkg.com/ecdsa-sig-formatter/-/ecdsa-sig-formatter-1.0.11.tgz#ae0f0fa2d85045ef14a817daa3ce9acd0489e5bf" @@ -4222,7 +4187,7 @@ escape-string-regexp@^4.0.0: resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz#14ba83a5d373e3d311e5afca29cf5bfad965bf34" integrity sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA== -escodegen@^1.13.0, escodegen@^1.8.1: +escodegen@^1.13.0: version "1.14.3" resolved "https://registry.yarnpkg.com/escodegen/-/escodegen-1.14.3.tgz#4e7b81fba61581dc97582ed78cab7f0e8d63f503" integrity sha512-qFcX0XJkdg+PB3xjZZG/wKSuT1PnQWx57+TVSjIMmILd2yC/6ByYElPwJnslDsuWuSAp4AwJGumarAAmJch5Kw== @@ -4234,7 +4199,7 @@ escodegen@^1.13.0, escodegen@^1.8.1: optionalDependencies: source-map "~0.6.1" -escodegen@^2.0.0: +escodegen@^2.0.0, escodegen@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/escodegen/-/escodegen-2.1.0.tgz#ba93bbb7a43986d29d6041f99f5262da773e2e17" integrity sha512-2NlIDTwUWJN0mRPQOdtQBzbUHvdGY2P1VXSyU83Q3xKxM7WHX2Ql8dKq782Q9TgQUNOLEzEYu9bzLNj1q88I5w== @@ -4499,7 +4464,7 @@ express@^4.16.4: utils-merge "1.0.1" vary "~1.1.2" -extend@^3.0.2, extend@~3.0.2: +extend@^3.0.2: version "3.0.2" resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.2.tgz#f8b1136b4071fbd8eb140aff858b1019ec2915fa" integrity sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g== @@ -4513,16 +4478,6 @@ external-editor@^3.0.3: iconv-lite "^0.4.24" tmp "^0.0.33" -extsprintf@1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.3.0.tgz#96918440e3041a7a414f8c52e3c574eb3c3e1e05" - integrity sha512-11Ndz7Nv+mvAC1j0ktTa7fAb0vLyGGX+rMHNBYQviQDGU0Hw7lhctJANqbPhu9nV9/izT/IntTgZ7Im/9LJs9g== - -extsprintf@^1.2.0: - version "1.4.1" - resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.4.1.tgz#8d172c064867f235c0c84a596806d279bf4bcc07" - integrity sha512-Wrk35e8ydCKDj/ArClo1VrPVmN8zph5V4AtHwIuHhvMXsKf73UT3BOD+azBIW+3wOJ4FhEH7zyaJCFvChjYvMA== - fast-deep-equal@^3.1.1, fast-deep-equal@^3.1.3: version "3.1.3" resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525" @@ -4580,7 +4535,7 @@ fecha@^4.2.0: resolved "https://registry.yarnpkg.com/fecha/-/fecha-4.2.3.tgz#4d9ccdbc61e8629b259fdca67e65891448d569fd" integrity sha512-OP2IUU6HeYKJi3i0z4A19kHMQoLVs4Hc+DPqqxI2h/DPZHTm/vjsfC6P0b4jCMy14XizLBqvndQ+UilD7707Jw== -figures@^3.0.0: +figures@^3.0.0, figures@^3.2.0: version "3.2.0" resolved "https://registry.yarnpkg.com/figures/-/figures-3.2.0.tgz#625c18bd293c604dc4a8ddb2febf0c88341746af" integrity sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg== @@ -4594,11 +4549,6 @@ file-entry-cache@^6.0.1: dependencies: flat-cache "^3.0.4" -file-uri-to-path@2: - version "2.0.0" - resolved "https://registry.yarnpkg.com/file-uri-to-path/-/file-uri-to-path-2.0.0.tgz#7b415aeba227d575851e0a5b0c640d7656403fba" - integrity sha512-hjPFI8oE/2iQPVe4gbrJ73Pp+Xfub2+WI2LlXDbsaJBwT5wuMh35WNWVYYTpnz895shtwfyutMFLFywpQAFdLg== - filesize@^6.1.0: version "6.4.0" resolved "https://registry.yarnpkg.com/filesize/-/filesize-6.4.0.tgz#914f50471dd66fdca3cefe628bd0cde4ef769bcd" @@ -4658,10 +4608,10 @@ find-up@^5.0.0: locate-path "^6.0.0" path-exists "^4.0.0" -firebase-tools@^11.0.1: - version "11.30.0" - resolved "https://registry.yarnpkg.com/firebase-tools/-/firebase-tools-11.30.0.tgz#37caa55f43f6bd2cc1868c4982266dd50db6781c" - integrity sha512-rNMhtsFKy35AZqfy0obY2Kgsfmg8N1duEx2UDT14NsMHB7xt2Z7cUd92bkAoQAfD0jAOd7LhRT/7E6J5yB+kGw== +firebase-tools@^13.6.0: + version "13.6.0" + resolved "https://registry.yarnpkg.com/firebase-tools/-/firebase-tools-13.6.0.tgz#c71278868f192f5a0a7e0ad3a9227e2810e66bff" + integrity sha512-BXXkFkw8FupINBJHd+aPFRKpvIf8R5P1GyOnWjwsk06kgXXdfFuuYctxkL8e82N4sUomdNP5Q/ru/u2esnoSQA== dependencies: "@google-cloud/pubsub" "^3.0.1" abort-controller "^3.0.0" @@ -4679,15 +4629,18 @@ firebase-tools@^11.0.1: cross-env "^5.1.3" cross-spawn "^7.0.3" csv-parse "^5.0.4" + deep-equal-in-any-order "^2.0.6" exegesis "^4.1.0" exegesis-express "^4.0.0" express "^4.16.4" filesize "^6.1.0" form-data "^4.0.0" fs-extra "^10.1.0" + fuzzy "^0.1.3" glob "^7.1.2" google-auth-library "^7.11.0" - inquirer "^8.2.0" + inquirer "^8.2.6" + inquirer-autocomplete-prompt "^2.0.1" js-yaml "^3.13.1" jsonwebtoken "^9.0.0" leven "^3.1.0" @@ -4704,11 +4657,10 @@ firebase-tools@^11.0.1: p-limit "^3.0.1" portfinder "^1.0.32" progress "^2.0.3" - proxy-agent "^5.0.0" - request "^2.87.0" + proxy-agent "^6.3.0" retry "^0.13.1" rimraf "^3.0.0" - semver "^5.7.1" + semver "^7.5.2" stream-chain "^2.2.4" stream-json "^1.7.3" strip-ansi "^6.0.1" @@ -4758,11 +4710,6 @@ foreground-child@^3.1.0: cross-spawn "^7.0.0" signal-exit "^4.0.1" -forever-agent@~0.6.1: - version "0.6.1" - resolved "https://registry.yarnpkg.com/forever-agent/-/forever-agent-0.6.1.tgz#fbc71f0c41adeb37f96c577ad1ed42d8fdacca91" - integrity sha512-j0KLYPhm6zeac4lz3oJ3o65qvgQCcPubiyotZrXqEaG4hNagNYO8qdlUrX5vwqv9ohqeT/Z3j6+yW067yWWdUw== - form-data@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/form-data/-/form-data-4.0.0.tgz#93919daeaf361ee529584b9b31664dc12c9fa452" @@ -4772,15 +4719,6 @@ form-data@^4.0.0: combined-stream "^1.0.8" mime-types "^2.1.12" -form-data@~2.3.2: - version "2.3.3" - resolved "https://registry.yarnpkg.com/form-data/-/form-data-2.3.3.tgz#dcce52c05f644f298c6a7ab936bd724ceffbf3a6" - integrity sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ== - dependencies: - asynckit "^0.4.0" - combined-stream "^1.0.6" - mime-types "^2.1.12" - forwarded@0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/forwarded/-/forwarded-0.2.0.tgz#2269936428aad4c15c7ebe9779a84bf0b2a81811" @@ -4805,14 +4743,14 @@ fs-extra@^10.1.0: jsonfile "^6.0.1" universalify "^2.0.0" -fs-extra@^8.1.0: - version "8.1.0" - resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-8.1.0.tgz#49d43c45a88cd9677668cb7be1b46efdb8d2e1c0" - integrity sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g== +fs-extra@^11.2.0: + version "11.2.0" + resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-11.2.0.tgz#e70e17dfad64232287d01929399e0ea7c86b0e5b" + integrity sha512-PmDi3uwK5nFuXh7XDTlVnS17xJS7vW36is2+w3xcv8SVxiB4NyATf4ctkVY5bkSjX0Y4nbvZCq1/EjtEyr9ktw== dependencies: graceful-fs "^4.2.0" - jsonfile "^4.0.0" - universalify "^0.1.0" + jsonfile "^6.0.1" + universalify "^2.0.0" fs-minipass@^2.0.0: version "2.1.0" @@ -4838,14 +4776,6 @@ fsevents@^2.3.2, fsevents@~2.3.2: resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.3.tgz#cac6407785d03675a2a5e1a5305c697b347d90d6" integrity sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw== -ftp@^0.3.10: - version "0.3.10" - resolved "https://registry.yarnpkg.com/ftp/-/ftp-0.3.10.tgz#9197d861ad8142f3e63d5a83bfe4c59f7330885d" - integrity sha512-faFVML1aBx2UoDStmLwv2Wptt4vw5x03xxX172nhA5Y5HBshW5JweqQ2W4xL4dezQTG8inJsuYcpPHHU3X5OTQ== - dependencies: - readable-stream "1.1.x" - xregexp "2.0.0" - function-bind@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" @@ -4866,6 +4796,11 @@ functions-have-names@^1.2.3: resolved "https://registry.yarnpkg.com/functions-have-names/-/functions-have-names-1.2.3.tgz#0404fe4ee2ba2f607f0e0ec3c80bae994133b834" integrity sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ== +fuzzy@^0.1.3: + version "0.1.3" + resolved "https://registry.yarnpkg.com/fuzzy/-/fuzzy-0.1.3.tgz#4c76ec2ff0ac1a36a9dccf9a00df8623078d4ed8" + integrity sha512-/gZffu4ykarLrCiP3Ygsa86UAo1E5vEVlvTrpkKywXSbP9Xhln3oSp9QSV57gEq3JFFpGJ4GZ+5zdEp3FcUh4w== + gauge@^4.0.3: version "4.0.4" resolved "https://registry.yarnpkg.com/gauge/-/gauge-4.0.4.tgz#52ff0652f2bbf607a989793d53b751bef2328dce" @@ -4955,24 +4890,15 @@ get-symbol-description@^1.0.0: call-bind "^1.0.2" get-intrinsic "^1.1.1" -get-uri@3: - version "3.0.2" - resolved "https://registry.yarnpkg.com/get-uri/-/get-uri-3.0.2.tgz#f0ef1356faabc70e1f9404fa3b66b2ba9bfc725c" - integrity sha512-+5s0SJbGoyiJTZZ2JTpFPLMPSch72KEqGOTvQsBqg0RBWvwhWUSYZFAtz3TPW0GXJuLBJPts1E241iHg+VRfhg== - dependencies: - "@tootallnate/once" "1" - data-uri-to-buffer "3" - debug "4" - file-uri-to-path "2" - fs-extra "^8.1.0" - ftp "^0.3.10" - -getpass@^0.1.1: - version "0.1.7" - resolved "https://registry.yarnpkg.com/getpass/-/getpass-0.1.7.tgz#5eff8e3e684d569ae4cb2b1282604e8ba62149fa" - integrity sha512-0fzj9JxOLfJ+XGLhR8ze3unN0KZCgZwiSSDz168VERjK8Wl8kVSdcu2kspd4s4wtAa1y/qrVRiAA0WclVsu0ng== +get-uri@^6.0.1: + version "6.0.3" + resolved "https://registry.yarnpkg.com/get-uri/-/get-uri-6.0.3.tgz#0d26697bc13cf91092e519aa63aa60ee5b6f385a" + integrity sha512-BzUrJBS9EcUb4cFol8r4W3v1cPsSyajLSthNkz5BxbpDcHN5tIrM10E2eNvfnvBn3DaT3DUgx0OpsBKkaOpanw== dependencies: - assert-plus "^1.0.0" + basic-ftp "^5.0.2" + data-uri-to-buffer "^6.0.2" + debug "^4.3.4" + fs-extra "^11.2.0" github-url-from-git@^1.3.0: version "1.5.0" @@ -5207,19 +5133,6 @@ gtoken@^6.1.0: google-p12-pem "^4.0.0" jws "^4.0.0" -har-schema@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/har-schema/-/har-schema-2.0.0.tgz#a94c2224ebcac04782a0d9035521f24735b7ec92" - integrity sha512-Oqluz6zhGX8cyRaTQlFMPw80bSJVG2x/cFb8ZPhUILGgHka9SsokCCOQgpveePerqidZOrT14ipqfJb7ILcW5Q== - -har-validator@~5.1.3: - version "5.1.5" - resolved "https://registry.yarnpkg.com/har-validator/-/har-validator-5.1.5.tgz#1f0803b9f8cb20c0fa13822df1ecddb36bde1efd" - integrity sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w== - dependencies: - ajv "^6.12.3" - har-schema "^2.0.0" - harmony-reflect@^1.4.6: version "1.6.2" resolved "https://registry.yarnpkg.com/harmony-reflect/-/harmony-reflect-1.6.2.tgz#31ecbd32e648a34d030d86adb67d4d47547fe710" @@ -5335,15 +5248,6 @@ http-errors@2.0.0: statuses "2.0.1" toidentifier "1.0.1" -http-proxy-agent@^4.0.0, http-proxy-agent@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/http-proxy-agent/-/http-proxy-agent-4.0.1.tgz#8a8c8ef7f5932ccf953c296ca8291b95aa74aa3a" - integrity sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg== - dependencies: - "@tootallnate/once" "1" - agent-base "6" - debug "4" - http-proxy-agent@^5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/http-proxy-agent/-/http-proxy-agent-5.0.0.tgz#5129800203520d434f142bc78ff3c170800f2b43" @@ -5353,16 +5257,15 @@ http-proxy-agent@^5.0.0: agent-base "6" debug "4" -http-signature@~1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/http-signature/-/http-signature-1.2.0.tgz#9aecd925114772f3d95b65a60abb8f7c18fbace1" - integrity sha512-CAbnr6Rz4CYQkLYUtSNXxQPUH2gK8f3iWexVlsnMeD+GjlsQ0Xsy1cOX+mN3dtxYomRy21CiOzU8Uhw6OwncEQ== +http-proxy-agent@^7.0.0, http-proxy-agent@^7.0.1: + version "7.0.2" + resolved "https://registry.yarnpkg.com/http-proxy-agent/-/http-proxy-agent-7.0.2.tgz#9a8b1f246866c028509486585f62b8f2c18c270e" + integrity sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig== dependencies: - assert-plus "^1.0.0" - jsprim "^1.2.2" - sshpk "^1.7.0" + agent-base "^7.1.0" + debug "^4.3.4" -https-proxy-agent@5, https-proxy-agent@^5.0.0, https-proxy-agent@^5.0.1: +https-proxy-agent@^5.0.0, https-proxy-agent@^5.0.1: version "5.0.1" resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz#c59ef224a04fe8b754f3db0063a25ea30d0005d6" integrity sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA== @@ -5370,6 +5273,14 @@ https-proxy-agent@5, https-proxy-agent@^5.0.0, https-proxy-agent@^5.0.1: agent-base "6" debug "4" +https-proxy-agent@^7.0.2, https-proxy-agent@^7.0.3: + version "7.0.4" + resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-7.0.4.tgz#8e97b841a029ad8ddc8731f26595bad868cb4168" + integrity sha512-wlwpilI7YdjSkWaQ/7omYBMTliDcmCN8OLihO6I9B86g06lMyAoqgoDpV0XqoaPOKj+0DIdAvnsWfyAAhmimcg== + dependencies: + agent-base "^7.0.2" + debug "4" + human-signals@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/human-signals/-/human-signals-2.1.0.tgz#dc91fcba42e4d06e4abaed33b3e7a3c02f514ea0" @@ -5466,7 +5377,7 @@ inflight@^1.0.4: once "^1.3.0" wrappy "1" -inherits@2, inherits@2.0.4, inherits@^2.0.3, inherits@^2.0.4, inherits@~2.0.1, inherits@~2.0.3: +inherits@2, inherits@2.0.4, inherits@^2.0.3, inherits@^2.0.4, inherits@~2.0.3: version "2.0.4" resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== @@ -5481,7 +5392,18 @@ ini@^1.3.4, ini@~1.3.0: resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.8.tgz#a29da425b48806f34767a4efce397269af28432c" integrity sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew== -inquirer@^8.2.0: +inquirer-autocomplete-prompt@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/inquirer-autocomplete-prompt/-/inquirer-autocomplete-prompt-2.0.1.tgz#72868aada4d9d36814a6054cbd1ececc63aab0c6" + integrity sha512-jUHrH0btO7j5r8DTQgANf2CBkTZChoVySD8zF/wp5fZCOLIuUbleXhf4ZY5jNBOc1owA3gdfWtfZuppfYBhcUg== + dependencies: + ansi-escapes "^4.3.2" + figures "^3.2.0" + picocolors "^1.0.0" + run-async "^2.4.1" + rxjs "^7.5.4" + +inquirer@^8.2.6: version "8.2.6" resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-8.2.6.tgz#733b74888195d8d400a67ac332011b5fae5ea562" integrity sha512-M1WuAmb7pn9zdFRtQYk26ZBoY043Sse0wVDdk4Bppr+JOXyQYybdtvK+l9wUibhtjdjvtoiNy8tk+EgsYIUqKg== @@ -5516,16 +5438,19 @@ internal-slot@^1.0.4, internal-slot@^1.0.5: has "^1.0.3" side-channel "^1.0.4" +ip-address@^9.0.5: + version "9.0.5" + resolved "https://registry.yarnpkg.com/ip-address/-/ip-address-9.0.5.tgz#117a960819b08780c3bd1f14ef3c1cc1d3f3ea5a" + integrity sha512-zHtQzGojZXTwZTHQqra+ETKd4Sn3vgi7uBmlPoXVWZqYvuKmtI0l/VZTjqGmJY9x88GGOaZ9+G9ES8hC4T4X8g== + dependencies: + jsbn "1.1.0" + sprintf-js "^1.1.3" + ip-regex@^4.1.0: version "4.3.0" resolved "https://registry.yarnpkg.com/ip-regex/-/ip-regex-4.3.0.tgz#687275ab0f57fa76978ff8f4dddc8a23d5990db5" integrity sha512-B9ZWJxHHOHUhUjCPrMpLD4xEq35bUTClHM1S6CBU5ixQnkZmwipwgc96vAd7AAGM9TGHvJR+Uss+/Ak6UphK+Q== -ip@^1.1.5: - version "1.1.9" - resolved "https://registry.yarnpkg.com/ip/-/ip-1.1.9.tgz#8dfbcc99a754d07f425310b86a99546b1151e396" - integrity sha512-cyRxvOEpNHNtchU3Ln9KC/auJgup87llfQpQ+t5ghoC/UhL16SWzbueiCsdTnWmqAWl7LadfuwhlqmtOaqMHdQ== - ip@^2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/ip/-/ip-2.0.1.tgz#e8f3595d33a3ea66490204234b77636965307105" @@ -5765,7 +5690,7 @@ is-typed-array@^1.1.10, is-typed-array@^1.1.12, is-typed-array@^1.1.9: dependencies: which-typed-array "^1.1.11" -is-typedarray@^1.0.0, is-typedarray@~1.0.0: +is-typedarray@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a" integrity sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA== @@ -5847,11 +5772,6 @@ isomorphic-fetch@^3.0.0: node-fetch "^2.6.1" whatwg-fetch "^3.4.1" -isstream@~0.1.2: - version "0.1.2" - resolved "https://registry.yarnpkg.com/isstream/-/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a" - integrity sha512-Yljz7ffyPbrLpLngrMtZ7NduUgVvi6wG9RJ9IUcyCd59YQ911PBJphODUcbOVbqYfxe1wuYf/LJ8PauMRwsM/g== - istanbul-lib-coverage@^3.0.0, istanbul-lib-coverage@^3.2.0: version "3.2.0" resolved "https://registry.yarnpkg.com/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.0.tgz#189e7909d0a39fa5a3dfad5b03f71947770191d3" @@ -6413,10 +6333,10 @@ js2xmlparser@^4.0.2: dependencies: xmlcreate "^2.0.4" -jsbn@~0.1.0: - version "0.1.1" - resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-0.1.1.tgz#a5e654c2e5a2deb5f201d96cefbca80c0ef2f513" - integrity sha512-UVU9dibq2JcFWxQPA6KCqj5O42VOmAY3zQUfEKxU0KpTGXwNoCjkX1e13eHNvw/xPynt6pU0rZ1htjWTNTSXsg== +jsbn@1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-1.1.0.tgz#b01307cb29b618a1ed26ec79e911f803c4da0040" + integrity sha512-4bYVV3aAMtDTTu4+xsDYa6sy9GyJ69/amsu9sYF2zqjiEoZA5xJi3BrfX3uY+/IekIu7MwdObdbDWpoZdBv3/A== jsdoc@^4.0.0: version "4.0.2" @@ -6520,33 +6440,16 @@ json-schema-traverse@^1.0.0: resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz#ae7bcb3656ab77a73ba5c49bf654f38e6b6860e2" integrity sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug== -json-schema@0.4.0: - version "0.4.0" - resolved "https://registry.yarnpkg.com/json-schema/-/json-schema-0.4.0.tgz#f7de4cf6efab838ebaeb3236474cbba5a1930ab5" - integrity sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA== - json-stable-stringify-without-jsonify@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz#9db7b59496ad3f3cfef30a75142d2d930ad72651" integrity sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw== -json-stringify-safe@~5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb" - integrity sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA== - json5@^2.2.3: version "2.2.3" resolved "https://registry.yarnpkg.com/json5/-/json5-2.2.3.tgz#78cd6f1a19bdc12b73db5ad0c61efd66c1e29283" integrity sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg== -jsonfile@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-4.0.0.tgz#8771aae0799b64076b76640fca058f9c10e33ecb" - integrity sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg== - optionalDependencies: - graceful-fs "^4.1.6" - jsonfile@^6.0.1: version "6.1.0" resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-6.1.0.tgz#bc55b2634793c679ec6403094eb13698a6ec0aae" @@ -6572,16 +6475,6 @@ jsonwebtoken@^9.0.0: ms "^2.1.1" semver "^7.5.4" -jsprim@^1.2.2: - version "1.4.2" - resolved "https://registry.yarnpkg.com/jsprim/-/jsprim-1.4.2.tgz#712c65533a15c878ba59e9ed5f0e26d5b77c5feb" - integrity sha512-P2bSOMAc/ciLz6DzgjVlGJP9+BrJWu5UDGK70C2iweC5QBIeFf0ZXRvGjEj2uYgrY2MkAAhsSWHDWlFtEroZWw== - dependencies: - assert-plus "1.0.0" - extsprintf "1.3.0" - json-schema "0.4.0" - verror "1.10.0" - "jsx-ast-utils@^2.4.1 || ^3.0.0": version "3.3.5" resolved "https://registry.yarnpkg.com/jsx-ast-utils/-/jsx-ast-utils-3.3.5.tgz#4766bd05a8e2a11af222becd19e15575e52a853a" @@ -6793,6 +6686,11 @@ lodash.isstring@^4.0.1: resolved "https://registry.yarnpkg.com/lodash.isstring/-/lodash.isstring-4.0.1.tgz#d527dfb5456eca7cc9bb95d5daeaf88ba54a5451" integrity sha512-0wJxfxH1wgO3GrbuP+dTTk7op+6L41QCXbGINEmD+ny/G/eCqGzxyCsh7159S+mgDDcoarnBw6PC1PS5+wUGgw== +lodash.mapvalues@^4.6.0: + version "4.6.0" + resolved "https://registry.yarnpkg.com/lodash.mapvalues/-/lodash.mapvalues-4.6.0.tgz#1bafa5005de9dd6f4f26668c30ca37230cc9689c" + integrity sha512-JPFqXFeZQ7BfS00H58kClY7SPVeHertPE0lNuCyZ26/XlN8TvakYD7b9bGyNmXbT/D3BbtPAAmq90gPWqLkxlQ== + lodash.memoize@4.x: version "4.1.2" resolved "https://registry.yarnpkg.com/lodash.memoize/-/lodash.memoize-4.1.2.tgz#bcc6c49a42a2840ed997f323eada5ecd182e0bfe" @@ -6869,7 +6767,7 @@ lru-cache@^6.0.0: dependencies: yallist "^4.0.0" -lru-cache@^7.7.1: +lru-cache@^7.14.1, lru-cache@^7.7.1: version "7.18.3" resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-7.18.3.tgz#f793896e0fd0e954a59dfdd82f0773808df6aa89" integrity sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA== @@ -7007,7 +6905,7 @@ mime-db@1.52.0, "mime-db@>= 1.43.0 < 2": resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.52.0.tgz#bbabcdc02859f4987301c856e3387ce5ec43bf70" integrity sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg== -mime-types@^2.1.12, mime-types@^2.1.35, mime-types@~2.1.19, mime-types@~2.1.24, mime-types@~2.1.34: +mime-types@^2.1.12, mime-types@^2.1.35, mime-types@~2.1.24, mime-types@~2.1.34: version "2.1.35" resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.35.tgz#381a871b62a734450660ae3deee44813f70d959a" integrity sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw== @@ -7337,11 +7235,6 @@ nwsapi@^2.2.2: resolved "https://registry.yarnpkg.com/nwsapi/-/nwsapi-2.2.7.tgz#738e0707d3128cb750dddcfe90e4610482df0f30" integrity sha512-ub5E4+FBPKwAZx0UwIQOjYWGHTEq5sPqHQNRN8Z9e4A7u3Tj1weLJsL59yH9vmvqEtBHaOmT6cYQKIZOxp35FQ== -oauth-sign@~0.9.0: - version "0.9.0" - resolved "https://registry.yarnpkg.com/oauth-sign/-/oauth-sign-0.9.0.tgz#47a7b016baa68b5fa0ecf3dee08a85c679ac6455" - integrity sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ== - object-assign@^4, object-assign@^4.1.1: version "4.1.1" resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" @@ -7558,28 +7451,26 @@ p-try@^2.0.0: resolved "https://registry.yarnpkg.com/p-try/-/p-try-2.2.0.tgz#cb2868540e313d61de58fafbe35ce9004d5540e6" integrity sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ== -pac-proxy-agent@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/pac-proxy-agent/-/pac-proxy-agent-5.0.0.tgz#b718f76475a6a5415c2efbe256c1c971c84f635e" - integrity sha512-CcFG3ZtnxO8McDigozwE3AqAw15zDvGH+OjXO4kzf7IkEKkQ4gxQ+3sdF50WmhQ4P/bVusXcqNE2S3XrNURwzQ== +pac-proxy-agent@^7.0.1: + version "7.0.1" + resolved "https://registry.yarnpkg.com/pac-proxy-agent/-/pac-proxy-agent-7.0.1.tgz#6b9ddc002ec3ff0ba5fdf4a8a21d363bcc612d75" + integrity sha512-ASV8yU4LLKBAjqIPMbrgtaKIvxQri/yh2OpI+S6hVa9JRkUI3Y3NPFbfngDtY7oFtSMD3w31Xns89mDa3Feo5A== dependencies: - "@tootallnate/once" "1" - agent-base "6" - debug "4" - get-uri "3" - http-proxy-agent "^4.0.1" - https-proxy-agent "5" - pac-resolver "^5.0.0" - raw-body "^2.2.0" - socks-proxy-agent "5" - -pac-resolver@^5.0.0: - version "5.0.1" - resolved "https://registry.yarnpkg.com/pac-resolver/-/pac-resolver-5.0.1.tgz#c91efa3a9af9f669104fa2f51102839d01cde8e7" - integrity sha512-cy7u00ko2KVgBAjuhevqpPeHIkCIqPe1v24cydhWjmeuzaBfmUWFCZJ1iAh5TuVzVZoUzXIW7K8sMYOZ84uZ9Q== + "@tootallnate/quickjs-emscripten" "^0.23.0" + agent-base "^7.0.2" + debug "^4.3.4" + get-uri "^6.0.1" + http-proxy-agent "^7.0.0" + https-proxy-agent "^7.0.2" + pac-resolver "^7.0.0" + socks-proxy-agent "^8.0.2" + +pac-resolver@^7.0.0: + version "7.0.1" + resolved "https://registry.yarnpkg.com/pac-resolver/-/pac-resolver-7.0.1.tgz#54675558ea368b64d210fd9c92a640b5f3b8abb6" + integrity sha512-5NPgf87AT2STgwa2ntRMr45jTKrYBGkVU36yT0ig/n/GMAa3oPqhZfIQ2kMEimReg0+t9kZViDVZ83qfVUlckg== dependencies: - degenerator "^3.0.2" - ip "^1.1.5" + degenerator "^5.0.0" netmask "^2.0.2" parent-module@^1.0.0: @@ -7661,11 +7552,6 @@ path-type@^4.0.0: resolved "https://registry.yarnpkg.com/path-type/-/path-type-4.0.0.tgz#84ed01c0a7ba380afe09d90a8c180dcd9d03043b" integrity sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw== -performance-now@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/performance-now/-/performance-now-2.1.0.tgz#6309f4e0e5fa913ec1c69307ae364b4b377c9e7b" - integrity sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow== - picocolors@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.0.0.tgz#cb5bdc74ff3f51892236eaf79d68bc44564ab81c" @@ -7842,26 +7728,26 @@ proxy-addr@~2.0.7: forwarded "0.2.0" ipaddr.js "1.9.1" -proxy-agent@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/proxy-agent/-/proxy-agent-5.0.0.tgz#d31405c10d6e8431fde96cba7a0c027ce01d633b" - integrity sha512-gkH7BkvLVkSfX9Dk27W6TyNOWWZWRilRfk1XxGNWOYJ2TuedAv1yFpCaU9QSBmBe716XOTNpYNOzhysyw8xn7g== +proxy-agent@^6.3.0: + version "6.4.0" + resolved "https://registry.yarnpkg.com/proxy-agent/-/proxy-agent-6.4.0.tgz#b4e2dd51dee2b377748aef8d45604c2d7608652d" + integrity sha512-u0piLU+nCOHMgGjRbimiXmA9kM/L9EHh3zL81xCdp7m+Y2pHIsnmbdDoEDoAz5geaonNR6q6+yOPQs6n4T6sBQ== dependencies: - agent-base "^6.0.0" - debug "4" - http-proxy-agent "^4.0.0" - https-proxy-agent "^5.0.0" - lru-cache "^5.1.1" - pac-proxy-agent "^5.0.0" - proxy-from-env "^1.0.0" - socks-proxy-agent "^5.0.0" - -proxy-from-env@^1.0.0: + agent-base "^7.0.2" + debug "^4.3.4" + http-proxy-agent "^7.0.1" + https-proxy-agent "^7.0.3" + lru-cache "^7.14.1" + pac-proxy-agent "^7.0.1" + proxy-from-env "^1.1.0" + socks-proxy-agent "^8.0.2" + +proxy-from-env@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/proxy-from-env/-/proxy-from-env-1.1.0.tgz#e102f16ca355424865755d2c9e8ea4f24d58c3e2" integrity sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg== -psl@^1.1.28, psl@^1.1.33: +psl@^1.1.33: version "1.9.0" resolved "https://registry.yarnpkg.com/psl/-/psl-1.9.0.tgz#d0df2a137f00794565fcaf3b2c00cd09f8d5a5a7" integrity sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag== @@ -7910,11 +7796,6 @@ qs@^6.6.0: dependencies: side-channel "^1.0.4" -qs@~6.5.2: - version "6.5.3" - resolved "https://registry.yarnpkg.com/qs/-/qs-6.5.3.tgz#3aeeffc91967ef6e35c0e488ef46fb296ab76aad" - integrity sha512-qxXIEh4pCGfHICj1mAJQ2/2XVZkjCDTcEgfoSQxc/fYivUZxTkk7L3bDBJSoNrEzXI17oUO5Dp07ktqE5KzczA== - querystringify@^2.1.1: version "2.2.0" resolved "https://registry.yarnpkg.com/querystringify/-/querystringify-2.2.0.tgz#3345941b4153cb9d082d8eee4cda2016a9aef7f6" @@ -7930,7 +7811,7 @@ range-parser@~1.2.1: resolved "https://registry.yarnpkg.com/range-parser/-/range-parser-1.2.1.tgz#3cf37023d199e1c24d1a55b84800c2f3e6468031" integrity sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg== -raw-body@2.5.2, raw-body@^2.2.0, raw-body@^2.3.3: +raw-body@2.5.2, raw-body@^2.3.3: version "2.5.2" resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-2.5.2.tgz#99febd83b90e08975087e8f1f9419a149366b68a" integrity sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA== @@ -8047,16 +7928,6 @@ read-package-json@1: optionalDependencies: graceful-fs "2 || 3" -readable-stream@1.1.x: - version "1.1.14" - resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-1.1.14.tgz#7cf4c54ef648e3813084c636dd2079e166c081d9" - integrity sha512-+MeVjFf4L44XUkhM1eYbD8fyEsxcV81pqMSR5gblfcLCHfZvbrqy4/qYHE+/R5HoBUT11WV5O08Cr1n3YXkWVQ== - dependencies: - core-util-is "~1.0.0" - inherits "~2.0.1" - isarray "0.0.1" - string_decoder "~0.10.x" - readable-stream@^2.0.0, readable-stream@^2.0.5: version "2.3.8" resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.8.tgz#91125e8042bba1b9887f49345f6277027ce8be9b" @@ -8201,32 +8072,6 @@ regjsparser@^0.9.1: dependencies: jsesc "~0.5.0" -request@^2.87.0: - version "2.88.2" - resolved "https://registry.yarnpkg.com/request/-/request-2.88.2.tgz#d73c918731cb5a87da047e207234146f664d12b3" - integrity sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw== - dependencies: - aws-sign2 "~0.7.0" - aws4 "^1.8.0" - caseless "~0.12.0" - combined-stream "~1.0.6" - extend "~3.0.2" - forever-agent "~0.6.1" - form-data "~2.3.2" - har-validator "~5.1.3" - http-signature "~1.2.0" - is-typedarray "~1.0.0" - isstream "~0.1.2" - json-stringify-safe "~5.0.1" - mime-types "~2.1.19" - oauth-sign "~0.9.0" - performance-now "^2.1.0" - qs "~6.5.2" - safe-buffer "^5.1.2" - tough-cookie "~2.5.0" - tunnel-agent "^0.6.0" - uuid "^3.3.2" - require-directory@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" @@ -8340,7 +8185,7 @@ router@^1.3.1: setprototypeof "1.2.0" utils-merge "1.0.1" -run-async@^2.4.0: +run-async@^2.4.0, run-async@^2.4.1: version "2.4.1" resolved "https://registry.yarnpkg.com/run-async/-/run-async-2.4.1.tgz#8440eccf99ea3e70bd409d49aab88e10c189a455" integrity sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ== @@ -8352,7 +8197,7 @@ run-parallel@^1.1.9: dependencies: queue-microtask "^1.2.2" -rxjs@^7.5.5: +rxjs@^7.5.4, rxjs@^7.5.5: version "7.8.1" resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-7.8.1.tgz#6f6f3d99ea8044291efd92e7c7fcf562c4057543" integrity sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg== @@ -8374,7 +8219,7 @@ safe-buffer@5.1.2, safe-buffer@~5.1.0, safe-buffer@~5.1.1: resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== -safe-buffer@5.2.1, safe-buffer@^5.0.1, safe-buffer@^5.1.2, safe-buffer@~5.2.0: +safe-buffer@5.2.1, safe-buffer@^5.0.1, safe-buffer@~5.2.0: version "5.2.1" resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== @@ -8393,7 +8238,7 @@ safe-stable-stringify@^2.3.1: resolved "https://registry.yarnpkg.com/safe-stable-stringify/-/safe-stable-stringify-2.4.3.tgz#138c84b6f6edb3db5f8ef3ef7115b8f55ccbf886" integrity sha512-e2bDA2WJT0wxseVd4lsDP4+3ONX6HpMXQa1ZhFQ7SU+GjvORCmShbCMltrtIDfkYhVHrOcPtj+KhmDBdPdZD1g== -"safer-buffer@>= 2.1.2 < 3", "safer-buffer@>= 2.1.2 < 3.0.0", safer-buffer@^2.0.2, safer-buffer@^2.1.0, safer-buffer@~2.1.0: +"safer-buffer@>= 2.1.2 < 3", "safer-buffer@>= 2.1.2 < 3.0.0": version "2.1.2" resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== @@ -8424,7 +8269,7 @@ semver-diff@^3.1.1: resolved "https://registry.yarnpkg.com/semver/-/semver-4.3.6.tgz#300bc6e0e86374f7ba61068b5b1ecd57fc6532da" integrity sha512-IrpJ+yoG4EOH8DFWuVg+8H1kW1Oaof0Wxe7cPcXW3x9BjkN/eVo54F15LyqemnDIUYskQWr9qvl/RihmSy6+xQ== -semver@^5.5.0, semver@^5.7.1: +semver@^5.5.0: version "5.7.2" resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.2.tgz#48d55db737c3287cd4835e17fa13feace1c41ef8" integrity sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g== @@ -8434,10 +8279,10 @@ semver@^6.0.0, semver@^6.3.0, semver@^6.3.1: resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.1.tgz#556d2ef8689146e46dcea4bfdd095f3434dffcb4" integrity sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA== -semver@^7.0.0, semver@^7.1.2, semver@^7.3.5, semver@^7.3.7, semver@^7.5.3, semver@^7.5.4: - version "7.5.4" - resolved "https://registry.yarnpkg.com/semver/-/semver-7.5.4.tgz#483986ec4ed38e1c6c48c34894a9182dbff68a6e" - integrity sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA== +semver@^7.0.0, semver@^7.1.2, semver@^7.3.5, semver@^7.3.7, semver@^7.5.2, semver@^7.5.3, semver@^7.5.4: + version "7.6.0" + resolved "https://registry.yarnpkg.com/semver/-/semver-7.6.0.tgz#1a46a4db4bffcccd97b743b5005c8325f23d4e2d" + integrity sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg== dependencies: lru-cache "^6.0.0" @@ -8559,15 +8404,6 @@ smart-buffer@^4.2.0: resolved "https://registry.yarnpkg.com/smart-buffer/-/smart-buffer-4.2.0.tgz#6e1d71fa4f18c05f7d0ff216dd16a481d0e8d9ae" integrity sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg== -socks-proxy-agent@5, socks-proxy-agent@^5.0.0: - version "5.0.1" - resolved "https://registry.yarnpkg.com/socks-proxy-agent/-/socks-proxy-agent-5.0.1.tgz#032fb583048a29ebffec2e6a73fca0761f48177e" - integrity sha512-vZdmnjb9a2Tz6WEQVIurybSwElwPxMZaIc7PzqbJTrezcKNznv6giT7J7tZDZ1BojVaa1jvO/UiUdhDVB0ACoQ== - dependencies: - agent-base "^6.0.2" - debug "4" - socks "^2.3.3" - socks-proxy-agent@^7.0.0: version "7.0.0" resolved "https://registry.yarnpkg.com/socks-proxy-agent/-/socks-proxy-agent-7.0.0.tgz#dc069ecf34436621acb41e3efa66ca1b5fed15b6" @@ -8577,7 +8413,16 @@ socks-proxy-agent@^7.0.0: debug "^4.3.3" socks "^2.6.2" -socks@^2.3.3, socks@^2.6.2: +socks-proxy-agent@^8.0.2: + version "8.0.3" + resolved "https://registry.yarnpkg.com/socks-proxy-agent/-/socks-proxy-agent-8.0.3.tgz#6b2da3d77364fde6292e810b496cb70440b9b89d" + integrity sha512-VNegTZKhuGq5vSD6XNKlbqWhyt/40CgoEw8XxD6dhnm8Jq9IEa3nIa4HwnM8XOqU0CdB0BwWVXusqiFXfHB3+A== + dependencies: + agent-base "^7.1.1" + debug "^4.3.4" + socks "^2.7.1" + +socks@^2.6.2: version "2.7.1" resolved "https://registry.yarnpkg.com/socks/-/socks-2.7.1.tgz#d8e651247178fde79c0663043e07240196857d55" integrity sha512-7maUZy1N7uo6+WVEX6psASxtNlKaNVMlGQKkG/63nEDdLOWNbiUMoLK7X4uYoLhQstau72mLgfEWcXcwsaHbYQ== @@ -8585,6 +8430,21 @@ socks@^2.3.3, socks@^2.6.2: ip "^2.0.0" smart-buffer "^4.2.0" +socks@^2.7.1: + version "2.8.3" + resolved "https://registry.yarnpkg.com/socks/-/socks-2.8.3.tgz#1ebd0f09c52ba95a09750afe3f3f9f724a800cb5" + integrity sha512-l5x7VUUWbjVFbafGLxPWkYsHIhEvmF85tbIeFZWc8ZPtoMyybuEhL7Jye/ooC4/d48FgOjSJXgsF/AJPYCW8Zw== + dependencies: + ip-address "^9.0.5" + smart-buffer "^4.2.0" + +sort-any@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/sort-any/-/sort-any-2.0.0.tgz#62a5409c9905c9483f03e41e17f46cc451aa7c55" + integrity sha512-T9JoiDewQEmWcnmPn/s9h/PH9t3d/LSWi0RgVmXSuDYeZXTZOZ1/wrK2PHaptuR1VXe3clLLt0pD6sgVOwjNEA== + dependencies: + lodash "^4.17.21" + source-map-support@0.5.13: version "0.5.13" resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.13.tgz#31b24a9c2e73c2de85066c0feb7d44767ed52932" @@ -8603,26 +8463,16 @@ source-map@^0.6.0, source-map@^0.6.1, source-map@~0.6.1: resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== +sprintf-js@^1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.1.3.tgz#4914b903a2f8b685d17fdf78a70e917e872e444a" + integrity sha512-Oo+0REFV59/rz3gfJNKQiBlwfHaSESl1pcGyABQsnnIfWOFt6JNj5gCog2U6MLZ//IGYD+nA8nI+mTShREReaA== + sprintf-js@~1.0.2: version "1.0.3" resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" integrity sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g== -sshpk@^1.7.0: - version "1.17.0" - resolved "https://registry.yarnpkg.com/sshpk/-/sshpk-1.17.0.tgz#578082d92d4fe612b13007496e543fa0fbcbe4c5" - integrity sha512-/9HIEs1ZXGhSPE8X6Ccm7Nam1z8KcoCqPdI7ecm1N33EzAetWahvQWVqLZtaZQ+IDKX4IyA2o0gBzqIMkAagHQ== - dependencies: - asn1 "~0.2.3" - assert-plus "^1.0.0" - bcrypt-pbkdf "^1.0.0" - dashdash "^1.12.0" - ecc-jsbn "~0.1.1" - getpass "^0.1.1" - jsbn "~0.1.0" - safer-buffer "^2.0.2" - tweetnacl "~0.14.0" - ssri@^10.0.0: version "10.0.5" resolved "https://registry.yarnpkg.com/ssri/-/ssri-10.0.5.tgz#e49efcd6e36385196cb515d3a2ad6c3f0265ef8c" @@ -8760,11 +8610,6 @@ string_decoder@^1.1.1: dependencies: safe-buffer "~5.2.0" -string_decoder@~0.10.x: - version "0.10.31" - resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-0.10.31.tgz#62e203bc41766c6c28c9fc84301dab1c5310fa94" - integrity sha512-ev2QzSzWPYmy9GuqfIVildA4OdcGLeFZQrq5ys6RtiuF+RQQiZWr8TZNyAcuVXyQRYfEO+MsoB/1BuQVhOJuoQ== - string_decoder@~1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.1.1.tgz#9cf1611ba62685d7030ae9e4ba34149c3af03fc8" @@ -9003,14 +8848,6 @@ tough-cookie@^4.1.2: universalify "^0.2.0" url-parse "^1.5.3" -tough-cookie@~2.5.0: - version "2.5.0" - resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.5.0.tgz#cd9fb2a0aa1d5a12b473bd9fb96fa3dcff65ade2" - integrity sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g== - dependencies: - psl "^1.1.28" - punycode "^2.1.1" - toxic@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/toxic/-/toxic-1.0.1.tgz#8c2e2528da591100adc3883f2c0e56acfb1c7288" @@ -9076,18 +8913,6 @@ tsutils@^3.21.0: dependencies: tslib "^1.8.1" -tunnel-agent@^0.6.0: - version "0.6.0" - resolved "https://registry.yarnpkg.com/tunnel-agent/-/tunnel-agent-0.6.0.tgz#27a5dea06b36b04a0a9966774b290868f0fc40fd" - integrity sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w== - dependencies: - safe-buffer "^5.0.1" - -tweetnacl@^0.14.3, tweetnacl@~0.14.0: - version "0.14.5" - resolved "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-0.14.5.tgz#5ae68177f192d4456269d108afa93ff8743f4f64" - integrity sha512-KXXFFdAbFXY4geFIwoyNK+f5Z1b7swfXABfL7HXCmoIWMKU3dmS26672A4EeQtDzLKy7SXmfBu51JolvEKwtGA== - type-check@^0.4.0, type-check@~0.4.0: version "0.4.0" resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.4.0.tgz#07b8203bfa7056c0657050e3ccd2c37730bab8f1" @@ -9258,11 +9083,6 @@ universal-analytics@^0.5.3: debug "^4.3.1" uuid "^8.0.0" -universalify@^0.1.0: - version "0.1.2" - resolved "https://registry.yarnpkg.com/universalify/-/universalify-0.1.2.tgz#b646f69be3942dabcecc9d6639c80dc105efaa66" - integrity sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg== - universalify@^0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/universalify/-/universalify-0.2.0.tgz#6451760566fa857534745ab1dde952d1b1761be0" @@ -9351,11 +9171,6 @@ utils-merge@1.0.1: resolved "https://registry.yarnpkg.com/utils-merge/-/utils-merge-1.0.1.tgz#9f95710f50a267947b2ccc124741c1028427e713" integrity sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA== -uuid@^3.3.2: - version "3.4.0" - resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.4.0.tgz#b23e4358afa8a202fe7a100af1f5f883f02007ee" - integrity sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A== - uuid@^8.0.0, uuid@^8.3.2: version "8.3.2" resolved "https://registry.yarnpkg.com/uuid/-/uuid-8.3.2.tgz#80d5b5ced271bb9af6c445f21a1a04c606cefbe2" @@ -9380,23 +9195,6 @@ vary@^1, vary@~1.1.2: resolved "https://registry.yarnpkg.com/vary/-/vary-1.1.2.tgz#2299f02c6ded30d4a5961b0b9f74524a18f634fc" integrity sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg== -verror@1.10.0: - version "1.10.0" - resolved "https://registry.yarnpkg.com/verror/-/verror-1.10.0.tgz#3a105ca17053af55d6e270c1f8288682e18da400" - integrity sha512-ZZKSmDAEFOijERBLkmYfJ+vmk3w+7hOLYDNkRCuRuMJGEmqYNCNLyBBFwWKVMhfwaEF3WOd0Zlw86U/WC/+nYw== - dependencies: - assert-plus "^1.0.0" - core-util-is "1.0.2" - extsprintf "^1.2.0" - -vm2@^3.9.17: - version "3.9.19" - resolved "https://registry.yarnpkg.com/vm2/-/vm2-3.9.19.tgz#be1e1d7a106122c6c492b4d51c2e8b93d3ed6a4a" - integrity sha512-J637XF0DHDMV57R6JyVsTak7nIL8gy5KH4r1HiwWLf/4GBbb5MKL5y7LpmF4A8E2nR6XmzpmMFQ7V7ppPTmUQg== - dependencies: - acorn "^8.7.0" - acorn-walk "^8.2.0" - void-elements@3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/void-elements/-/void-elements-3.1.0.tgz#614f7fbf8d801f0bb5f0661f5b2f5785750e4f09" @@ -9664,11 +9462,6 @@ xmlcreate@^2.0.4: resolved "https://registry.yarnpkg.com/xmlcreate/-/xmlcreate-2.0.4.tgz#0c5ab0f99cdd02a81065fa9cd8f8ae87624889be" integrity sha512-nquOebG4sngPmGPICTS5EnxqhKbCmz5Ox5hsszI2T6U5qdrJizBc+0ilYSEjTSzU0yZcmvppztXe/5Al5fUwdg== -xregexp@2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/xregexp/-/xregexp-2.0.0.tgz#52a63e56ca0b84a7f3a5f3d61872f126ad7a5943" - integrity sha512-xl/50/Cf32VsGq/1R8jJE5ajH1yMCQkpmoS10QbFZWl2Oor4H0Me64Pu2yxvsRWK3m6soJbmGfzSR7BYmDcWAA== - y18n@^5.0.5: version "5.0.8" resolved "https://registry.yarnpkg.com/y18n/-/y18n-5.0.8.tgz#7f4934d0f7ca8c56f95314939ddcd2dd91ce1d55" From 27ee219accb8d2e2db5b1b27eef1b2a221ac95ba Mon Sep 17 00:00:00 2001 From: priyankakmEaton Date: Wed, 8 May 2024 12:03:03 +0530 Subject: [PATCH 85/87] React auth workflow Version Update --- login-workflow/CHANGELOG.md | 6 +++++- login-workflow/package.json | 2 +- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/login-workflow/CHANGELOG.md b/login-workflow/CHANGELOG.md index bc18afbf..66868f32 100644 --- a/login-workflow/CHANGELOG.md +++ b/login-workflow/CHANGELOG.md @@ -9,7 +9,11 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Fixed -- Error Manager with dynamic values ([#540](https://github.com/etn-ccis/blui-react-workflows/issues/540)). +- Error Manager with dynamic values ([#540](https://github.com/etn-ccis/blui-react-workflows/issues/540)). +- Eula screen tests throws console warnings to wrap ([#390](https://github.com/etn-ccis/blui-react-workflows/issues/390)). +- Hardcoded dismissible Dialog button text ([#543](https://github.com/etn-ccis/blui-react-workflows/issues/543)). +- Fix dependency on react-router ([#546](https://github.com/etn-ccis/blui-react-workflows/issues/546)). +- Typo in Success screen readme ([#567](https://github.com/etn-ccis/blui-react-workflows/issues/547)). ## v4.0.2 (December 18, 2023) diff --git a/login-workflow/package.json b/login-workflow/package.json index 57258363..de64de6d 100644 --- a/login-workflow/package.json +++ b/login-workflow/package.json @@ -1,6 +1,6 @@ { "name": "@brightlayer-ui/react-auth-workflow", - "version": "4.0.2", + "version": "4.0.3", "author": "Brightlayer UI (https://github.com/brightlayer-ui)", "license": "BSD-3-Clause", "description": "Re-usable workflow components for Authentication and Registration within Eaton applications.", From c2d089698edfa3fb9d23cd0d0cd20ab7011ac80c Mon Sep 17 00:00:00 2001 From: priyankakmEaton Date: Wed, 8 May 2024 15:57:08 +0530 Subject: [PATCH 86/87] version update --- login-workflow/CHANGELOG.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/login-workflow/CHANGELOG.md b/login-workflow/CHANGELOG.md index 66868f32..b00fc9eb 100644 --- a/login-workflow/CHANGELOG.md +++ b/login-workflow/CHANGELOG.md @@ -5,7 +5,7 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). -## v4.0.3 (unreleased) +## v4.0.3 (May 9, 2024) ### Fixed From 17d76b62a4d4dcb8c19e1091240a46c6b252a6fc Mon Sep 17 00:00:00 2001 From: jeffgreiner-eaton Date: Thu, 9 May 2024 12:56:42 -0400 Subject: [PATCH 87/87] Fix publish command --- .github/workflows/blui-ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/blui-ci.yml b/.github/workflows/blui-ci.yml index 92a1d3ce..38d01a49 100644 --- a/.github/workflows/blui-ci.yml +++ b/.github/workflows/blui-ci.yml @@ -116,5 +116,5 @@ jobs: registry-url: 'https://registry.npmjs.org' cache-dependency-path: login-workflow - run: yarn --immutable - - run: npm run publish:package -b ${{env.BRANCH}} + - run: npm run publish:package -- -b ${{env.BRANCH}} working-directory: login-workflow \ No newline at end of file