From bf6426a406c1a32e23ab3a89e25ce7f8b440c6c6 Mon Sep 17 00:00:00 2001 From: Saad Adnan <38024451+sdadn@users.noreply.github.com> Date: Wed, 1 May 2024 13:37:47 -0500 Subject: [PATCH] Sync main with terra app v2 (#378) --- jest.enzymeSetup.js | 2 +- package-lock.json | 4209 +++++++++++++---- package.json | 4 +- packages/terra-application-docs/CHANGELOG.md | 17 + packages/terra-application-docs/package.json | 11 +- packages/terra-application/CHANGELOG.md | 33 +- packages/terra-application/package.json | 8 +- .../src/application-base/ApplicationBase.jsx | 69 +- .../src/application-base/Base.scss | 39 + .../src/application-base/baseStyles.js | 11 + .../clinical-lowlight-theme/Base.scss | 18 + .../orion-fusion-theme/Base.scss | 18 + .../private/getBrowserLocale.js | 1 - .../application-base/private/i18nLoader.js | 52 + .../application-base/private/intlLoaders.js | 78 + .../private/loadLocaleData.js | 80 + .../private/translationsLoaders.js | 61 + .../ApplicationErrorBoundary.jsx | 7 +- .../ApplicationIntlContext.jsx | 4 - .../ApplicationIntlProvider.jsx | 44 +- .../src/application-intl/index.js | 4 +- .../ApplicationNavigation.jsx | 4 +- .../private/common/_PopupMenu.jsx | 23 +- .../private/common/_PopupMenuUser.jsx | 29 +- .../private/drawer-menu/_DrawerMenu.jsx | 18 +- .../private/drawer-menu/_DrawerMenuUser.jsx | 32 +- .../private/utility-menu/_UtilityMenu.jsx | 10 +- .../workspace-layout/WorkspaceLayout.jsx | 4 +- .../terra-dev-site/app/Application.1.app.mdx | 4 +- .../app/components.2/ApplicationBase.app.mdx | 8 +- .../ApplicationNavigation.app.mdx | 2 +- .../app/components.2/ModalManager.app.mdx | 58 + .../NavigationPromptCheckpoint.app.mdx | 4 +- .../example/ApplicationBaseExample.jsx | 6 +- .../DisclosureManagerContext.app.mdx | 4 + .../src/terra-dev-site/app/demo/AppPage.jsx | 4 +- .../app/demo/ModalPresenter.jsx | 4 +- .../how-to.3/use-translated-strings.app.mdx | 9 +- .../ApplicationBaseTest.test.jsx | 4 +- .../private/testOverridesTest.test.jsx | 4 +- ...tionNavigationDisabledPromptsTest.test.jsx | 6 +- .../ApplicationNavigationTest.test.jsx | 6 +- .../src/workspace/Workspace.jsx | 4 +- .../tests/jest/MockApplication.jsx | 3 +- .../__snapshots__/ActionMenu.test.jsx.snap | 2 +- .../_ActionMenuHeader.test.jsx.snap | 131 +- .../application-base/ApplicationBase.test.jsx | 46 +- .../ApplicationBase.test.jsx.snap | 229 +- .../private/i18nloader.test.js | 201 + .../private/intlLoaders.test.js | 239 + .../private/loadLocaleData.test.js | 83 + .../private/translationsLoaders.test.js | 157 + .../ApplicationErrorBoundary.test.jsx | 6 +- .../ApplicationErrorBoundary.test.jsx.snap | 292 +- .../ApplicationIntlProvider.test.jsx.snap | 58 +- .../ApplicationNavigation.test.jsx | 13 +- .../ApplicationNavigation.test.jsx.snap | 8 +- .../ApplicationNavigation.test.jsx.snap | 111 +- .../__snapshots__/PopupMenu.test.jsx.snap | 6 +- .../__snapshots__/PopupMenuUser.test.jsx.snap | 2 +- .../DrawerMenuUser.test.jsx.snap | 15 +- .../__snapshots__/CompactHeader.test.jsx.snap | 403 +- .../header/__snapshots__/Header.test.jsx.snap | 616 +-- .../tabs/__snapshots__/Tab.test.jsx.snap | 2 +- .../__snapshots__/TabRollup.test.jsx.snap | 2 +- .../tabs/__snapshots__/Tabs.test.jsx.snap | 172 +- .../private/utility-menu/UtilityMenu.test.jsx | 7 +- .../__snapshots__/UtilityMenu.test.jsx.snap | 2312 ++++----- .../UtilityMenuHeaderButton.test.jsx.snap | 202 +- .../DisclosureContainer.test.jsx.snap | 6 +- .../tests/jest/workspace/Workspace.test.jsx | 12 + .../Popup_menu_Closed.png | Bin 19133 -> 34386 bytes .../Popup_menu_Closed.png | Bin 18275 -> 31962 bytes .../Popup_menu_Closed.png | Bin 21186 -> 37138 bytes .../private/application-navigation-spec.js | 5 +- packages/terra-dev-site/CHANGELOG.md | 24 + packages/terra-dev-site/package.json | 4 +- .../side-nav/SideNavHeader.jsx | 4 +- .../src/pages/page/PageHeader.jsx | 4 +- packages/terra-polyfill/CHANGELOG.md | 11 + packages/terra-polyfill/package.json | 2 +- 81 files changed, 6887 insertions(+), 3520 deletions(-) create mode 100644 packages/terra-application/src/application-base/Base.scss create mode 100644 packages/terra-application/src/application-base/baseStyles.js create mode 100644 packages/terra-application/src/application-base/clinical-lowlight-theme/Base.scss create mode 100644 packages/terra-application/src/application-base/orion-fusion-theme/Base.scss create mode 100644 packages/terra-application/src/application-base/private/i18nLoader.js create mode 100644 packages/terra-application/src/application-base/private/intlLoaders.js create mode 100644 packages/terra-application/src/application-base/private/loadLocaleData.js create mode 100644 packages/terra-application/src/application-base/private/translationsLoaders.js create mode 100644 packages/terra-application/tests/jest/application-base/private/i18nloader.test.js create mode 100644 packages/terra-application/tests/jest/application-base/private/intlLoaders.test.js create mode 100644 packages/terra-application/tests/jest/application-base/private/loadLocaleData.test.js create mode 100644 packages/terra-application/tests/jest/application-base/private/translationsLoaders.test.js diff --git a/jest.enzymeSetup.js b/jest.enzymeSetup.js index 98fff39c0..fea2b5170 100644 --- a/jest.enzymeSetup.js +++ b/jest.enzymeSetup.js @@ -2,7 +2,7 @@ /* eslint-disable import/no-extraneous-dependencies */ /* eslint-disable object-curly-newline */ import Enzyme, { mount, render, shallow } from 'enzyme'; -import { mockIntl, mountWithIntl, renderWithIntl, shallowWithIntl } from 'terra-enzyme-intl'; +import { mockIntl, mountWithIntl, renderWithIntl, shallowWithIntl } from '@cerner/terra-enzyme-intl'; import Adapter from 'enzyme-adapter-react-16'; Enzyme.configure({ adapter: new Adapter() }); diff --git a/package-lock.json b/package-lock.json index 2a2a34f00..832304e32 100644 --- a/package-lock.json +++ b/package-lock.json @@ -26,6 +26,7 @@ "@cerner/package-json-lint-config-terra": "2", "@cerner/stylelint-config-terra": "5", "@cerner/terra-cli": "1", + "@cerner/terra-enzyme-intl": "4", "@cerner/terra-functional-testing": "4", "@cerner/terra-open-source-scripts": "1", "@cerner/webpack-config-terra": "3", @@ -44,7 +45,6 @@ "lerna": "6", "postcss": "8", "stylelint": "15", - "terra-enzyme-intl": "3", "webpack": "5", "webpack-cli": "4", "webpack-dev-server": "4", @@ -57,16 +57,7 @@ "peerDependencies": { "react": "16", "react-dom": "16", - "react-intl": "2" - } - }, - "node_modules/@aashutoshrathi/word-wrap": { - "version": "1.2.6", - "resolved": "https://registry.npmjs.org/@aashutoshrathi/word-wrap/-/word-wrap-1.2.6.tgz", - "integrity": "sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA==", - "dev": true, - "engines": { - "node": ">=0.10.0" + "react-intl": "5" } }, "node_modules/@adobe/css-tools": { @@ -88,9 +79,9 @@ } }, "node_modules/@babel/cli": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/cli/-/cli-7.24.1.tgz", - "integrity": "sha512-HbmrtxyFUr34LwAlV9jS+sSIjUp4FpdtIMGwgufY3AsxrIfsh/HxlMTywsONAZsU0RMYbZtbZFpUCrSGs7o0EA==", + "version": "7.24.5", + "resolved": "https://registry.npmjs.org/@babel/cli/-/cli-7.24.5.tgz", + "integrity": "sha512-2qg1mYtJRsOOWF6IUwLP5jI42P8Cc0hQ5TmnjLrik/4DKouO8dFJN80HEz81VmVeUs97yuuf3vQ/9j7Elrcjlg==", "dev": true, "dependencies": { "@jridgewell/trace-mapping": "^0.3.25", @@ -137,20 +128,20 @@ } }, "node_modules/@babel/core": { - "version": "7.24.4", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.24.4.tgz", - "integrity": "sha512-MBVlMXP+kkl5394RBLSxxk/iLTeVGuXTV3cIDXavPpMMqnSnt6apKgan/U8O3USWZCWZT/TbgfEpKa4uMgN4Dg==", + "version": "7.24.5", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.24.5.tgz", + "integrity": "sha512-tVQRucExLQ02Boi4vdPp49svNGcfL2GhdTCT9aldhXgCJVAI21EtRfBettiuLUwce/7r6bFdgs6JFkcdTiFttA==", "dependencies": { "@ampproject/remapping": "^2.2.0", "@babel/code-frame": "^7.24.2", - "@babel/generator": "^7.24.4", + "@babel/generator": "^7.24.5", "@babel/helper-compilation-targets": "^7.23.6", - "@babel/helper-module-transforms": "^7.23.3", - "@babel/helpers": "^7.24.4", - "@babel/parser": "^7.24.4", + "@babel/helper-module-transforms": "^7.24.5", + "@babel/helpers": "^7.24.5", + "@babel/parser": "^7.24.5", "@babel/template": "^7.24.0", - "@babel/traverse": "^7.24.1", - "@babel/types": "^7.24.0", + "@babel/traverse": "^7.24.5", + "@babel/types": "^7.24.5", "convert-source-map": "^2.0.0", "debug": "^4.1.0", "gensync": "^1.0.0-beta.2", @@ -166,9 +157,9 @@ } }, "node_modules/@babel/eslint-parser": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/eslint-parser/-/eslint-parser-7.24.1.tgz", - "integrity": "sha512-d5guuzMlPeDfZIbpQ8+g1NaCNuAGBBGNECh0HVqz1sjOeVLh2CEaifuOysCH18URW6R7pqXINvf5PaR/dC6jLQ==", + "version": "7.24.5", + "resolved": "https://registry.npmjs.org/@babel/eslint-parser/-/eslint-parser-7.24.5.tgz", + "integrity": "sha512-gsUcqS/fPlgAw1kOtpss7uhY6E9SFFANQ6EFX5GTvzUwaV0+sGaZWk6xq22MOdeT9wfxyokW3ceCUvOiRtZciQ==", "dev": true, "dependencies": { "@nicolo-ribaudo/eslint-scope-5-internals": "5.1.1-v1", @@ -180,15 +171,15 @@ }, "peerDependencies": { "@babel/core": "^7.11.0", - "eslint": "^7.5.0 || ^8.0.0" + "eslint": "^7.5.0 || ^8.0.0 || ^9.0.0" } }, "node_modules/@babel/generator": { - "version": "7.24.4", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.24.4.tgz", - "integrity": "sha512-Xd6+v6SnjWVx/nus+y0l1sxMOTOMBkyL4+BIdbALyatQnAe/SRVjANeDPSCYaX+i1iJmuGSKf3Z+E+V/va1Hvw==", + "version": "7.24.5", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.24.5.tgz", + "integrity": "sha512-x32i4hEXvr+iI0NEoEfDKzlemF8AmtOP8CcrRaEcpzysWuoEb1KknpcvMsHKPONoKZiDuItklgWhB18xEhr9PA==", "dependencies": { - "@babel/types": "^7.24.0", + "@babel/types": "^7.24.5", "@jridgewell/gen-mapping": "^0.3.5", "@jridgewell/trace-mapping": "^0.3.25", "jsesc": "^2.5.1" @@ -237,19 +228,19 @@ } }, "node_modules/@babel/helper-create-class-features-plugin": { - "version": "7.24.4", - "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.24.4.tgz", - "integrity": "sha512-lG75yeuUSVu0pIcbhiYMXBXANHrpUPaOfu7ryAzskCgKUHuAxRQI5ssrtmF0X9UXldPlvT0XM/A4F44OXRt6iQ==", + "version": "7.24.5", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.24.5.tgz", + "integrity": "sha512-uRc4Cv8UQWnE4NXlYTIIdM7wfFkOqlFztcC/gVXDKohKoVB3OyonfelUBaJzSwpBntZ2KYGF/9S7asCHsXwW6g==", "dev": true, "dependencies": { "@babel/helper-annotate-as-pure": "^7.22.5", "@babel/helper-environment-visitor": "^7.22.20", "@babel/helper-function-name": "^7.23.0", - "@babel/helper-member-expression-to-functions": "^7.23.0", + "@babel/helper-member-expression-to-functions": "^7.24.5", "@babel/helper-optimise-call-expression": "^7.22.5", "@babel/helper-replace-supers": "^7.24.1", "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5", - "@babel/helper-split-export-declaration": "^7.22.6", + "@babel/helper-split-export-declaration": "^7.24.5", "semver": "^6.3.1" }, "engines": { @@ -324,12 +315,12 @@ } }, "node_modules/@babel/helper-member-expression-to-functions": { - "version": "7.23.0", - "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.23.0.tgz", - "integrity": "sha512-6gfrPwh7OuT6gZyJZvd6WbTfrqAo7vm4xCzAXOusKqq/vWdKXphTpj5klHKNmRUU6/QRGlBsyU9mAIPaWHlqJA==", + "version": "7.24.5", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.24.5.tgz", + "integrity": "sha512-4owRteeihKWKamtqg4JmWSsEZU445xpFRXPEwp44HbgbxdWlUV1b4Agg4lkA806Lil5XM/e+FJyS0vj5T6vmcA==", "dev": true, "dependencies": { - "@babel/types": "^7.23.0" + "@babel/types": "^7.24.5" }, "engines": { "node": ">=6.9.0" @@ -347,15 +338,15 @@ } }, "node_modules/@babel/helper-module-transforms": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.23.3.tgz", - "integrity": "sha512-7bBs4ED9OmswdfDzpz4MpWgSrV7FXlc3zIagvLFjS5H+Mk7Snr21vQ6QwrsoCGMfNC4e4LQPdoULEt4ykz0SRQ==", + "version": "7.24.5", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.24.5.tgz", + "integrity": "sha512-9GxeY8c2d2mdQUP1Dye0ks3VDyIMS98kt/llQ2nUId8IsWqTF0l1LkSX0/uP7l7MCDrzXS009Hyhe2gzTiGW8A==", "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-module-imports": "^7.24.3", + "@babel/helper-simple-access": "^7.24.5", + "@babel/helper-split-export-declaration": "^7.24.5", + "@babel/helper-validator-identifier": "^7.24.5" }, "engines": { "node": ">=6.9.0" @@ -377,9 +368,9 @@ } }, "node_modules/@babel/helper-plugin-utils": { - "version": "7.24.0", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.24.0.tgz", - "integrity": "sha512-9cUznXMG0+FxRuJfvL82QlTqIzhVW9sL0KjMPHhAOOvpQGL8QtdxnBKILjBqxlHyliz0yCa1G903ZXI/FuHy2w==", + "version": "7.24.5", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.24.5.tgz", + "integrity": "sha512-xjNLDopRzW2o6ba0gKbkZq5YWEBaK3PCyTOY1K2P/O07LGMhMqlMXPxwN4S5/RhWuCobT8z0jrlKGlYmeR1OhQ==", "engines": { "node": ">=6.9.0" } @@ -419,11 +410,11 @@ } }, "node_modules/@babel/helper-simple-access": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.22.5.tgz", - "integrity": "sha512-n0H99E/K+Bika3++WNL17POvo4rKWZ7lZEp1Q+fStVbUi8nxPQEBOlTmCOxW/0JsS56SKKQ+ojAe2pHKJHN35w==", + "version": "7.24.5", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.24.5.tgz", + "integrity": "sha512-uH3Hmf5q5n7n8mz7arjUlDOCbttY/DW4DYhE6FUsjKJ/oYC1kQQUvwEQWxRwUpX9qQKRXeqLwWxrqilMrf32sQ==", "dependencies": { - "@babel/types": "^7.22.5" + "@babel/types": "^7.24.5" }, "engines": { "node": ">=6.9.0" @@ -442,11 +433,11 @@ } }, "node_modules/@babel/helper-split-export-declaration": { - "version": "7.22.6", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.22.6.tgz", - "integrity": "sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g==", + "version": "7.24.5", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.24.5.tgz", + "integrity": "sha512-5CHncttXohrHk8GWOFCcCl4oRD9fKosWlIRgWm4ql9VYioKm52Mk2xsmoohvm7f3JoiLSM5ZgJuRaf5QZZYd3Q==", "dependencies": { - "@babel/types": "^7.22.5" + "@babel/types": "^7.24.5" }, "engines": { "node": ">=6.9.0" @@ -461,9 +452,9 @@ } }, "node_modules/@babel/helper-validator-identifier": { - "version": "7.22.20", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.20.tgz", - "integrity": "sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==", + "version": "7.24.5", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.24.5.tgz", + "integrity": "sha512-3q93SSKX2TWCG30M2G2kwaKeTYgEUp5Snjuj8qm729SObL6nbtUldAi37qbxkD5gg3xnBio+f9nqpSepGZMvxA==", "engines": { "node": ">=6.9.0" } @@ -477,38 +468,38 @@ } }, "node_modules/@babel/helper-wrap-function": { - "version": "7.22.20", - "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.22.20.tgz", - "integrity": "sha512-pms/UwkOpnQe/PDAEdV/d7dVCoBbB+R4FvYoHGZz+4VPcg7RtYy2KP7S2lbuWM6FCSgob5wshfGESbC/hzNXZw==", + "version": "7.24.5", + "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.24.5.tgz", + "integrity": "sha512-/xxzuNvgRl4/HLNKvnFwdhdgN3cpLxgLROeLDl83Yx0AJ1SGvq1ak0OszTOjDfiB8Vx03eJbeDWh9r+jCCWttw==", "dev": true, "dependencies": { - "@babel/helper-function-name": "^7.22.5", - "@babel/template": "^7.22.15", - "@babel/types": "^7.22.19" + "@babel/helper-function-name": "^7.23.0", + "@babel/template": "^7.24.0", + "@babel/types": "^7.24.5" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helpers": { - "version": "7.24.4", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.24.4.tgz", - "integrity": "sha512-FewdlZbSiwaVGlgT1DPANDuCHaDMiOo+D/IDYRFYjHOuv66xMSJ7fQwwODwRNAPkADIO/z1EoF/l2BCWlWABDw==", + "version": "7.24.5", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.24.5.tgz", + "integrity": "sha512-CiQmBMMpMQHwM5m01YnrM6imUG1ebgYJ+fAIW4FZe6m4qHTPaRHti+R8cggAwkdz4oXhtO4/K9JWlh+8hIfR2Q==", "dependencies": { "@babel/template": "^7.24.0", - "@babel/traverse": "^7.24.1", - "@babel/types": "^7.24.0" + "@babel/traverse": "^7.24.5", + "@babel/types": "^7.24.5" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/highlight": { - "version": "7.24.2", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.24.2.tgz", - "integrity": "sha512-Yac1ao4flkTxTteCDZLEvdxg2fZfz1v8M4QpaGypq/WPDqg3ijHYbDfs+LG5hvzSoqaSZ9/Z9lKSP3CjZjv+pA==", + "version": "7.24.5", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.24.5.tgz", + "integrity": "sha512-8lLmua6AVh/8SLJRRVD6V8p73Hir9w5mJrhE+IPpILG31KKlI9iz5zmBYKcWPS59qSfgP9RaSBQSHHE81WKuEw==", "dependencies": { - "@babel/helper-validator-identifier": "^7.22.20", + "@babel/helper-validator-identifier": "^7.24.5", "chalk": "^2.4.2", "js-tokens": "^4.0.0", "picocolors": "^1.0.0" @@ -517,74 +508,10 @@ "node": ">=6.9.0" } }, - "node_modules/@babel/highlight/node_modules/ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dependencies": { - "color-convert": "^1.9.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/@babel/highlight/node_modules/chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dependencies": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/@babel/highlight/node_modules/color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "dependencies": { - "color-name": "1.1.3" - } - }, - "node_modules/@babel/highlight/node_modules/color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==" - }, - "node_modules/@babel/highlight/node_modules/escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/@babel/highlight/node_modules/has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", - "engines": { - "node": ">=4" - } - }, - "node_modules/@babel/highlight/node_modules/supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dependencies": { - "has-flag": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, "node_modules/@babel/parser": { - "version": "7.24.4", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.24.4.tgz", - "integrity": "sha512-zTvEBcghmeBma9QIGunWevvBAp4/Qu9Bdq+2k0Ot4fVMD6v3dsC9WOcRSKk7tRRyBM/53yKMJko9xOatGQAwSg==", + "version": "7.24.5", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.24.5.tgz", + "integrity": "sha512-EOv5IK8arwh3LI47dz1b0tKUb/1uhHAnHJOrjgtQMIpu1uXd9mlFrJg9IUgGUgZ41Ch0K8REPTYpO7B76b4vJg==", "bin": { "parser": "bin/babel-parser.js" }, @@ -593,13 +520,13 @@ } }, "node_modules/@babel/plugin-bugfix-firefox-class-in-computed-class-key": { - "version": "7.24.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-firefox-class-in-computed-class-key/-/plugin-bugfix-firefox-class-in-computed-class-key-7.24.4.tgz", - "integrity": "sha512-qpl6vOOEEzTLLcsuqYYo8yDtrTocmu2xkGvgNebvPjT9DTtfFYGmgDqY+rBYXNlqL4s9qLDn6xkrJv4RxAPiTA==", + "version": "7.24.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-firefox-class-in-computed-class-key/-/plugin-bugfix-firefox-class-in-computed-class-key-7.24.5.tgz", + "integrity": "sha512-LdXRi1wEMTrHVR4Zc9F8OewC3vdm5h4QB6L71zy6StmYeqGi1b3ttIO8UC+BfZKcH9jdr4aI249rBkm+3+YvHw==", "dev": true, "dependencies": { "@babel/helper-environment-visitor": "^7.22.20", - "@babel/helper-plugin-utils": "^7.24.0" + "@babel/helper-plugin-utils": "^7.24.5" }, "engines": { "node": ">=6.9.0" @@ -1024,12 +951,12 @@ } }, "node_modules/@babel/plugin-transform-block-scoping": { - "version": "7.24.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.24.4.tgz", - "integrity": "sha512-nIFUZIpGKDf9O9ttyRXpHFpKC+X3Y5mtshZONuEUYBomAKoM4y029Jr+uB1bHGPhNmK8YXHevDtKDOLmtRrp6g==", + "version": "7.24.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.24.5.tgz", + "integrity": "sha512-sMfBc3OxghjC95BkYrYocHL3NaOplrcaunblzwXhGmlPwpmfsxr4vK+mBBt49r+S240vahmv+kUxkeKgs+haCw==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.24.0" + "@babel/helper-plugin-utils": "^7.24.5" }, "engines": { "node": ">=6.9.0" @@ -1072,18 +999,18 @@ } }, "node_modules/@babel/plugin-transform-classes": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.24.1.tgz", - "integrity": "sha512-ZTIe3W7UejJd3/3R4p7ScyyOoafetUShSf4kCqV0O7F/RiHxVj/wRaRnQlrGwflvcehNA8M42HkAiEDYZu2F1Q==", + "version": "7.24.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.24.5.tgz", + "integrity": "sha512-gWkLP25DFj2dwe9Ck8uwMOpko4YsqyfZJrOmqqcegeDYEbp7rmn4U6UQZNj08UF6MaX39XenSpKRCvpDRBtZ7Q==", "dev": true, "dependencies": { "@babel/helper-annotate-as-pure": "^7.22.5", "@babel/helper-compilation-targets": "^7.23.6", "@babel/helper-environment-visitor": "^7.22.20", "@babel/helper-function-name": "^7.23.0", - "@babel/helper-plugin-utils": "^7.24.0", + "@babel/helper-plugin-utils": "^7.24.5", "@babel/helper-replace-supers": "^7.24.1", - "@babel/helper-split-export-declaration": "^7.22.6", + "@babel/helper-split-export-declaration": "^7.24.5", "globals": "^11.1.0" }, "engines": { @@ -1110,12 +1037,12 @@ } }, "node_modules/@babel/plugin-transform-destructuring": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.24.1.tgz", - "integrity": "sha512-ow8jciWqNxR3RYbSNVuF4U2Jx130nwnBnhRw6N6h1bOejNkABmcI5X5oz29K4alWX7vf1C+o6gtKXikzRKkVdw==", + "version": "7.24.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.24.5.tgz", + "integrity": "sha512-SZuuLyfxvsm+Ah57I/i1HVjveBENYK9ue8MJ7qkc7ndoNjqquJiElzA7f5yaAXjyW2hKojosOTAQQRX50bPSVg==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.24.0" + "@babel/helper-plugin-utils": "^7.24.5" }, "engines": { "node": ">=6.9.0" @@ -1444,15 +1371,15 @@ } }, "node_modules/@babel/plugin-transform-object-rest-spread": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.24.1.tgz", - "integrity": "sha512-XjD5f0YqOtebto4HGISLNfiNMTTs6tbkFf2TOqJlYKYmbo+mN9Dnpl4SRoofiziuOWMIyq3sZEUqLo3hLITFEA==", + "version": "7.24.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.24.5.tgz", + "integrity": "sha512-7EauQHszLGM3ay7a161tTQH7fj+3vVM/gThlz5HpFtnygTxjrlvoeq7MPVA1Vy9Q555OB8SnAOsMkLShNkkrHA==", "dev": true, "dependencies": { "@babel/helper-compilation-targets": "^7.23.6", - "@babel/helper-plugin-utils": "^7.24.0", + "@babel/helper-plugin-utils": "^7.24.5", "@babel/plugin-syntax-object-rest-spread": "^7.8.3", - "@babel/plugin-transform-parameters": "^7.24.1" + "@babel/plugin-transform-parameters": "^7.24.5" }, "engines": { "node": ">=6.9.0" @@ -1494,12 +1421,12 @@ } }, "node_modules/@babel/plugin-transform-optional-chaining": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.24.1.tgz", - "integrity": "sha512-n03wmDt+987qXwAgcBlnUUivrZBPZ8z1plL0YvgQalLm+ZE5BMhGm94jhxXtA1wzv1Cu2aaOv1BM9vbVttrzSg==", + "version": "7.24.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.24.5.tgz", + "integrity": "sha512-xWCkmwKT+ihmA6l7SSTpk8e4qQl/274iNbSKRRS8mpqFR32ksy36+a+LWY8OXCCEefF8WFlnOHVsaDI2231wBg==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.24.0", + "@babel/helper-plugin-utils": "^7.24.5", "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5", "@babel/plugin-syntax-optional-chaining": "^7.8.3" }, @@ -1511,11 +1438,11 @@ } }, "node_modules/@babel/plugin-transform-parameters": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.24.1.tgz", - "integrity": "sha512-8Jl6V24g+Uw5OGPeWNKrKqXPDw2YDjLc53ojwfMcKwlEoETKU9rU0mHUtcg9JntWI/QYzGAXNWEcVHZ+fR+XXg==", + "version": "7.24.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.24.5.tgz", + "integrity": "sha512-9Co00MqZ2aoky+4j2jhofErthm6QVLKbpQrvz20c3CH9KQCLHyNB+t2ya4/UrRpQGR+Wrwjg9foopoeSdnHOkA==", "dependencies": { - "@babel/helper-plugin-utils": "^7.24.0" + "@babel/helper-plugin-utils": "^7.24.5" }, "engines": { "node": ">=6.9.0" @@ -1541,14 +1468,14 @@ } }, "node_modules/@babel/plugin-transform-private-property-in-object": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.24.1.tgz", - "integrity": "sha512-pTHxDVa0BpUbvAgX3Gat+7cSciXqUcY9j2VZKTbSB6+VQGpNgNO9ailxTGHSXlqOnX1Hcx1Enme2+yv7VqP9bg==", + "version": "7.24.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.24.5.tgz", + "integrity": "sha512-JM4MHZqnWR04jPMujQDTBVRnqxpLLpx2tkn7iPn+Hmsc0Gnb79yvRWOkvqFOx3Z7P7VxiRIR22c4eGSNj87OBQ==", "dev": true, "dependencies": { "@babel/helper-annotate-as-pure": "^7.22.5", - "@babel/helper-create-class-features-plugin": "^7.24.1", - "@babel/helper-plugin-utils": "^7.24.0", + "@babel/helper-create-class-features-plugin": "^7.24.5", + "@babel/helper-plugin-utils": "^7.24.5", "@babel/plugin-syntax-private-property-in-object": "^7.14.5" }, "engines": { @@ -1751,12 +1678,12 @@ } }, "node_modules/@babel/plugin-transform-typeof-symbol": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.24.1.tgz", - "integrity": "sha512-CBfU4l/A+KruSUoW+vTQthwcAdwuqbpRNB8HQKlZABwHRhsdHZ9fezp4Sn18PeAlYxTNiLMlx4xUBV3AWfg1BA==", + "version": "7.24.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.24.5.tgz", + "integrity": "sha512-UTGnhYVZtTAjdwOTzT+sCyXmTn8AhaxOS/MjG9REclZ6ULHWF9KoCZur0HSGU7hk8PdBFKKbYe6+gqdXWz84Jg==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.24.0" + "@babel/helper-plugin-utils": "^7.24.5" }, "engines": { "node": ">=6.9.0" @@ -1829,16 +1756,16 @@ } }, "node_modules/@babel/preset-env": { - "version": "7.24.4", - "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.24.4.tgz", - "integrity": "sha512-7Kl6cSmYkak0FK/FXjSEnLJ1N9T/WA2RkMhu17gZ/dsxKJUuTYNIylahPTzqpLyJN4WhDif8X0XK1R8Wsguo/A==", + "version": "7.24.5", + "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.24.5.tgz", + "integrity": "sha512-UGK2ifKtcC8i5AI4cH+sbLLuLc2ktYSFJgBAXorKAsHUZmrQ1q6aQ6i3BvU24wWs2AAKqQB6kq3N9V9Gw1HiMQ==", "dev": true, "dependencies": { "@babel/compat-data": "^7.24.4", "@babel/helper-compilation-targets": "^7.23.6", - "@babel/helper-plugin-utils": "^7.24.0", + "@babel/helper-plugin-utils": "^7.24.5", "@babel/helper-validator-option": "^7.23.5", - "@babel/plugin-bugfix-firefox-class-in-computed-class-key": "^7.24.4", + "@babel/plugin-bugfix-firefox-class-in-computed-class-key": "^7.24.5", "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.24.1", "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.24.1", "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": "^7.24.1", @@ -1865,12 +1792,12 @@ "@babel/plugin-transform-async-generator-functions": "^7.24.3", "@babel/plugin-transform-async-to-generator": "^7.24.1", "@babel/plugin-transform-block-scoped-functions": "^7.24.1", - "@babel/plugin-transform-block-scoping": "^7.24.4", + "@babel/plugin-transform-block-scoping": "^7.24.5", "@babel/plugin-transform-class-properties": "^7.24.1", "@babel/plugin-transform-class-static-block": "^7.24.4", - "@babel/plugin-transform-classes": "^7.24.1", + "@babel/plugin-transform-classes": "^7.24.5", "@babel/plugin-transform-computed-properties": "^7.24.1", - "@babel/plugin-transform-destructuring": "^7.24.1", + "@babel/plugin-transform-destructuring": "^7.24.5", "@babel/plugin-transform-dotall-regex": "^7.24.1", "@babel/plugin-transform-duplicate-keys": "^7.24.1", "@babel/plugin-transform-dynamic-import": "^7.24.1", @@ -1890,13 +1817,13 @@ "@babel/plugin-transform-new-target": "^7.24.1", "@babel/plugin-transform-nullish-coalescing-operator": "^7.24.1", "@babel/plugin-transform-numeric-separator": "^7.24.1", - "@babel/plugin-transform-object-rest-spread": "^7.24.1", + "@babel/plugin-transform-object-rest-spread": "^7.24.5", "@babel/plugin-transform-object-super": "^7.24.1", "@babel/plugin-transform-optional-catch-binding": "^7.24.1", - "@babel/plugin-transform-optional-chaining": "^7.24.1", - "@babel/plugin-transform-parameters": "^7.24.1", + "@babel/plugin-transform-optional-chaining": "^7.24.5", + "@babel/plugin-transform-parameters": "^7.24.5", "@babel/plugin-transform-private-methods": "^7.24.1", - "@babel/plugin-transform-private-property-in-object": "^7.24.1", + "@babel/plugin-transform-private-property-in-object": "^7.24.5", "@babel/plugin-transform-property-literals": "^7.24.1", "@babel/plugin-transform-regenerator": "^7.24.1", "@babel/plugin-transform-reserved-words": "^7.24.1", @@ -1904,7 +1831,7 @@ "@babel/plugin-transform-spread": "^7.24.1", "@babel/plugin-transform-sticky-regex": "^7.24.1", "@babel/plugin-transform-template-literals": "^7.24.1", - "@babel/plugin-transform-typeof-symbol": "^7.24.1", + "@babel/plugin-transform-typeof-symbol": "^7.24.5", "@babel/plugin-transform-unicode-escapes": "^7.24.1", "@babel/plugin-transform-unicode-property-regex": "^7.24.1", "@babel/plugin-transform-unicode-regex": "^7.24.1", @@ -1964,9 +1891,9 @@ "dev": true }, "node_modules/@babel/runtime": { - "version": "7.24.4", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.24.4.tgz", - "integrity": "sha512-dkxf7+hn8mFBwKjs9bvBlArzLVxVbS8usaPUDd5p2a9JCL9tB8OaOVN1isD4+Xyk4ns89/xeOmbQvgdK7IIVdA==", + "version": "7.24.5", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.24.5.tgz", + "integrity": "sha512-Nms86NXrsaeU9vbBJKni6gXiEXZ4CVpYVzEjDH9Sb8vmZ3UljyA1GSOJl/6LGPO8EHLuSF9H+IxNXHPX8QHJ4g==", "dependencies": { "regenerator-runtime": "^0.14.0" }, @@ -1975,9 +1902,9 @@ } }, "node_modules/@babel/runtime-corejs3": { - "version": "7.24.4", - "resolved": "https://registry.npmjs.org/@babel/runtime-corejs3/-/runtime-corejs3-7.24.4.tgz", - "integrity": "sha512-VOQOexSilscN24VEY810G/PqtpFvx/z6UqDIjIWbDe2368HhDLkYN5TYwaEz/+eRCUkhJ2WaNLLmQAlxzfWj4w==", + "version": "7.24.5", + "resolved": "https://registry.npmjs.org/@babel/runtime-corejs3/-/runtime-corejs3-7.24.5.tgz", + "integrity": "sha512-GWO0mgzNMLWaSYM4z4NVIuY0Cd1fl8cPnuetuddu5w/qGuvt5Y7oUi/kvvQGK9xgOkFJDQX2heIvTRn/OQ1XTg==", "dev": true, "dependencies": { "core-js-pure": "^3.30.2", @@ -2001,18 +1928,18 @@ } }, "node_modules/@babel/traverse": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.24.1.tgz", - "integrity": "sha512-xuU6o9m68KeqZbQuDt2TcKSxUw/mrsvavlEqQ1leZ/B+C9tk6E4sRWy97WaXgvq5E+nU3cXMxv3WKOCanVMCmQ==", + "version": "7.24.5", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.24.5.tgz", + "integrity": "sha512-7aaBLeDQ4zYcUFDUD41lJc1fG8+5IU9DaNSJAgal866FGvmD5EbWQgnEC6kO1gGLsX0esNkfnJSndbTXA3r7UA==", "dependencies": { - "@babel/code-frame": "^7.24.1", - "@babel/generator": "^7.24.1", + "@babel/code-frame": "^7.24.2", + "@babel/generator": "^7.24.5", "@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.24.1", - "@babel/types": "^7.24.0", + "@babel/helper-split-export-declaration": "^7.24.5", + "@babel/parser": "^7.24.5", + "@babel/types": "^7.24.5", "debug": "^4.3.1", "globals": "^11.1.0" }, @@ -2021,12 +1948,12 @@ } }, "node_modules/@babel/types": { - "version": "7.24.0", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.24.0.tgz", - "integrity": "sha512-+j7a5c253RfKh8iABBhywc8NSfP5LURe7Uh4qpsh6jc+aLJguvmIUBdjSdEMQv2bENrCR5MfRdjGo7vzS/ob7w==", + "version": "7.24.5", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.24.5.tgz", + "integrity": "sha512-6mQNsaLeXTw0nxYUYu+NSa4Hx4BlF1x1x8/PMFbiR+GBSr+2DkECc69b8hgy2frEodNcvPffeH8YfWd3LI6jhQ==", "dependencies": { - "@babel/helper-string-parser": "^7.23.4", - "@babel/helper-validator-identifier": "^7.22.20", + "@babel/helper-string-parser": "^7.24.1", + "@babel/helper-validator-identifier": "^7.24.5", "to-fast-properties": "^2.0.0" }, "engines": { @@ -2063,6 +1990,55 @@ "webpack": "^4.30.0 || ^5.0.0" } }, + "node_modules/@cerner/duplicate-package-checker-webpack-plugin/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/@cerner/duplicate-package-checker-webpack-plugin/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/@cerner/duplicate-package-checker-webpack-plugin/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/@cerner/duplicate-package-checker-webpack-plugin/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, "node_modules/@cerner/duplicate-package-checker-webpack-plugin/node_modules/lru-cache": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", @@ -2090,6 +2066,18 @@ "node": ">=10" } }, + "node_modules/@cerner/duplicate-package-checker-webpack-plugin/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/@cerner/duplicate-package-checker-webpack-plugin/node_modules/yallist": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", @@ -2178,6 +2166,55 @@ "@cerner/package-json-lint": "2" } }, + "node_modules/@cerner/package-json-lint/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/@cerner/package-json-lint/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/@cerner/package-json-lint/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/@cerner/package-json-lint/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, "node_modules/@cerner/package-json-lint/node_modules/lru-cache": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", @@ -2205,6 +2242,18 @@ "node": ">=10" } }, + "node_modules/@cerner/package-json-lint/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/@cerner/package-json-lint/node_modules/yallist": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", @@ -2255,62 +2304,12 @@ "react-intl": "^2.8.0 || ^5.0.0" } }, - "node_modules/@cerner/terra-aggregate-translations/node_modules/ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dev": true, - "dependencies": { - "color-convert": "^1.9.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/@cerner/terra-aggregate-translations/node_modules/chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dev": true, - "dependencies": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/@cerner/terra-aggregate-translations/node_modules/color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "dev": true, - "dependencies": { - "color-name": "1.1.3" - } - }, - "node_modules/@cerner/terra-aggregate-translations/node_modules/color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", - "dev": true - }, "node_modules/@cerner/terra-aggregate-translations/node_modules/commander": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/commander/-/commander-3.0.2.tgz", "integrity": "sha512-Gar0ASD4BDyKC4hl4DwHqDrmvjoxWKZigVnAbn5H1owvm4CxCPdb0HQDehwNYMJpla5+M2tPmPARzhtYuwpHow==", "dev": true }, - "node_modules/@cerner/terra-aggregate-translations/node_modules/escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", - "dev": true, - "engines": { - "node": ">=0.8.0" - } - }, "node_modules/@cerner/terra-aggregate-translations/node_modules/fs-extra": { "version": "8.1.0", "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz", @@ -2325,15 +2324,6 @@ "node": ">=6 <7 || >=8" } }, - "node_modules/@cerner/terra-aggregate-translations/node_modules/has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", - "dev": true, - "engines": { - "node": ">=4" - } - }, "node_modules/@cerner/terra-aggregate-translations/node_modules/jsonfile": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", @@ -2343,18 +2333,6 @@ "graceful-fs": "^4.1.6" } }, - "node_modules/@cerner/terra-aggregate-translations/node_modules/supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dev": true, - "dependencies": { - "has-flag": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, "node_modules/@cerner/terra-aggregate-translations/node_modules/universalify": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", @@ -2405,6 +2383,26 @@ "react-dom": "^16.8.5" } }, + "node_modules/@cerner/terra-enzyme-intl": { + "version": "4.9.0", + "resolved": "https://registry.npmjs.org/@cerner/terra-enzyme-intl/-/terra-enzyme-intl-4.9.0.tgz", + "integrity": "sha512-UwaTKsGTh1nYxZyFfIz7t3Lx50HptFbwTctCZg5kg6i0j3TeSpv/Ztl0bTA6XYxpVjwuQULDCYzpFAperIKAMA==", + "dev": true, + "hasInstallScript": true, + "dependencies": { + "prop-types": "^15.7.2", + "react-intl": "^5.25.1" + }, + "engines": { + "node": "10 || 12 || 14", + "npm": "6 || 9" + }, + "peerDependencies": { + "enzyme": "^3.9.0", + "react": "^16.8.5", + "react-dom": "^16.8.5" + } + }, "node_modules/@cerner/terra-functional-testing": { "version": "4.8.0", "resolved": "https://registry.npmjs.org/@cerner/terra-functional-testing/-/terra-functional-testing-4.8.0.tgz", @@ -2459,6 +2457,67 @@ "webpack-cli": "^3.3.12 || ^4.0.0" } }, + "node_modules/@cerner/terra-functional-testing/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/@cerner/terra-functional-testing/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/@cerner/terra-functional-testing/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/@cerner/terra-functional-testing/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/@cerner/terra-functional-testing/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/@cerner/terra-open-source-scripts": { "version": "1.16.0", "resolved": "https://registry.npmjs.org/@cerner/terra-open-source-scripts/-/terra-open-source-scripts-1.16.0.tgz", @@ -2717,6 +2776,14 @@ "tslib": "^2.1.0" } }, + "node_modules/@formatjs/fast-memoize": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@formatjs/fast-memoize/-/fast-memoize-1.2.1.tgz", + "integrity": "sha512-Rg0e76nomkz3vF9IPlKeV+Qynok0r7YZjL6syLz4/urSg0IbjPZCB/iYUMNsYA643gh4mgrX3T7KEIFIxJBQeg==", + "dependencies": { + "tslib": "^2.1.0" + } + }, "node_modules/@formatjs/icu-messageformat-parser": { "version": "2.0.15", "resolved": "https://registry.npmjs.org/@formatjs/icu-messageformat-parser/-/icu-messageformat-parser-2.0.15.tgz", @@ -2776,44 +2843,58 @@ "tslib": "^2.1.0" } }, - "node_modules/@formatjs/intl-datetimeformat": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/@formatjs/intl-datetimeformat/-/intl-datetimeformat-5.0.2.tgz", - "integrity": "sha512-yk7CItBMgtUsub123+iqOfXoqG6JHJIl3Pke7eOYb7QFAPsOZliAJb2i0+Tr1FXWcm1PdWZVHEv6C2l4nEmQdw==", + "node_modules/@formatjs/intl": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/@formatjs/intl/-/intl-2.2.1.tgz", + "integrity": "sha512-vgvyUOOrzqVaOFYzTf2d3+ToSkH2JpR7x/4U1RyoHQLmvEaTQvXJ7A2qm1Iy3brGNXC/+/7bUlc3lpH+h/LOJA==", "dependencies": { "@formatjs/ecma402-abstract": "1.11.4", - "@formatjs/intl-localematcher": "0.2.25", + "@formatjs/fast-memoize": "1.2.1", + "@formatjs/icu-messageformat-parser": "2.1.0", + "@formatjs/intl-displaynames": "5.4.3", + "@formatjs/intl-listformat": "6.5.3", + "intl-messageformat": "9.13.0", "tslib": "^2.1.0" + }, + "peerDependencies": { + "typescript": "^4.5" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } } }, - "node_modules/@formatjs/intl-datetimeformat/node_modules/@formatjs/ecma402-abstract": { - "version": "1.11.4", - "resolved": "https://registry.npmjs.org/@formatjs/ecma402-abstract/-/ecma402-abstract-1.11.4.tgz", - "integrity": "sha512-EBikYFp2JCdIfGEb5G9dyCkTGDmC57KSHhRQOC3aYxoPWVZvfWCDjZwkGYHN7Lis/fmuWl906bnNTJifDQ3sXw==", + "node_modules/@formatjs/intl-displaynames": { + "version": "5.4.3", + "resolved": "https://registry.npmjs.org/@formatjs/intl-displaynames/-/intl-displaynames-5.4.3.tgz", + "integrity": "sha512-4r12A3mS5dp5hnSaQCWBuBNfi9Amgx2dzhU4lTFfhSxgb5DOAiAbMpg6+7gpWZgl4ahsj3l2r/iHIjdmdXOE2Q==", "dependencies": { + "@formatjs/ecma402-abstract": "1.11.4", "@formatjs/intl-localematcher": "0.2.25", "tslib": "^2.1.0" } }, - "node_modules/@formatjs/intl-getcanonicallocales": { - "version": "1.9.2", - "resolved": "https://registry.npmjs.org/@formatjs/intl-getcanonicallocales/-/intl-getcanonicallocales-1.9.2.tgz", - "integrity": "sha512-69WTStIJI2ikErOU1Il4NQKLVV8f2x6awr7+/dZz0uihuI7uQRcZtI6k/BBt4EtYaEl6w65YjUF93VuE015C0w==", + "node_modules/@formatjs/intl-displaynames/node_modules/@formatjs/ecma402-abstract": { + "version": "1.11.4", + "resolved": "https://registry.npmjs.org/@formatjs/ecma402-abstract/-/ecma402-abstract-1.11.4.tgz", + "integrity": "sha512-EBikYFp2JCdIfGEb5G9dyCkTGDmC57KSHhRQOC3aYxoPWVZvfWCDjZwkGYHN7Lis/fmuWl906bnNTJifDQ3sXw==", "dependencies": { + "@formatjs/intl-localematcher": "0.2.25", "tslib": "^2.1.0" } }, - "node_modules/@formatjs/intl-locale": { - "version": "2.4.47", - "resolved": "https://registry.npmjs.org/@formatjs/intl-locale/-/intl-locale-2.4.47.tgz", - "integrity": "sha512-yEpjx6RgVVG3pPsxb/jydhnq/A02KmjMste5U/wWxscRK0sny8LPIoBwgkOQycRoMRLNlLemJaQB7VbHZJ9OVg==", + "node_modules/@formatjs/intl-listformat": { + "version": "6.5.3", + "resolved": "https://registry.npmjs.org/@formatjs/intl-listformat/-/intl-listformat-6.5.3.tgz", + "integrity": "sha512-ozpz515F/+3CU+HnLi5DYPsLa6JoCfBggBSSg/8nOB5LYSFW9+ZgNQJxJ8tdhKYeODT+4qVHX27EeJLoxLGLNg==", "dependencies": { "@formatjs/ecma402-abstract": "1.11.4", - "@formatjs/intl-getcanonicallocales": "1.9.2", + "@formatjs/intl-localematcher": "0.2.25", "tslib": "^2.1.0" } }, - "node_modules/@formatjs/intl-locale/node_modules/@formatjs/ecma402-abstract": { + "node_modules/@formatjs/intl-listformat/node_modules/@formatjs/ecma402-abstract": { "version": "1.11.4", "resolved": "https://registry.npmjs.org/@formatjs/ecma402-abstract/-/ecma402-abstract-1.11.4.tgz", "integrity": "sha512-EBikYFp2JCdIfGEb5G9dyCkTGDmC57KSHhRQOC3aYxoPWVZvfWCDjZwkGYHN7Lis/fmuWl906bnNTJifDQ3sXw==", @@ -2839,6 +2920,34 @@ "tslib": "^2.1.0" } }, + "node_modules/@formatjs/intl/node_modules/@formatjs/ecma402-abstract": { + "version": "1.11.4", + "resolved": "https://registry.npmjs.org/@formatjs/ecma402-abstract/-/ecma402-abstract-1.11.4.tgz", + "integrity": "sha512-EBikYFp2JCdIfGEb5G9dyCkTGDmC57KSHhRQOC3aYxoPWVZvfWCDjZwkGYHN7Lis/fmuWl906bnNTJifDQ3sXw==", + "dependencies": { + "@formatjs/intl-localematcher": "0.2.25", + "tslib": "^2.1.0" + } + }, + "node_modules/@formatjs/intl/node_modules/@formatjs/icu-messageformat-parser": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@formatjs/icu-messageformat-parser/-/icu-messageformat-parser-2.1.0.tgz", + "integrity": "sha512-Qxv/lmCN6hKpBSss2uQ8IROVnta2r9jd3ymUEIjm2UyIkUCHVcbUVRGL/KS/wv7876edvsPe+hjHVJ4z8YuVaw==", + "dependencies": { + "@formatjs/ecma402-abstract": "1.11.4", + "@formatjs/icu-skeleton-parser": "1.3.6", + "tslib": "^2.1.0" + } + }, + "node_modules/@formatjs/intl/node_modules/@formatjs/icu-skeleton-parser": { + "version": "1.3.6", + "resolved": "https://registry.npmjs.org/@formatjs/icu-skeleton-parser/-/icu-skeleton-parser-1.3.6.tgz", + "integrity": "sha512-I96mOxvml/YLrwU2Txnd4klA7V8fRhb6JG/4hm3VMNmeJo1F03IpV2L3wWt7EweqNLES59SZ4d6hVOPCSf80Bg==", + "dependencies": { + "@formatjs/ecma402-abstract": "1.11.4", + "tslib": "^2.1.0" + } + }, "node_modules/@formatjs/ts-transformer": { "version": "3.7.0", "resolved": "https://registry.npmjs.org/@formatjs/ts-transformer/-/ts-transformer-3.7.0.tgz", @@ -2866,6 +2975,67 @@ "integrity": "sha512-84iSqGXoO+Ha16j8pRZ/L90vDMKX04QTYMTfYeE1WrjWaZXuchBehGUZEpNgx7JnmlrIHdnABmpjrQjhCnNldQ==", "dev": true }, + "node_modules/@formatjs/ts-transformer/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/@formatjs/ts-transformer/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/@formatjs/ts-transformer/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/@formatjs/ts-transformer/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/@formatjs/ts-transformer/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/@gar/promisify": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/@gar/promisify/-/promisify-1.1.3.tgz", @@ -3114,6 +3284,55 @@ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, + "node_modules/@jest/console/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/@jest/console/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/@jest/console/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/@jest/console/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, "node_modules/@jest/console/node_modules/slash": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", @@ -3123,6 +3342,18 @@ "node": ">=8" } }, + "node_modules/@jest/console/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/@jest/core": { "version": "27.5.1", "resolved": "https://registry.npmjs.org/@jest/core/-/core-27.5.1.tgz", @@ -3170,6 +3401,55 @@ } } }, + "node_modules/@jest/core/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/@jest/core/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/@jest/core/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/@jest/core/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, "node_modules/@jest/core/node_modules/rimraf": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", @@ -3194,6 +3474,18 @@ "node": ">=8" } }, + "node_modules/@jest/core/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/@jest/environment": { "version": "27.5.1", "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-27.5.1.tgz", @@ -3262,17 +3554,54 @@ } }, "node_modules/@jest/globals/node_modules/ansi-styles": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", - "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, "engines": { - "node": ">=10" + "node": ">=8" }, "funding": { "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, + "node_modules/@jest/globals/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/@jest/globals/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/@jest/globals/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, "node_modules/@jest/globals/node_modules/diff-sequences": { "version": "27.5.1", "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-27.5.1.tgz", @@ -3350,12 +3679,36 @@ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, + "node_modules/@jest/globals/node_modules/pretty-format/node_modules/ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, "node_modules/@jest/globals/node_modules/react-is": { "version": "17.0.2", "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz", "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==", "dev": true }, + "node_modules/@jest/globals/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/@jest/reporters": { "version": "27.5.1", "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-27.5.1.tgz", @@ -3400,6 +3753,55 @@ } } }, + "node_modules/@jest/reporters/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/@jest/reporters/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/@jest/reporters/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/@jest/reporters/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, "node_modules/@jest/reporters/node_modules/slash": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", @@ -3409,6 +3811,18 @@ "node": ">=8" } }, + "node_modules/@jest/reporters/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/@jest/schemas": { "version": "29.6.3", "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-29.6.3.tgz", @@ -3491,6 +3905,55 @@ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, + "node_modules/@jest/transform/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/@jest/transform/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/@jest/transform/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/@jest/transform/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, "node_modules/@jest/transform/node_modules/convert-source-map": { "version": "1.9.0", "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz", @@ -3506,6 +3969,18 @@ "node": ">=8" } }, + "node_modules/@jest/transform/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/@jest/types": { "version": "27.5.1", "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.5.1.tgz", @@ -3522,6 +3997,67 @@ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, + "node_modules/@jest/types/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/@jest/types/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/@jest/types/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/@jest/types/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/@jest/types/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/@jimp/bmp": { "version": "0.13.0", "resolved": "https://registry.npmjs.org/@jimp/bmp/-/bmp-0.13.0.tgz", @@ -4085,6 +4621,67 @@ "node": "^14.17.0 || >=16.0.0" } }, + "node_modules/@lerna/child-process/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/@lerna/child-process/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/@lerna/child-process/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/@lerna/child-process/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/@lerna/child-process/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/@lerna/create": { "version": "6.6.2", "resolved": "https://registry.npmjs.org/@lerna/create/-/create-6.6.2.tgz", @@ -4700,6 +5297,21 @@ "node": ">= 14" } }, + "node_modules/@lerna/legacy-package-management/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, "node_modules/@lerna/legacy-package-management/node_modules/are-we-there-yet": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-3.0.1.tgz", @@ -4738,6 +5350,24 @@ "url": "https://github.com/chalk/chalk?sponsor=1" } }, + "node_modules/@lerna/legacy-package-management/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/@lerna/legacy-package-management/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, "node_modules/@lerna/legacy-package-management/node_modules/cosmiconfig": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.0.0.tgz", @@ -5450,9 +6080,9 @@ } }, "node_modules/@lerna/legacy-package-management/node_modules/react-is": { - "version": "18.2.0", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz", - "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==", + "version": "18.3.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz", + "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==", "dev": true }, "node_modules/@lerna/legacy-package-management/node_modules/semver": { @@ -8033,6 +8663,67 @@ "node": ">=10" } }, + "node_modules/@testing-library/dom/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/@testing-library/dom/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/@testing-library/dom/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/@testing-library/dom/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/@testing-library/dom/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/@testing-library/jest-dom": { "version": "5.17.0", "resolved": "https://registry.npmjs.org/@testing-library/jest-dom/-/jest-dom-5.17.0.tgz", @@ -8055,6 +8746,21 @@ "yarn": ">=1" } }, + "node_modules/@testing-library/jest-dom/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, "node_modules/@testing-library/jest-dom/node_modules/aria-query": { "version": "5.3.0", "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-5.3.0.tgz", @@ -8077,6 +8783,24 @@ "node": ">=8" } }, + "node_modules/@testing-library/jest-dom/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/@testing-library/jest-dom/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, "node_modules/@testing-library/jest-dom/node_modules/supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", @@ -8539,17 +9263,54 @@ } }, "node_modules/@types/jest/node_modules/ansi-styles": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", - "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, "engines": { - "node": ">=10" + "node": ">=8" }, "funding": { "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, + "node_modules/@types/jest/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/@types/jest/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/@types/jest/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, "node_modules/@types/jest/node_modules/diff-sequences": { "version": "29.6.3", "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-29.6.3.tgz", @@ -8665,10 +9426,22 @@ "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, + "node_modules/@types/jest/node_modules/pretty-format/node_modules/ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, "node_modules/@types/jest/node_modules/react-is": { - "version": "18.2.0", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz", - "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==", + "version": "18.3.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz", + "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==", "dev": true }, "node_modules/@types/jest/node_modules/slash": { @@ -8680,6 +9453,18 @@ "node": ">=8" } }, + "node_modules/@types/jest/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/@types/json-schema": { "version": "7.0.15", "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz", @@ -8862,18 +9647,18 @@ "dev": true }, "node_modules/@types/react": { - "version": "18.2.79", - "resolved": "https://registry.npmjs.org/@types/react/-/react-18.2.79.tgz", - "integrity": "sha512-RwGAGXPl9kSXwdNTafkOEuFrTBD5SA2B3iEB96xi8+xu5ddUa/cpvyVCSNn+asgLCTHkb5ZxN8gbuibYJi4s1w==", + "version": "18.3.1", + "resolved": "https://registry.npmjs.org/@types/react/-/react-18.3.1.tgz", + "integrity": "sha512-V0kuGBX3+prX+DQ/7r2qsv1NsdfnCLnTgnRJ1pYnxykBhGMz+qj+box5lq7XsO5mtZsBqpjwwTu/7wszPfMBcw==", "dependencies": { "@types/prop-types": "*", "csstype": "^3.0.2" } }, "node_modules/@types/react-dom": { - "version": "18.2.25", - "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-18.2.25.tgz", - "integrity": "sha512-o/V48vf4MQh7juIKZU2QGDfli6p1+OOi5oXx36Hffpc9adsHeXjVp8rHuPkjd8VT8sOJ2Zp05HR7CdpGTIUFUA==", + "version": "18.3.0", + "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-18.3.0.tgz", + "integrity": "sha512-EhwApuTmMBmXuFOikhQLIBUn6uFg81SwLMOAUgodJF14SOBOCMdU04gDoYi0WOJJHD144TL32z4yDqCW3dnkQg==", "dev": true, "dependencies": { "@types/react": "*" @@ -8891,9 +9676,9 @@ } }, "node_modules/@types/react-test-renderer": { - "version": "18.0.7", - "resolved": "https://registry.npmjs.org/@types/react-test-renderer/-/react-test-renderer-18.0.7.tgz", - "integrity": "sha512-1+ANPOWc6rB3IkSnElhjv6VLlKg2dSv/OWClUyZimbLsQyBn8Js9Vtdsi3UICJ2rIQ3k2la06dkB+C92QfhKmg==", + "version": "18.3.0", + "resolved": "https://registry.npmjs.org/@types/react-test-renderer/-/react-test-renderer-18.3.0.tgz", + "integrity": "sha512-HW4MuEYxfDbOHQsVlY/XtOvNHftCVEPhJF2pQXXwcUiUF+Oyb0usgp48HSgpK5rt8m9KZb22yqOeZm+rrVG8gw==", "dev": true, "dependencies": { "@types/react": "*" @@ -9302,6 +10087,37 @@ "undici-types": "~5.26.4" } }, + "node_modules/@wdio/cli/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/@wdio/cli/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, "node_modules/@wdio/cli/node_modules/cliui": { "version": "8.0.1", "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", @@ -9316,6 +10132,24 @@ "node": ">=12" } }, + "node_modules/@wdio/cli/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/@wdio/cli/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, "node_modules/@wdio/cli/node_modules/fs-extra": { "version": "11.2.0", "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.2.0.tgz", @@ -9356,6 +10190,18 @@ "node": ">=12.0.0" } }, + "node_modules/@wdio/cli/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/@wdio/cli/node_modules/yargs": { "version": "17.7.2", "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", @@ -9477,6 +10323,67 @@ "node": ">=12.0.0" } }, + "node_modules/@wdio/logger/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/@wdio/logger/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/@wdio/logger/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/@wdio/logger/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/@wdio/logger/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/@wdio/mocha-framework": { "version": "7.33.0", "resolved": "https://registry.npmjs.org/@wdio/mocha-framework/-/mocha-framework-7.33.0.tgz", @@ -9598,6 +10505,67 @@ "@wdio/cli": "^7.0.0" } }, + "node_modules/@wdio/spec-reporter/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/@wdio/spec-reporter/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/@wdio/spec-reporter/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/@wdio/spec-reporter/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/@wdio/spec-reporter/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/@wdio/sync": { "version": "7.27.0", "resolved": "https://registry.npmjs.org/@wdio/sync/-/sync-7.27.0.tgz", @@ -10411,15 +11379,15 @@ } }, "node_modules/ajv-formats/node_modules/ajv": { - "version": "8.12.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz", - "integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==", + "version": "8.13.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.13.0.tgz", + "integrity": "sha512-PRA911Blj99jR5RMeTunVbNXMF6Lp4vZXnk5GQjcnUWUTsrXtekg/pnmFFI2u/I36Y/2bITGS30GZCXei6uNkA==", "dev": true, "dependencies": { - "fast-deep-equal": "^3.1.1", + "fast-deep-equal": "^3.1.3", "json-schema-traverse": "^1.0.0", "require-from-string": "^2.0.2", - "uri-js": "^4.2.2" + "uri-js": "^4.4.1" }, "funding": { "type": "github", @@ -10497,17 +11465,14 @@ } }, "node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", "dependencies": { - "color-convert": "^2.0.1" + "color-convert": "^1.9.0" }, "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "node": ">=4" } }, "node_modules/ansi-wrap": { @@ -11098,9 +12063,9 @@ "optional": true }, "node_modules/aws-sdk": { - "version": "2.1606.0", - "resolved": "https://registry.npmjs.org/aws-sdk/-/aws-sdk-2.1606.0.tgz", - "integrity": "sha512-Sg1y0p93XI0ce86D9mi402sKMiH7LDoq6k3YzMja9yA0i3i0Pg3py4jjZ7p3HlKNOsDUF0t+9DLdCjtbTbuM6w==", + "version": "2.1610.0", + "resolved": "https://registry.npmjs.org/aws-sdk/-/aws-sdk-2.1610.0.tgz", + "integrity": "sha512-+s4NmrB4wc4AzJcBwdwBy2UrLyOKMtRNzyqtkUF+j9qAeuoVBrGzxMCW82T8hayCxO2V4DamB2kvbDgLkpPhMg==", "dev": true, "hasInstallScript": true, "optional": true, @@ -11236,6 +12201,55 @@ "@babel/core": "^7.8.0" } }, + "node_modules/babel-jest/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/babel-jest/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/babel-jest/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/babel-jest/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, "node_modules/babel-jest/node_modules/slash": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", @@ -11245,6 +12259,18 @@ "node": ">=8" } }, + "node_modules/babel-jest/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/babel-loader": { "version": "8.3.0", "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-8.3.0.tgz", @@ -11264,20 +12290,6 @@ "webpack": ">=2" } }, - "node_modules/babel-loader/node_modules/loader-utils": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.4.tgz", - "integrity": "sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw==", - "dev": true, - "dependencies": { - "big.js": "^5.2.2", - "emojis-list": "^3.0.0", - "json5": "^2.1.2" - }, - "engines": { - "node": ">=8.9.0" - } - }, "node_modules/babel-loader/node_modules/make-dir": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", @@ -12048,15 +13060,6 @@ "node": ">=0.10.0" } }, - "node_modules/cac/node_modules/escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", - "dev": true, - "engines": { - "node": ">=0.8.0" - } - }, "node_modules/cac/node_modules/find-up": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", @@ -12478,9 +13481,9 @@ } }, "node_modules/caniuse-lite": { - "version": "1.0.30001612", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001612.tgz", - "integrity": "sha512-lFgnZ07UhaCcsSZgWW0K5j4e69dK1u/ltrL9lTUiFOwNHs12S3UMIEYgBV0Z6C6hRDev7iRnMzzYmKabYdXF9g==", + "version": "1.0.30001614", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001614.tgz", + "integrity": "sha512-jmZQ1VpmlRwHgdP1/uiKzgiAuGOfLEJsYFP4+GBou/QQ4U6IOJCB4NP1c+1p9RGLpwObcT94jA5/uO+F1vBbog==", "funding": [ { "type": "opencollective", @@ -12512,29 +13515,35 @@ } }, "node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" }, "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" + "node": ">=4" + } + }, + "node_modules/chalk/node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "engines": { + "node": ">=4" } }, "node_modules/chalk/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", "dependencies": { - "has-flag": "^4.0.0" + "has-flag": "^3.0.0" }, "engines": { - "node": ">=8" + "node": ">=4" } }, "node_modules/char-regex": { @@ -12668,6 +13677,18 @@ "node": ">=12.13.0" } }, + "node_modules/chrome-launcher/node_modules/escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/chrome-trace-event": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz", @@ -12692,9 +13713,9 @@ } }, "node_modules/cjs-module-lexer": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-1.2.3.tgz", - "integrity": "sha512-0TNiGstbQmCFwt4akjjBg5pLRTSyj/PkWQ1ZoO2zntmg9yLqSRxwEa4iCfQLGjqhiqBfOJa7W/E8wfGrTDmlZQ==", + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-1.3.1.tgz", + "integrity": "sha512-a3KdPAANPbNE4ZUv9h6LckSl9zLsYOP4MBmhIPkRaeyybt+r4UghLvq+xw/YwUcC1gqylCkL4rdVs3Lwupjm4Q==", "dev": true }, "node_modules/classlist-polyfill": { @@ -12888,20 +13909,17 @@ "dev": true }, "node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" + "color-name": "1.1.3" } }, "node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==" }, "node_modules/color-support": { "version": "1.1.3", @@ -13614,20 +14632,6 @@ "webpack": "^4.27.0 || ^5.0.0" } }, - "node_modules/css-loader/node_modules/loader-utils": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.4.tgz", - "integrity": "sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw==", - "dev": true, - "dependencies": { - "big.js": "^5.2.2", - "emojis-list": "^3.0.0", - "json5": "^2.1.2" - }, - "engines": { - "node": ">=8.9.0" - } - }, "node_modules/css-loader/node_modules/lru-cache": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", @@ -13937,89 +14941,18 @@ "node": ">=14.13.1" } }, - "node_modules/danger/node_modules/ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dev": true, - "dependencies": { - "color-convert": "^1.9.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/danger/node_modules/chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dev": true, - "dependencies": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/danger/node_modules/color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "dev": true, - "dependencies": { - "color-name": "1.1.3" - } - }, - "node_modules/danger/node_modules/color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", - "dev": true - }, "node_modules/danger/node_modules/commander": { "version": "2.20.3", "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", "dev": true }, - "node_modules/danger/node_modules/escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", - "dev": true, - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/danger/node_modules/has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", - "dev": true, - "engines": { - "node": ">=4" - } - }, "node_modules/danger/node_modules/regenerator-runtime": { "version": "0.13.11", "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.11.tgz", "integrity": "sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==", "dev": true }, - "node_modules/danger/node_modules/supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dev": true, - "dependencies": { - "has-flag": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, "node_modules/dargs": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/dargs/-/dargs-7.0.0.tgz", @@ -14974,9 +15907,9 @@ } }, "node_modules/electron-to-chromium": { - "version": "1.4.748", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.748.tgz", - "integrity": "sha512-VWqjOlPZn70UZ8FTKUOkUvBLeTQ0xpty66qV0yJcAGY2/CthI4xyW9aEozRVtuwv3Kpf5xTesmJUcPwuJmgP4A==" + "version": "1.4.752", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.752.tgz", + "integrity": "sha512-P3QJreYI/AUTcfBVrC4zy9KvnZWekViThgQMX/VpJ+IsOBbcX5JFpORM4qWapwWQ+agb2nYAOyn/4PMXOk0m2Q==" }, "node_modules/email-addresses": { "version": "5.0.0", @@ -15098,9 +16031,9 @@ } }, "node_modules/envinfo": { - "version": "7.12.0", - "resolved": "https://registry.npmjs.org/envinfo/-/envinfo-7.12.0.tgz", - "integrity": "sha512-Iw9rQJBGpJRd3rwXm9ft/JiGoAZmLxxJZELYDQoPRZ4USVhkKtIcNBPw6U+/K2mBpaqM25JSV6Yl4Az9vO2wJg==", + "version": "7.13.0", + "resolved": "https://registry.npmjs.org/envinfo/-/envinfo-7.13.0.tgz", + "integrity": "sha512-cvcaMr7KqXVh4nyzGTVqTum+gAiL265x5jUWQIDLq//zOGbW+gSW/C+OWLleY/rs9Qole6AZLMXPbtIFQbqu+Q==", "dev": true, "bin": { "envinfo": "dist/cli.js" @@ -15338,14 +16271,14 @@ } }, "node_modules/es-iterator-helpers": { - "version": "1.0.18", - "resolved": "https://registry.npmjs.org/es-iterator-helpers/-/es-iterator-helpers-1.0.18.tgz", - "integrity": "sha512-scxAJaewsahbqTYrGKJihhViaM6DDZDDoucfvzNbK0pOren1g/daDQ3IAhzn+1G14rBG7w+i5N+qul60++zlKA==", + "version": "1.0.19", + "resolved": "https://registry.npmjs.org/es-iterator-helpers/-/es-iterator-helpers-1.0.19.tgz", + "integrity": "sha512-zoMwbCcH5hwUkKJkT8kDIBZSz9I6mVG//+lDCinLCGov4+r7NIy0ld8o03M0cJxl2spVf6ESYVS6/gpIfq1FFw==", "dev": true, "dependencies": { "call-bind": "^1.0.7", "define-properties": "^1.2.1", - "es-abstract": "^1.23.0", + "es-abstract": "^1.23.3", "es-errors": "^1.3.0", "es-set-tostringtag": "^2.0.3", "function-bind": "^1.1.2", @@ -15363,9 +16296,9 @@ } }, "node_modules/es-module-lexer": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.5.0.tgz", - "integrity": "sha512-pqrTKmwEIgafsYZAGw9kszYzmagcE/n4dbgwGWLEXg7J4QFJVQRBld8j3Q3GNez79jzxZshq0bcT962QHOghjw==" + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.5.2.tgz", + "integrity": "sha512-l60ETUTmLqbVbVHv1J4/qj+M8nq7AwMzEcg3kmJDt9dCNrTk+yHcYFf/Kw75pMDwd9mPcIGCG5LcS20SxYRzFA==" }, "node_modules/es-object-atoms": { "version": "1.0.0", @@ -15431,15 +16364,11 @@ "dev": true }, "node_modules/escape-string-regexp": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", - "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", - "dev": true, + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=0.8.0" } }, "node_modules/escodegen": { @@ -15874,9 +16803,9 @@ } }, "node_modules/eslint-plugin-react-hooks": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-4.6.0.tgz", - "integrity": "sha512-oFc7Itz9Qxh2x4gNHStv3BqJq54ExXmfC+a1NjAta66IAN87Wu0R/QArgIS9qKzX3dXKPI9H5crl9QchNMY9+g==", + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-4.6.2.tgz", + "integrity": "sha512-QzliNJq4GinDBcD8gPB5v0wh6g8q3SUi6EFF0x8N/BL9PoVs0atuGc47ozMRyOWAKdwaZ5OnbOEa3WR+dSGKuQ==", "dev": true, "engines": { "node": ">=10" @@ -15951,6 +16880,67 @@ "@babel/highlight": "^7.10.4" } }, + "node_modules/eslint/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/eslint/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/eslint/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/eslint/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/eslint/node_modules/escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/eslint/node_modules/globals": { "version": "13.24.0", "resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz", @@ -16002,6 +16992,18 @@ "node": ">=10" } }, + "node_modules/eslint/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/eslint/node_modules/type-fest": { "version": "0.20.2", "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", @@ -16295,17 +17297,54 @@ } }, "node_modules/expect-webdriverio/node_modules/ansi-styles": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", - "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, "engines": { - "node": ">=10" + "node": ">=8" }, "funding": { "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, + "node_modules/expect-webdriverio/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/expect-webdriverio/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/expect-webdriverio/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, "node_modules/expect-webdriverio/node_modules/diff-sequences": { "version": "28.1.1", "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-28.1.1.tgz", @@ -16422,10 +17461,22 @@ "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" } }, + "node_modules/expect-webdriverio/node_modules/pretty-format/node_modules/ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, "node_modules/expect-webdriverio/node_modules/react-is": { - "version": "18.2.0", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz", - "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==", + "version": "18.3.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz", + "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==", "dev": true }, "node_modules/expect-webdriverio/node_modules/slash": { @@ -16437,6 +17488,18 @@ "node": ">=8" } }, + "node_modules/expect-webdriverio/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/expect/node_modules/@jest/types": { "version": "26.6.2", "resolved": "https://registry.npmjs.org/@jest/types/-/types-26.6.2.tgz", @@ -16462,6 +17525,55 @@ "@types/yargs-parser": "*" } }, + "node_modules/expect/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/expect/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/expect/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/expect/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, "node_modules/expect/node_modules/jest-message-util": { "version": "26.6.2", "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-26.6.2.tgz", @@ -16500,6 +17612,18 @@ "node": ">=8" } }, + "node_modules/expect/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/exponential-backoff": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/exponential-backoff/-/exponential-backoff-3.1.1.tgz", @@ -16773,15 +17897,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/figures/node_modules/escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", - "dev": true, - "engines": { - "node": ">=0.8.0" - } - }, "node_modules/file-entry-cache": { "version": "6.0.1", "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", @@ -16814,20 +17929,6 @@ "webpack": "^4.0.0 || ^5.0.0" } }, - "node_modules/file-loader/node_modules/loader-utils": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.4.tgz", - "integrity": "sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw==", - "dev": true, - "dependencies": { - "big.js": "^5.2.2", - "emojis-list": "^3.0.0", - "json5": "^2.1.2" - }, - "engines": { - "node": ">=8.9.0" - } - }, "node_modules/file-loader/node_modules/schema-utils": { "version": "3.3.0", "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.3.0.tgz", @@ -17301,9 +18402,9 @@ } }, "node_modules/fs-monkey": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/fs-monkey/-/fs-monkey-1.0.5.tgz", - "integrity": "sha512-8uMbBjrhzW76TYgEV27Y5E//W2f/lTFmx78P2w19FZSxarhI/798APGQyuGCwmkNxgwGRhrLfvWyLBvNtuOmew==", + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/fs-monkey/-/fs-monkey-1.0.6.tgz", + "integrity": "sha512-b1FMfwetIKymC0eioW7mTywihSQE4oLzQn1dB6rZB5fx/3NpNEdAWeCSMB+60/AeT0TCXsxzAlcYVEFCTAksWg==", "dev": true }, "node_modules/fs-readdir-recursive": { @@ -17941,11 +19042,12 @@ } }, "node_modules/globalthis": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.3.tgz", - "integrity": "sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA==", + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.4.tgz", + "integrity": "sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==", "dependencies": { - "define-properties": "^1.1.3" + "define-properties": "^1.2.1", + "gopd": "^1.0.1" }, "engines": { "node": ">= 0.4" @@ -18663,6 +19765,30 @@ "webpack": "^4.0.0 || ^5.0.0" } }, + "node_modules/html-webpack-plugin/node_modules/json5": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz", + "integrity": "sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==", + "dependencies": { + "minimist": "^1.2.0" + }, + "bin": { + "json5": "lib/cli.js" + } + }, + "node_modules/html-webpack-plugin/node_modules/loader-utils": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.2.tgz", + "integrity": "sha512-I5d00Pd/jwMD2QCduo657+YM/6L3KZu++pmX9VFncxaxvHcru9jx1lBaFft+r4Mt2jK0Yhp41XlRAihzPxHNCg==", + "dependencies": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^1.0.1" + }, + "engines": { + "node": ">=4.0.0" + } + }, "node_modules/html-webpack-plugin/node_modules/tapable": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/tapable/-/tapable-1.1.3.tgz", @@ -19219,6 +20345,67 @@ "node": ">=8.0.0" } }, + "node_modules/inquirer/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/inquirer/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/inquirer/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/inquirer/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/inquirer/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/internal-slot": { "version": "1.0.7", "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.7.tgz", @@ -19246,41 +20433,48 @@ "resolved": "https://registry.npmjs.org/intl/-/intl-1.2.5.tgz", "integrity": "sha512-rK0KcPHeBFBcqsErKSpvZnrOmWOj+EmDkyJ57e90YWaQNqbcivcqmKDlHEeNprDWOsKzPsh1BfSpPQdDvclHVw==" }, - "node_modules/intl-format-cache": { - "version": "2.2.9", - "resolved": "https://registry.npmjs.org/intl-format-cache/-/intl-format-cache-2.2.9.tgz", - "integrity": "sha512-Zv/u8wRpekckv0cLkwpVdABYST4hZNTDaX7reFetrYTJwxExR2VyTqQm+l0WmL0Qo8Mjb9Tf33qnfj0T7pjxdQ==", - "peer": true - }, "node_modules/intl-locales-supported": { "version": "1.8.11", "resolved": "https://registry.npmjs.org/intl-locales-supported/-/intl-locales-supported-1.8.11.tgz", "integrity": "sha512-J+RhLNDxEvaNPdsoWz2KKlLSqU0MfV4Pd6zS1Yx/tN/KGN5QYe4Z2+ifJod95LlaA4K6qogwrSzm/WyTNOV6RA==" }, "node_modules/intl-messageformat": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/intl-messageformat/-/intl-messageformat-2.2.0.tgz", - "integrity": "sha512-I+tSvHnXqJYjDfNmY95tpFMj30yoakC6OXAo+wu/wTMy6tA/4Fd4mvV7Uzs4cqK/Ap29sHhwjcY+78a8eifcXw==", - "peer": true, + "version": "9.13.0", + "resolved": "https://registry.npmjs.org/intl-messageformat/-/intl-messageformat-9.13.0.tgz", + "integrity": "sha512-7sGC7QnSQGa5LZP7bXLDhVDtQOeKGeBFGHF2Y8LVBwYZoQZCgWeKoPGTa5GMG8g/TzDgeXuYJQis7Ggiw2xTOw==", "dependencies": { - "intl-messageformat-parser": "1.4.0" + "@formatjs/ecma402-abstract": "1.11.4", + "@formatjs/fast-memoize": "1.2.1", + "@formatjs/icu-messageformat-parser": "2.1.0", + "tslib": "^2.1.0" } }, - "node_modules/intl-messageformat-parser": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/intl-messageformat-parser/-/intl-messageformat-parser-1.4.0.tgz", - "integrity": "sha512-/XkqFHKezO6UcF4Av2/Lzfrez18R0jyw7kRFhSeB/YRakdrgSc9QfFZUwNJI9swMwMoNPygK1ArC5wdFSjPw+A==", - "deprecated": "We've written a new parser that's 6x faster and is backwards compatible. Please use @formatjs/icu-messageformat-parser", - "peer": true + "node_modules/intl-messageformat/node_modules/@formatjs/ecma402-abstract": { + "version": "1.11.4", + "resolved": "https://registry.npmjs.org/@formatjs/ecma402-abstract/-/ecma402-abstract-1.11.4.tgz", + "integrity": "sha512-EBikYFp2JCdIfGEb5G9dyCkTGDmC57KSHhRQOC3aYxoPWVZvfWCDjZwkGYHN7Lis/fmuWl906bnNTJifDQ3sXw==", + "dependencies": { + "@formatjs/intl-localematcher": "0.2.25", + "tslib": "^2.1.0" + } }, - "node_modules/intl-relativeformat": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/intl-relativeformat/-/intl-relativeformat-2.2.0.tgz", - "integrity": "sha512-4bV/7kSKaPEmu6ArxXf9xjv1ny74Zkwuey8Pm01NH4zggPP7JHwg2STk8Y3JdspCKRDriwIyLRfEXnj2ZLr4Bw==", - "deprecated": "This package has been deprecated, please see migration guide at 'https://github.com/formatjs/formatjs/tree/master/packages/intl-relativeformat#migration-guide'", - "peer": true, + "node_modules/intl-messageformat/node_modules/@formatjs/icu-messageformat-parser": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@formatjs/icu-messageformat-parser/-/icu-messageformat-parser-2.1.0.tgz", + "integrity": "sha512-Qxv/lmCN6hKpBSss2uQ8IROVnta2r9jd3ymUEIjm2UyIkUCHVcbUVRGL/KS/wv7876edvsPe+hjHVJ4z8YuVaw==", + "dependencies": { + "@formatjs/ecma402-abstract": "1.11.4", + "@formatjs/icu-skeleton-parser": "1.3.6", + "tslib": "^2.1.0" + } + }, + "node_modules/intl-messageformat/node_modules/@formatjs/icu-skeleton-parser": { + "version": "1.3.6", + "resolved": "https://registry.npmjs.org/@formatjs/icu-skeleton-parser/-/icu-skeleton-parser-1.3.6.tgz", + "integrity": "sha512-I96mOxvml/YLrwU2Txnd4klA7V8fRhb6JG/4hm3VMNmeJo1F03IpV2L3wWt7EweqNLES59SZ4d6hVOPCSf80Bg==", "dependencies": { - "intl-messageformat": "^2.0.0" + "@formatjs/ecma402-abstract": "1.11.4", + "tslib": "^2.1.0" } }, "node_modules/invariant": { @@ -20195,6 +21389,67 @@ "node": ">=10" } }, + "node_modules/jake/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jake/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/jake/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/jake/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/jake/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/jest": { "version": "27.5.1", "resolved": "https://registry.npmjs.org/jest/-/jest-27.5.1.tgz", @@ -20265,17 +21520,54 @@ } }, "node_modules/jest-circus/node_modules/ansi-styles": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", - "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, "engines": { - "node": ">=10" + "node": ">=8" }, "funding": { "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, + "node_modules/jest-circus/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/jest-circus/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/jest-circus/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, "node_modules/jest-circus/node_modules/diff-sequences": { "version": "27.5.1", "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-27.5.1.tgz", @@ -20353,6 +21645,18 @@ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, + "node_modules/jest-circus/node_modules/pretty-format/node_modules/ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, "node_modules/jest-circus/node_modules/react-is": { "version": "17.0.2", "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz", @@ -20368,6 +21672,18 @@ "node": ">=8" } }, + "node_modules/jest-circus/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/jest-cli": { "version": "27.5.1", "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-27.5.1.tgz", @@ -20402,6 +21718,67 @@ } } }, + "node_modules/jest-cli/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jest-cli/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/jest-cli/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/jest-cli/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/jest-cli/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/jest-config": { "version": "27.5.1", "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-27.5.1.tgz", @@ -20446,17 +21823,54 @@ } }, "node_modules/jest-config/node_modules/ansi-styles": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", - "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, "engines": { - "node": ">=10" + "node": ">=8" }, "funding": { "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, + "node_modules/jest-config/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/jest-config/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/jest-config/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, "node_modules/jest-config/node_modules/jest-get-type": { "version": "27.5.1", "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-27.5.1.tgz", @@ -20480,6 +21894,18 @@ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, + "node_modules/jest-config/node_modules/pretty-format/node_modules/ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, "node_modules/jest-config/node_modules/react-is": { "version": "17.0.2", "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz", @@ -20495,6 +21921,18 @@ "node": ">=8" } }, + "node_modules/jest-config/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/jest-diff": { "version": "26.6.2", "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-26.6.2.tgz", @@ -20510,6 +21948,67 @@ "node": ">= 10.14.2" } }, + "node_modules/jest-diff/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jest-diff/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/jest-diff/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/jest-diff/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/jest-diff/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/jest-docblock": { "version": "27.5.1", "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-27.5.1.tgz", @@ -20539,17 +22038,54 @@ } }, "node_modules/jest-each/node_modules/ansi-styles": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", - "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, "engines": { - "node": ">=10" + "node": ">=8" }, "funding": { "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, + "node_modules/jest-each/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/jest-each/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/jest-each/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, "node_modules/jest-each/node_modules/jest-get-type": { "version": "27.5.1", "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-27.5.1.tgz", @@ -20573,12 +22109,36 @@ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, + "node_modules/jest-each/node_modules/pretty-format/node_modules/ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, "node_modules/jest-each/node_modules/react-is": { "version": "17.0.2", "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz", "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==", "dev": true }, + "node_modules/jest-each/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/jest-environment-jsdom": { "version": "27.5.1", "resolved": "https://registry.npmjs.org/jest-environment-jsdom/-/jest-environment-jsdom-27.5.1.tgz", @@ -20678,17 +22238,54 @@ } }, "node_modules/jest-jasmine2/node_modules/ansi-styles": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", - "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, "engines": { - "node": ">=10" + "node": ">=8" }, "funding": { "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, + "node_modules/jest-jasmine2/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/jest-jasmine2/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/jest-jasmine2/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, "node_modules/jest-jasmine2/node_modules/diff-sequences": { "version": "27.5.1", "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-27.5.1.tgz", @@ -20766,12 +22363,36 @@ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, + "node_modules/jest-jasmine2/node_modules/pretty-format/node_modules/ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, "node_modules/jest-jasmine2/node_modules/react-is": { "version": "17.0.2", "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz", "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==", "dev": true }, + "node_modules/jest-jasmine2/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/jest-leak-detector": { "version": "27.5.1", "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-27.5.1.tgz", @@ -20841,6 +22462,67 @@ "node": ">= 10.14.2" } }, + "node_modules/jest-matcher-utils/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jest-matcher-utils/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/jest-matcher-utils/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/jest-matcher-utils/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/jest-matcher-utils/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/jest-message-util": { "version": "27.5.1", "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-27.5.1.tgz", @@ -20862,17 +22544,54 @@ } }, "node_modules/jest-message-util/node_modules/ansi-styles": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", - "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, "engines": { - "node": ">=10" + "node": ">=8" }, "funding": { "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, + "node_modules/jest-message-util/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/jest-message-util/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/jest-message-util/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, "node_modules/jest-message-util/node_modules/pretty-format": { "version": "27.5.1", "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-27.5.1.tgz", @@ -20887,6 +22606,18 @@ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, + "node_modules/jest-message-util/node_modules/pretty-format/node_modules/ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, "node_modules/jest-message-util/node_modules/react-is": { "version": "17.0.2", "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz", @@ -20902,6 +22633,18 @@ "node": ">=8" } }, + "node_modules/jest-message-util/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/jest-mock": { "version": "27.5.1", "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-27.5.1.tgz", @@ -20976,6 +22719,55 @@ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, + "node_modules/jest-resolve/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jest-resolve/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/jest-resolve/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/jest-resolve/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, "node_modules/jest-resolve/node_modules/slash": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", @@ -20985,6 +22777,18 @@ "node": ">=8" } }, + "node_modules/jest-resolve/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/jest-runner": { "version": "27.5.1", "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-27.5.1.tgz", @@ -21017,6 +22821,67 @@ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, + "node_modules/jest-runner/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jest-runner/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/jest-runner/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/jest-runner/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/jest-runner/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/jest-runtime": { "version": "27.5.1", "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-27.5.1.tgz", @@ -21050,6 +22915,55 @@ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, + "node_modules/jest-runtime/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jest-runtime/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/jest-runtime/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/jest-runtime/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, "node_modules/jest-runtime/node_modules/slash": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", @@ -21059,6 +22973,18 @@ "node": ">=8" } }, + "node_modules/jest-runtime/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/jest-serializer": { "version": "27.5.1", "resolved": "https://registry.npmjs.org/jest-serializer/-/jest-serializer-27.5.1.tgz", @@ -21106,17 +23032,54 @@ } }, "node_modules/jest-snapshot/node_modules/ansi-styles": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", - "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, "engines": { - "node": ">=10" + "node": ">=8" }, "funding": { "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, + "node_modules/jest-snapshot/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/jest-snapshot/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/jest-snapshot/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, "node_modules/jest-snapshot/node_modules/diff-sequences": { "version": "27.5.1", "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-27.5.1.tgz", @@ -21206,6 +23169,18 @@ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, + "node_modules/jest-snapshot/node_modules/pretty-format/node_modules/ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, "node_modules/jest-snapshot/node_modules/react-is": { "version": "17.0.2", "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz", @@ -21227,6 +23202,18 @@ "node": ">=10" } }, + "node_modules/jest-snapshot/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/jest-snapshot/node_modules/yallist": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", @@ -21250,6 +23237,67 @@ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, + "node_modules/jest-util/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jest-util/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/jest-util/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/jest-util/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/jest-util/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/jest-validate": { "version": "27.5.1", "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-27.5.1.tgz", @@ -21268,12 +23316,15 @@ } }, "node_modules/jest-validate/node_modules/ansi-styles": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", - "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, "engines": { - "node": ">=10" + "node": ">=8" }, "funding": { "url": "https://github.com/chalk/ansi-styles?sponsor=1" @@ -21291,6 +23342,40 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/jest-validate/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/jest-validate/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/jest-validate/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, "node_modules/jest-validate/node_modules/jest-get-type": { "version": "27.5.1", "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-27.5.1.tgz", @@ -21314,12 +23399,36 @@ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, + "node_modules/jest-validate/node_modules/pretty-format/node_modules/ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, "node_modules/jest-validate/node_modules/react-is": { "version": "17.0.2", "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz", "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==", "dev": true }, + "node_modules/jest-validate/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/jest-watcher": { "version": "27.5.1", "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-27.5.1.tgz", @@ -21338,6 +23447,67 @@ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, + "node_modules/jest-watcher/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jest-watcher/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/jest-watcher/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/jest-watcher/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/jest-watcher/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/jest-worker": { "version": "27.5.1", "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz", @@ -22230,6 +24400,21 @@ "node": ">= 14" } }, + "node_modules/lerna/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, "node_modules/lerna/node_modules/are-we-there-yet": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-3.0.1.tgz", @@ -22274,6 +24459,24 @@ "url": "https://github.com/chalk/chalk?sponsor=1" } }, + "node_modules/lerna/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/lerna/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, "node_modules/lerna/node_modules/cosmiconfig": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.0.0.tgz", @@ -23322,27 +25525,16 @@ } }, "node_modules/loader-utils": { - "version": "1.4.2", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.2.tgz", - "integrity": "sha512-I5d00Pd/jwMD2QCduo657+YM/6L3KZu++pmX9VFncxaxvHcru9jx1lBaFft+r4Mt2jK0Yhp41XlRAihzPxHNCg==", + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.4.tgz", + "integrity": "sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw==", "dependencies": { "big.js": "^5.2.2", "emojis-list": "^3.0.0", - "json5": "^1.0.1" + "json5": "^2.1.2" }, "engines": { - "node": ">=4.0.0" - } - }, - "node_modules/loader-utils/node_modules/json5": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz", - "integrity": "sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==", - "dependencies": { - "minimist": "^1.2.0" - }, - "bin": { - "json5": "lib/cli.js" + "node": ">=8.9.0" } }, "node_modules/locate-path": { @@ -23608,6 +25800,67 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/log-symbols/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/log-symbols/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/log-symbols/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/log-symbols/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/log-symbols/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/loglevel": { "version": "1.9.1", "resolved": "https://registry.npmjs.org/loglevel/-/loglevel-1.9.1.tgz", @@ -24461,20 +26714,6 @@ "webpack": "^4.4.0 || ^5.0.0" } }, - "node_modules/mini-css-extract-plugin/node_modules/loader-utils": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.4.tgz", - "integrity": "sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw==", - "dev": true, - "dependencies": { - "big.js": "^5.2.2", - "emojis-list": "^3.0.0", - "json5": "^2.1.2" - }, - "engines": { - "node": ">=8.9.0" - } - }, "node_modules/mini-css-extract-plugin/node_modules/schema-utils": { "version": "3.3.0", "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.3.0.tgz", @@ -24897,6 +27136,18 @@ "node": ">=0.3.1" } }, + "node_modules/mocha/node_modules/escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/mocha/node_modules/find-up": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", @@ -26075,12 +28326,43 @@ } } }, + "node_modules/nx/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, "node_modules/nx/node_modules/argparse": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", "dev": true }, + "node_modules/nx/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, "node_modules/nx/node_modules/cli-spinners": { "version": "2.6.1", "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.6.1.tgz", @@ -26093,6 +28375,24 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/nx/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/nx/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, "node_modules/nx/node_modules/enquirer": { "version": "2.3.6", "resolved": "https://registry.npmjs.org/enquirer/-/enquirer-2.3.6.tgz", @@ -26196,6 +28496,18 @@ "node": ">=4" } }, + "node_modules/nx/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/nx/node_modules/tmp": { "version": "0.2.3", "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.2.3.tgz", @@ -26516,17 +28828,17 @@ } }, "node_modules/optionator": { - "version": "0.9.3", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.3.tgz", - "integrity": "sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg==", + "version": "0.9.4", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.4.tgz", + "integrity": "sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==", "dev": true, "dependencies": { - "@aashutoshrathi/word-wrap": "^1.2.3", "deep-is": "^0.1.3", "fast-levenshtein": "^2.0.6", "levn": "^0.4.1", "prelude-ls": "^1.2.1", - "type-check": "^0.4.0" + "type-check": "^0.4.0", + "word-wrap": "^1.2.5" }, "engines": { "node": ">= 0.8.0" @@ -26555,6 +28867,67 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/ora/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/ora/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/ora/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/ora/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/ora/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/os-tmpdir": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", @@ -27581,9 +29954,9 @@ } }, "node_modules/path-scurry/node_modules/lru-cache": { - "version": "10.2.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.2.0.tgz", - "integrity": "sha512-2bIM8x+VAf6JT4bKAljS1qUWgMsqZRPGJS6FSahIMPVvctcNhyVp7AJu7quxOW9jwkryBReKZY5tY5JYv2n/7Q==", + "version": "10.2.2", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.2.2.tgz", + "integrity": "sha512-9hp3Vp2/hFQUiIwKo8XCeFVnrg8Pk3TYNPIR7tJADKi5YfcF7vEaK7avFHTlSy3kOKYaJQaalfEo6YuXdceBOQ==", "dev": true, "engines": { "node": "14 || >=16.14" @@ -27832,20 +30205,6 @@ "webpack": "^4.0.0 || ^5.0.0" } }, - "node_modules/postcss-loader/node_modules/loader-utils": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.4.tgz", - "integrity": "sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw==", - "dev": true, - "dependencies": { - "big.js": "^5.2.2", - "emojis-list": "^3.0.0", - "json5": "^2.1.2" - }, - "engines": { - "node": ">=8.9.0" - } - }, "node_modules/postcss-loader/node_modules/lru-cache": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", @@ -28043,6 +30402,12 @@ "node": ">=10" } }, + "node_modules/postcss-values-parser/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, "node_modules/postcss-values-parser/node_modules/picocolors": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", @@ -28124,12 +30489,73 @@ "@types/yargs-parser": "*" } }, + "node_modules/pretty-format/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/pretty-format/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/pretty-format/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/pretty-format/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, "node_modules/pretty-format/node_modules/react-is": { "version": "17.0.2", "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz", "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==", "dev": true }, + "node_modules/pretty-format/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/pretty-ms": { "version": "7.0.1", "resolved": "https://registry.npmjs.org/pretty-ms/-/pretty-ms-7.0.1.tgz", @@ -28620,20 +31046,6 @@ "webpack": "^4.0.0 || ^5.0.0" } }, - "node_modules/raw-loader/node_modules/loader-utils": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.4.tgz", - "integrity": "sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw==", - "dev": true, - "dependencies": { - "big.js": "^5.2.2", - "emojis-list": "^3.0.0", - "json5": "^2.1.2" - }, - "engines": { - "node": ">=8.9.0" - } - }, "node_modules/raw-loader/node_modules/schema-utils": { "version": "3.3.0", "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.3.0.tgz", @@ -28815,20 +31227,57 @@ } }, "node_modules/react-intl": { - "version": "2.9.0", - "resolved": "https://registry.npmjs.org/react-intl/-/react-intl-2.9.0.tgz", - "integrity": "sha512-27jnDlb/d2A7mSJwrbOBnUgD+rPep+abmoJE511Tf8BnoONIAUehy/U1zZCHGO17mnOwMWxqN4qC0nW11cD6rA==", - "peer": true, + "version": "5.25.1", + "resolved": "https://registry.npmjs.org/react-intl/-/react-intl-5.25.1.tgz", + "integrity": "sha512-pkjdQDvpJROoXLMltkP/5mZb0/XqrqLoPGKUCfbdkP8m6U9xbK40K51Wu+a4aQqTEvEK5lHBk0fWzUV72SJ3Hg==", "dependencies": { - "hoist-non-react-statics": "^3.3.0", - "intl-format-cache": "^2.0.5", - "intl-messageformat": "^2.1.0", - "intl-relativeformat": "^2.1.0", - "invariant": "^2.1.1" + "@formatjs/ecma402-abstract": "1.11.4", + "@formatjs/icu-messageformat-parser": "2.1.0", + "@formatjs/intl": "2.2.1", + "@formatjs/intl-displaynames": "5.4.3", + "@formatjs/intl-listformat": "6.5.3", + "@types/hoist-non-react-statics": "^3.3.1", + "@types/react": "16 || 17 || 18", + "hoist-non-react-statics": "^3.3.2", + "intl-messageformat": "9.13.0", + "tslib": "^2.1.0" }, "peerDependencies": { - "prop-types": "^15.5.4", - "react": "^0.14.9 || ^15.0.0 || ^16.0.0" + "react": "^16.3.0 || 17 || 18", + "typescript": "^4.5" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/react-intl/node_modules/@formatjs/ecma402-abstract": { + "version": "1.11.4", + "resolved": "https://registry.npmjs.org/@formatjs/ecma402-abstract/-/ecma402-abstract-1.11.4.tgz", + "integrity": "sha512-EBikYFp2JCdIfGEb5G9dyCkTGDmC57KSHhRQOC3aYxoPWVZvfWCDjZwkGYHN7Lis/fmuWl906bnNTJifDQ3sXw==", + "dependencies": { + "@formatjs/intl-localematcher": "0.2.25", + "tslib": "^2.1.0" + } + }, + "node_modules/react-intl/node_modules/@formatjs/icu-messageformat-parser": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@formatjs/icu-messageformat-parser/-/icu-messageformat-parser-2.1.0.tgz", + "integrity": "sha512-Qxv/lmCN6hKpBSss2uQ8IROVnta2r9jd3ymUEIjm2UyIkUCHVcbUVRGL/KS/wv7876edvsPe+hjHVJ4z8YuVaw==", + "dependencies": { + "@formatjs/ecma402-abstract": "1.11.4", + "@formatjs/icu-skeleton-parser": "1.3.6", + "tslib": "^2.1.0" + } + }, + "node_modules/react-intl/node_modules/@formatjs/icu-skeleton-parser": { + "version": "1.3.6", + "resolved": "https://registry.npmjs.org/@formatjs/icu-skeleton-parser/-/icu-skeleton-parser-1.3.6.tgz", + "integrity": "sha512-I96mOxvml/YLrwU2Txnd4klA7V8fRhb6JG/4hm3VMNmeJo1F03IpV2L3wWt7EweqNLES59SZ4d6hVOPCSf80Bg==", + "dependencies": { + "@formatjs/ecma402-abstract": "1.11.4", + "tslib": "^2.1.0" } }, "node_modules/react-is": { @@ -30200,56 +32649,6 @@ "rtlcss": "bin/rtlcss.js" } }, - "node_modules/rtlcss/node_modules/ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dev": true, - "dependencies": { - "color-convert": "^1.9.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/rtlcss/node_modules/chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dev": true, - "dependencies": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/rtlcss/node_modules/color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "dev": true, - "dependencies": { - "color-name": "1.1.3" - } - }, - "node_modules/rtlcss/node_modules/color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", - "dev": true - }, - "node_modules/rtlcss/node_modules/escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", - "dev": true, - "engines": { - "node": ">=0.8.0" - } - }, "node_modules/rtlcss/node_modules/has-flag": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", @@ -30406,9 +32805,9 @@ "dev": true }, "node_modules/sass": { - "version": "1.75.0", - "resolved": "https://registry.npmjs.org/sass/-/sass-1.75.0.tgz", - "integrity": "sha512-ShMYi3WkrDWxExyxSZPst4/okE9ts46xZmJDSawJQrnte7M1V9fScVB+uNXOVKRBt0PggHOwoZcn8mYX4trnBw==", + "version": "1.76.0", + "resolved": "https://registry.npmjs.org/sass/-/sass-1.76.0.tgz", + "integrity": "sha512-nc3LeqvF2FNW5xGF1zxZifdW3ffIz5aBb7I7tSvOoNu7z1RQ6pFt9MBuiPtjgaI62YWrM/txjWlOCFiGtf2xpw==", "dev": true, "dependencies": { "chokidar": ">=3.0.0 <4.0.0", @@ -30459,20 +32858,6 @@ } } }, - "node_modules/sass-loader/node_modules/loader-utils": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.4.tgz", - "integrity": "sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw==", - "dev": true, - "dependencies": { - "big.js": "^5.2.2", - "emojis-list": "^3.0.0", - "json5": "^2.1.2" - }, - "engines": { - "node": ">=8.9.0" - } - }, "node_modules/sass-loader/node_modules/lru-cache": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", @@ -31028,6 +33413,39 @@ "url": "https://github.com/chalk/slice-ansi?sponsor=1" } }, + "node_modules/slice-ansi/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/slice-ansi/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/slice-ansi/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, "node_modules/smart-buffer": { "version": "4.2.0", "resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz", @@ -31578,15 +33996,6 @@ "node": ">=0.10.0" } }, - "node_modules/strip-outer/node_modules/escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", - "dev": true, - "engines": { - "node": ">=0.8.0" - } - }, "node_modules/strong-log-transformer": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/strong-log-transformer/-/strong-log-transformer-2.1.0.tgz", @@ -32302,15 +34711,15 @@ } }, "node_modules/table/node_modules/ajv": { - "version": "8.12.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz", - "integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==", + "version": "8.13.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.13.0.tgz", + "integrity": "sha512-PRA911Blj99jR5RMeTunVbNXMF6Lp4vZXnk5GQjcnUWUTsrXtekg/pnmFFI2u/I36Y/2bITGS30GZCXei6uNkA==", "dev": true, "dependencies": { - "fast-deep-equal": "^3.1.1", + "fast-deep-equal": "^3.1.3", "json-schema-traverse": "^1.0.0", "require-from-string": "^2.0.2", - "uri-js": "^4.2.2" + "uri-js": "^4.4.1" }, "funding": { "type": "github", @@ -32690,9 +35099,9 @@ "link": true }, "node_modules/terra-arrange": { - "version": "3.56.0", - "resolved": "https://registry.npmjs.org/terra-arrange/-/terra-arrange-3.56.0.tgz", - "integrity": "sha512-0tvf1qpDM1iOGS3GtTES+zTNaQZYjt/18F1gn84eFiJ8/ARnx5nRRgLCSXvkY0fHMm1GmtytxQhg5wP1CtXEIg==", + "version": "3.56.1", + "resolved": "https://registry.npmjs.org/terra-arrange/-/terra-arrange-3.56.1.tgz", + "integrity": "sha512-8Rcdr0ASrNm6wjTqxlvSu11tUtrM+jeZGsyvniyfyGNu2Bx68CVF8zS3Q2Bb94qNQxzhEvjjY7Im2LizuPol8g==", "dependencies": { "classnames": "^2.2.5", "lodash.uniqueid": "^4.0.1", @@ -32720,22 +35129,6 @@ "react-intl": ">=2.8.0 <6.0.0" } }, - "node_modules/terra-base": { - "version": "5.53.0", - "resolved": "https://registry.npmjs.org/terra-base/-/terra-base-5.53.0.tgz", - "integrity": "sha512-hIXcwrUfwI2dWxrsIRxwKxQ2FJI2/d69DULxBOx3eOtDkMdL1kHg8zHq/y2ImJNa2fcMSppF2T7u3hWnRk1gdg==", - "dependencies": { - "classnames": "^2.2.5", - "prop-types": "^15.5.8", - "terra-i18n": "^4.42.0" - }, - "peerDependencies": { - "react": "^16.8.5", - "react-dom": "^16.8.5", - "react-intl": "^2.8.0", - "terra-theme-provider": "^4.16.0" - } - }, "node_modules/terra-breakpoints": { "version": "2.40.0", "resolved": "https://registry.npmjs.org/terra-breakpoints/-/terra-breakpoints-2.40.0.tgz", @@ -32846,20 +35239,6 @@ "terra-theme-provider": "^4.16.0" } }, - "node_modules/terra-enzyme-intl": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/terra-enzyme-intl/-/terra-enzyme-intl-3.4.0.tgz", - "integrity": "sha512-rgr0/vNg8GPc/r7mDu/hDSp5/y6rxEpYxiPK4RnG6H+mFAUeW5o/LNzPnSA5aAxKLC1MzAPQDF/riGg8zrRIdQ==", - "dev": true, - "engines": { - "node": ">=8.9.2" - }, - "peerDependencies": { - "enzyme": "3.x", - "react": "16.x", - "react-intl": ">= 2.7" - } - }, "node_modules/terra-form-checkbox": { "version": "4.26.0", "resolved": "https://registry.npmjs.org/terra-form-checkbox/-/terra-form-checkbox-4.26.0.tgz", @@ -32969,22 +35348,6 @@ "terra-theme-provider": "^4.16.0" } }, - "node_modules/terra-i18n": { - "version": "4.42.0", - "resolved": "https://registry.npmjs.org/terra-i18n/-/terra-i18n-4.42.0.tgz", - "integrity": "sha512-HkJr7nClsMvL9NttL7FGeNziFIJ4Syvwi/rqTHY93ZoVS/7Luu5sk45AwQci4Nnx/jTJ919LW5QaeKP6/KJRvQ==", - "dependencies": { - "classnames": "^2.2.5", - "intl": "^1.2.5", - "intl-locales-supported": ">=1.8.4 <1.8.12 || ^1.8.13", - "prop-types": "^15.5.8" - }, - "peerDependencies": { - "react": "^16.8.5", - "react-dom": "^16.8.5", - "react-intl": "^2.8.0" - } - }, "node_modules/terra-icon": { "version": "3.60.0", "resolved": "https://registry.npmjs.org/terra-icon/-/terra-icon-3.60.0.tgz", @@ -33614,9 +35977,9 @@ } }, "node_modules/terser-webpack-plugin/node_modules/terser": { - "version": "5.30.4", - "resolved": "https://registry.npmjs.org/terser/-/terser-5.30.4.tgz", - "integrity": "sha512-xRdd0v64a8mFK9bnsKVdoNP9GQIKUAaJPTaqEQDL4w/J8WaW4sWXXoMZ+6SimPkfT5bElreXf8m9HnmPc3E1BQ==", + "version": "5.31.0", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.31.0.tgz", + "integrity": "sha512-Q1JFAoUKE5IMfI4Z/lkE/E6+SwgzO+x4tq4v1AyBLRj8VSYvRO6A/rQrPg1yud4g0En9EKI1TvFRF2tQFcoUkg==", "dev": true, "dependencies": { "@jridgewell/source-map": "^0.3.3", @@ -33802,9 +36165,9 @@ } }, "node_modules/tough-cookie": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-4.1.3.tgz", - "integrity": "sha512-aX/y5pVRkfRnfmuX+OdbSdXvPe6ieKX/G2s7e98f4poJHnqH3281gDPm/metm6E/WRamfx7WC4HUqkWHfQHprw==", + "version": "4.1.4", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-4.1.4.tgz", + "integrity": "sha512-Loo5UUvLD9ScZ6jh8beX1T6sO1w2/MpCRpEP7V280GKMVUQ0Jzar2U3UJPsrdbziLEMMhu3Ujnq//rhiFuIeag==", "dev": true, "dependencies": { "psl": "^1.1.33", @@ -33873,15 +36236,6 @@ "node": ">=0.10.0" } }, - "node_modules/trim-repeated/node_modules/escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", - "dev": true, - "engines": { - "node": ">=0.8.0" - } - }, "node_modules/trim-trailing-lines": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/trim-trailing-lines/-/trim-trailing-lines-1.1.4.tgz", @@ -34216,7 +36570,7 @@ "version": "4.9.5", "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.9.5.tgz", "integrity": "sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==", - "dev": true, + "devOptional": true, "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" @@ -34548,9 +36902,9 @@ } }, "node_modules/update-browserslist-db": { - "version": "1.0.13", - "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.13.tgz", - "integrity": "sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg==", + "version": "1.0.14", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.14.tgz", + "integrity": "sha512-JixKH8GR2pWYshIPUg/NujK3JO7JiqEEUiNArE86NQyrgUuZeTlZQN3xuS/yiV5Kb48ev9K6RqNkaJjXsdg7Jw==", "funding": [ { "type": "opencollective", @@ -34566,7 +36920,7 @@ } ], "dependencies": { - "escalade": "^3.1.1", + "escalade": "^3.1.2", "picocolors": "^1.0.0" }, "bin": { @@ -35283,15 +37637,15 @@ } }, "node_modules/webpack-dev-middleware/node_modules/ajv": { - "version": "8.12.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz", - "integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==", + "version": "8.13.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.13.0.tgz", + "integrity": "sha512-PRA911Blj99jR5RMeTunVbNXMF6Lp4vZXnk5GQjcnUWUTsrXtekg/pnmFFI2u/I36Y/2bITGS30GZCXei6uNkA==", "dev": true, "dependencies": { - "fast-deep-equal": "^3.1.1", + "fast-deep-equal": "^3.1.3", "json-schema-traverse": "^1.0.0", "require-from-string": "^2.0.2", - "uri-js": "^4.2.2" + "uri-js": "^4.4.1" }, "funding": { "type": "github", @@ -35395,15 +37749,15 @@ } }, "node_modules/webpack-dev-server/node_modules/ajv": { - "version": "8.12.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz", - "integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==", + "version": "8.13.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.13.0.tgz", + "integrity": "sha512-PRA911Blj99jR5RMeTunVbNXMF6Lp4vZXnk5GQjcnUWUTsrXtekg/pnmFFI2u/I36Y/2bITGS30GZCXei6uNkA==", "dev": true, "dependencies": { - "fast-deep-equal": "^3.1.1", + "fast-deep-equal": "^3.1.3", "json-schema-traverse": "^1.0.0", "require-from-string": "^2.0.2", - "uri-js": "^4.2.2" + "uri-js": "^4.4.1" }, "funding": { "type": "github", @@ -35472,9 +37826,9 @@ } }, "node_modules/webpack-dev-server/node_modules/ws": { - "version": "8.16.0", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.16.0.tgz", - "integrity": "sha512-HS0c//TP7Ina87TfiPUz1rQzMhHrl/SG2guqRcTOIUYD2q8uhUdNHZYJUaQ8aTGPzCh+c6oawMKW35nFl1dxyQ==", + "version": "8.17.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.17.0.tgz", + "integrity": "sha512-uJq6108EgZMAl20KagGkzCKfMEjxmKvZHG7Tlq0Z6nOky7YF7aq4mOx6xK8TJ/i1LeK4Qus7INktacctDgY8Ow==", "dev": true, "engines": { "node": ">=10.0.0" @@ -35579,9 +37933,9 @@ } }, "node_modules/webpack/node_modules/terser": { - "version": "5.30.4", - "resolved": "https://registry.npmjs.org/terser/-/terser-5.30.4.tgz", - "integrity": "sha512-xRdd0v64a8mFK9bnsKVdoNP9GQIKUAaJPTaqEQDL4w/J8WaW4sWXXoMZ+6SimPkfT5bElreXf8m9HnmPc3E1BQ==", + "version": "5.31.0", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.31.0.tgz", + "integrity": "sha512-Q1JFAoUKE5IMfI4Z/lkE/E6+SwgzO+x4tq4v1AyBLRj8VSYvRO6A/rQrPg1yud4g0En9EKI1TvFRF2tQFcoUkg==", "dependencies": { "@jridgewell/source-map": "^0.3.3", "acorn": "^8.8.2", @@ -35804,6 +38158,15 @@ "integrity": "sha512-CC1bOL87PIWSBhDcTrdeLo6eGT7mCFtrg0uIJtqJUFyK+eJnzl8A1niH56uu7KMa5XFrtiV+AQuHO3n7DsHnLQ==", "dev": true }, + "node_modules/word-wrap": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz", + "integrity": "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/wordwrap": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", @@ -35850,6 +38213,69 @@ "url": "https://github.com/chalk/wrap-ansi?sponsor=1" } }, + "node_modules/wrap-ansi-cjs/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/wrap-ansi-cjs/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/wrap-ansi-cjs/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/wrap-ansi/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/wrap-ansi/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/wrap-ansi/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + }, "node_modules/wrappy": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", @@ -36163,15 +38589,6 @@ "which": "^1.2.9" } }, - "node_modules/yarn-install/node_modules/escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", - "dev": true, - "engines": { - "node": ">=0.8.0" - } - }, "node_modules/yarn-install/node_modules/lru-cache": { "version": "4.1.5", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz", @@ -36266,13 +38683,16 @@ } }, "packages/terra-application": { - "version": "1.58.0", + "version": "2.1.0", "license": "Apache-2.0", "dependencies": { "@cerner/terra-docs": "1", + "@formatjs/intl-relativetimeformat": "8", "classnames": "2", "eventemitter3": "4", "focus-trap-react": "6", + "intl": "1", + "intl-locales-supported": ">=1.8.4 <1.8.12 || ^1.8.13", "keycode-js": "3", "lodash.debounce": "4", "mutationobserver-shim": "<=0.3.3", @@ -36283,7 +38703,6 @@ "terra-action-footer": "2", "terra-action-header": "2", "terra-avatar": "3", - "terra-base": "5", "terra-breakpoints": "2", "terra-button": "3", "terra-collapsible-menu-view": "6", @@ -36312,15 +38731,15 @@ "peerDependencies": { "react": "16", "react-dom": "16", - "react-intl": "2" + "react-intl": "5" } }, "packages/terra-application-docs": { "name": "@cerner/terra-application-docs", - "version": "2.15.0", + "version": "3.1.0", "license": "Apache-2.0", "dependencies": { - "@cerner/terra-dev-site": "^7.14.0", + "@cerner/terra-dev-site": "8", "@cerner/terra-docs": "1", "classnames": "2", "prop-types": "15", @@ -36331,22 +38750,19 @@ "terra-mixins": "1", "terra-toolbar": "1" }, - "devDependencies": { - "terra-application": "^1.58.0" - }, "engines": { "node": ">=10.13.0" }, "peerDependencies": { "react": "16", "react-dom": "16", - "react-intl": "2 || 3 || 4 || 5", - "terra-application": "1" + "react-intl": "5", + "terra-application": "2" } }, "packages/terra-dev-site": { "name": "@cerner/terra-dev-site", - "version": "7.14.0", + "version": "8.1.0", "license": "Apache-2.0", "dependencies": { "@cerner/terra-polyfill": "^1.3.0", @@ -36394,52 +38810,69 @@ "peerDependencies": { "react": "16", "react-dom": "16", - "terra-application": "1", + "terra-application": "2", "webpack": "4 || 5" } }, - "packages/terra-dev-site/node_modules/@cerner/terra-polyfill": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/@cerner/terra-polyfill/-/terra-polyfill-1.4.0.tgz", - "integrity": "sha512-00Ac5ZvEx+f47zBrFeQFi6Mw7J304ujn8vvZkfJxGpvqLwiJgaM5oQWi89kQ1m1OqHSTE3PdXPLRPRa55jfTDw==", - "dependencies": { - "@formatjs/intl-datetimeformat": "^5.0.2", - "@formatjs/intl-getcanonicallocales": "^1.9.2", - "@formatjs/intl-locale": "^2.4.47", - "@formatjs/intl-relativetimeformat": "^8.0.0", - "abortcontroller-polyfill": "^1.7.3", - "core-js": "^3.15.2", - "intl": "^1.2.5", - "mutationobserver-shim": "<=0.3.3", - "regenerator-runtime": "^0.13.9", - "whatwg-fetch": "^3.6.2", - "wicg-inert": "3.1.2" + "packages/terra-dev-site/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dependencies": { + "color-convert": "^2.0.1" }, "engines": { - "node": ">=10.13.0" + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "packages/terra-dev-site/node_modules/loader-utils": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.4.tgz", - "integrity": "sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw==", + "packages/terra-dev-site/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dependencies": { - "big.js": "^5.2.2", - "emojis-list": "^3.0.0", - "json5": "^2.1.2" + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" }, "engines": { - "node": ">=8.9.0" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "packages/terra-dev-site/node_modules/regenerator-runtime": { - "version": "0.13.11", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.11.tgz", - "integrity": "sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==" + "packages/terra-dev-site/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "packages/terra-dev-site/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + }, + "packages/terra-dev-site/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } }, "packages/terra-polyfill": { "name": "@cerner/terra-polyfill", - "version": "1.2.0", + "version": "1.4.0", "license": "Apache-2.0", "dependencies": { "@formatjs/intl-relativetimeformat": "8", diff --git a/package.json b/package.json index 5b3b58b25..fb8f52468 100644 --- a/package.json +++ b/package.json @@ -41,7 +41,7 @@ "peerDependencies": { "react": "16", "react-dom": "16", - "react-intl": "2" + "react-intl": "5" }, "devDependencies": { "@babel/cli": "7", @@ -57,6 +57,7 @@ "@cerner/package-json-lint-config-terra": "2", "@cerner/stylelint-config-terra": "5", "@cerner/terra-cli": "1", + "@cerner/terra-enzyme-intl": "4", "@cerner/terra-functional-testing": "4", "@cerner/terra-open-source-scripts": "1", "@cerner/webpack-config-terra": "3", @@ -75,7 +76,6 @@ "lerna": "6", "postcss": "8", "stylelint": "15", - "terra-enzyme-intl": "3", "webpack": "5", "webpack-cli": "4", "webpack-dev-server": "4", diff --git a/packages/terra-application-docs/CHANGELOG.md b/packages/terra-application-docs/CHANGELOG.md index 0bcb8dfc1..3aa933fa0 100644 --- a/packages/terra-application-docs/CHANGELOG.md +++ b/packages/terra-application-docs/CHANGELOG.md @@ -2,6 +2,23 @@ ## Unreleased +## 3.1.0 - (June 22, 2022) + +* Changed + * Minor dependency version bump + +## 3.0.1 - (June 8, 2022) + +* Changed + * Minor dependency bump. + +## 3.0.0 - (May 31, 2022) + +* Breaking Changes + * Dropped react-intl v2-v4 support. + +--- + ## 2.15.0 - (May 1, 2024) * Changed diff --git a/packages/terra-application-docs/package.json b/packages/terra-application-docs/package.json index 60b5f1713..0f2933a9f 100644 --- a/packages/terra-application-docs/package.json +++ b/packages/terra-application-docs/package.json @@ -1,6 +1,6 @@ { "name": "@cerner/terra-application-docs", - "version": "2.15.0", + "version": "3.1.0", "description": "Contains documentation for packages in the terra-application monorepo", "author": "Cerner Corporation", "repository": { @@ -30,7 +30,7 @@ "src" ], "dependencies": { - "@cerner/terra-dev-site": "^7.14.0", + "@cerner/terra-dev-site": "8", "@cerner/terra-docs": "1", "classnames": "2", "prop-types": "15", @@ -44,11 +44,8 @@ "peerDependencies": { "react": "16", "react-dom": "16", - "react-intl": "2 || 3 || 4 || 5", - "terra-application": "1" - }, - "devDependencies": { - "terra-application": "^1.58.0" + "react-intl": "5", + "terra-application": "2" }, "scripts": { "compile": "babel --root-mode upward src --out-dir lib --copy-files", diff --git a/packages/terra-application/CHANGELOG.md b/packages/terra-application/CHANGELOG.md index 3d14cc501..0eb281257 100644 --- a/packages/terra-application/CHANGELOG.md +++ b/packages/terra-application/CHANGELOG.md @@ -2,6 +2,37 @@ ## Unreleased +* Changed + * Updated size explanations for ModalManager managed by DisclosureManagerContext. + +* The following changes from v1 are added: + * Added `noScroll` prop to remove scroll in powerchart. + * Added user action utility button. + * Locked `uuid` dependency to `3.4.0`. + * Updated `getBrowserLocale` method for IE. + * Updated jest snapshots for terra-icon and terra-button changes. + * Updated size explanations for ModalManager managed by DisclosureManagerContext. + +## 2.1.0 - (June 22, 2022) + +* Changed + * Updated condition statement added to check `inert` polyfill is required. + * Updated `wicg-inert` to latest version. + +## 2.0.1 - (June 8, 2022) + +* Minor dependency bump. + +## 2.0.0 - (May 31, 2022) + +* Breaking Changes + * Dropped react-intl v2-v4 support. + * `customTranslatedMessages` prop removed, thus dropping support for the ability of consumers to provide translations for an unsupported locale. + * `contextShape` will not be provided by `ApplicationIntlContext` anymore since `intlShape` is no longer exported by `react-intl`. + * `translationsLoadingPlaceholder` prop removed. + +--- + ## 1.58.0 - (April 23, 2024) * Added @@ -17,7 +48,7 @@ ## 1.56.0 - (September 19, 2023) -* Changed +* Added * Added `noScroll` prop to remove scroll in powerchart. ## 1.56.0-alpha.0 - (September 8, 2023) diff --git a/packages/terra-application/package.json b/packages/terra-application/package.json index 1f64f87a3..761b6252e 100644 --- a/packages/terra-application/package.json +++ b/packages/terra-application/package.json @@ -1,6 +1,6 @@ { "name": "terra-application", - "version": "1.58.0", + "version": "2.1.0", "description": "A framework to support application development with Terra components", "author": "Cerner Corporation", "repository": { @@ -30,9 +30,12 @@ ], "dependencies": { "@cerner/terra-docs": "1", + "@formatjs/intl-relativetimeformat": "8", "classnames": "2", "eventemitter3": "4", "focus-trap-react": "6", + "intl": "1", + "intl-locales-supported": ">=1.8.4 <1.8.12 || ^1.8.13", "keycode-js": "3", "lodash.debounce": "4", "mutationobserver-shim": "<=0.3.3", @@ -43,7 +46,6 @@ "terra-action-footer": "2", "terra-action-header": "2", "terra-avatar": "3", - "terra-base": "5", "terra-breakpoints": "2", "terra-button": "3", "terra-collapsible-menu-view": "6", @@ -69,7 +71,7 @@ "peerDependencies": { "react": "16", "react-dom": "16", - "react-intl": "2" + "react-intl": "5" }, "scripts": { "compile": "babel --root-mode upward src --out-dir lib --copy-files", diff --git a/packages/terra-application/src/application-base/ApplicationBase.jsx b/packages/terra-application/src/application-base/ApplicationBase.jsx index eaf1430d0..44f4af555 100644 --- a/packages/terra-application/src/application-base/ApplicationBase.jsx +++ b/packages/terra-application/src/application-base/ApplicationBase.jsx @@ -1,15 +1,15 @@ /* global TERRA_THEME_CONFIG */ import React, { - useRef, useEffect, Suspense, useMemo, + useRef, useEffect, useMemo, useState, Suspense, } from 'react'; import PropTypes from 'prop-types'; import classNames from 'classnames/bind'; -// eslint-disable-next-line import/no-extraneous-dependencies -import Base from 'terra-base'; import ThemeProvider from 'terra-theme-provider'; import { ActiveBreakpointProvider } from 'terra-breakpoints'; import ThemeContextProvider from 'terra-theme-context/lib/ThemeContextProvider'; +import { IntlProvider } from 'react-intl'; +import i18nLoader from './private/i18nLoader'; import ApplicationErrorBoundary from '../application-error-boundary'; import { ApplicationIntlProvider } from '../application-intl'; @@ -18,8 +18,10 @@ import { ApplicationStatusOverlayProvider } from '../application-status-overlay' import { NavigationPromptCheckpoint } from '../navigation-prompt'; import getBrowserLocale from './private/getBrowserLocale'; import useTestOverrides from './private/useTestOverrides'; +import Logger from '../utils/logger'; import './private/initializeInert'; +import './baseStyles'; import styles from './ApplicationBase.module.scss'; @@ -41,34 +43,10 @@ const propTypes = { * If the `locale` prop is not provided, the preferred language from the browser will be used. */ locale: PropTypes.string, - /** - * Custom translations for the current locale. - */ - customTranslatedMessages: (props, propName, componentName) => { - if (!props[propName]) { - return null; - } - - if (Object.keys(props[propName]).length !== 0 && props.locale === undefined) { - return new Error(`Missing locale prop for ${propName} in ${componentName} props`); - } - - return null; - }, - /** - * The component to render while the translation files are being retrieved. - * NOTE: Absolutely no locale-dependent logic should be - * utilized in this placeholder. - */ - translationsLoadingPlaceholder: PropTypes.node, /** * The name of the theme to apply to the application using terra-theme-provider. */ themeName: PropTypes.string, - /** - * The density of the theme to apply to the application using terra-theme-provider. - */ - themeDensity: PropTypes.string, /** * By default, the elements rendered by ApplicationBase are fit to the Application's parent using 100% height. * If `fitToParentIsDisabled` is provided, the Application will render at its intrinsic content height and @@ -86,13 +64,13 @@ const propTypes = { * When set to true scroll will be disabled. internal prop to be used by Mpages for terra-tabs in Powerchart. */ noScroll: PropTypes.bool, - }; const ApplicationBase = ({ - locale, customTranslatedMessages, translationsLoadingPlaceholder, themeName, themeDensity, fitToParentIsDisabled, children, unloadPromptIsDisabled, noScroll, + locale, themeName, fitToParentIsDisabled, children, unloadPromptIsDisabled, noScroll, }) => { const registeredPromptsRef = useRef(); + const [messages, setMessages] = useState(); useEffect(() => { if (unloadPromptIsDisabled) { @@ -122,27 +100,34 @@ const ApplicationBase = ({ const { localeOverride, themeOverride } = useTestOverrides(); // Allows us to test deployed applications in different locales. - let density = themeDensity || themeConfig?.density; - if (themeName === 'redwood-theme' && !density) { - density = 'comfortable'; - } + const finalLocale = localeOverride || locale || browserLocale; + + useEffect(() => { + if (finalLocale !== undefined) { + i18nLoader(finalLocale).then(translationsModule => setMessages(translationsModule.default)).catch((error) => { + // eslint-disable-next-line no-console + Logger.error(error); + throw error; + }); + } + }, [finalLocale]); const theme = useMemo(() => ({ // If the theme class name is undefined or an empty string, that indicates we have the root theme and should apply the root theme name. name: themeOverride || themeName || rootThemeName, className: themeOverride || themeName, - density, - }), [themeOverride, themeName, density]); + }), [themeOverride, themeName]); + + if (messages === undefined) return null; return (
- + - @@ -163,7 +148,7 @@ const ApplicationBase = ({ - +
diff --git a/packages/terra-application/src/application-base/Base.scss b/packages/terra-application/src/application-base/Base.scss new file mode 100644 index 000000000..115c09f19 --- /dev/null +++ b/packages/terra-application/src/application-base/Base.scss @@ -0,0 +1,39 @@ +// Themes +@import './clinical-lowlight-theme/Base'; +@import './orion-fusion-theme/Base'; + +html { + background-attachment: var(--terra-application-base-background-attachment); + background-color: var(--terra-application-base-background-color, #fff); + background-image: var(--terra-application-base-background-image); + background-position: var(--terra-application-base-background-position); + background-repeat: var(--terra-application-base-background-repeat); + background-size: var(--terra-application-base-background-size); + // Normalize box-sizing. + // More info: https://css-tricks.com/box-sizing/#article-header-id-6 + box-sizing: border-box; + font-family: var(--terra-application-base-font-family, 'Helvetica Neue', Helvetica, Arial, sans-serif); + font-size: var(--terra-application-base-font-size, 87.5%); + height: var(--terra-application-base-html-height, 100%); + margin: var(--terra-application-base-html-margin, 0); + text-size-adjust: 100%; +} + +body { + color: var(--terra-application-base-color, #1c1f21); + font-size: 1rem; + height: var(--terra-application-base-body-height, 100%); + line-height: var(--terra-application-base-line-height, 1.4285714285714286); + margin: var(--terra-application-base-body-margin, 0); + + @media print { + background-color: transparent !important; + color: #000 !important; + } +} + +*, +*::before, +*::after { + box-sizing: inherit; +} diff --git a/packages/terra-application/src/application-base/baseStyles.js b/packages/terra-application/src/application-base/baseStyles.js new file mode 100644 index 000000000..a85675852 --- /dev/null +++ b/packages/terra-application/src/application-base/baseStyles.js @@ -0,0 +1,11 @@ +import './Base.scss'; +import Logger from '../utils/logger'; + +// Checks to run when not in production +if (process.env.NODE_ENV !== 'production') { + // Check to ensure dir attribute is set on html element + if (!document.documentElement.hasAttribute('dir')) { + // eslint-disable-next-line + Logger.warn('The html element is missing the dir attribute. For terra directionality based styles to render correctly, add dir="ltr" or dir="rtl" to the html element.'); + } +} diff --git a/packages/terra-application/src/application-base/clinical-lowlight-theme/Base.scss b/packages/terra-application/src/application-base/clinical-lowlight-theme/Base.scss new file mode 100644 index 000000000..12f33a66f --- /dev/null +++ b/packages/terra-application/src/application-base/clinical-lowlight-theme/Base.scss @@ -0,0 +1,18 @@ +:global { + .clinical-lowlight-theme { + --terra-application-base-background-attachment: none; + --terra-application-base-background-color: #222a2e; + --terra-application-base-background-image: none; + --terra-application-base-background-position: none; + --terra-application-base-background-repeat: none; + --terra-application-base-background-size: none; + --terra-application-base-font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; + --terra-application-base-font-size: 87.5%; // root: 16px, base: 12px + --terra-application-base-html-height: 100%; + --terra-application-base-html-margin: 0; + --terra-application-base-color: #b2b5b6; + --terra-application-base-body-height: 100%; + --terra-application-base-line-height: 1.4285694285714286; + --terra-application-base-body-margin: 0; + } +} diff --git a/packages/terra-application/src/application-base/orion-fusion-theme/Base.scss b/packages/terra-application/src/application-base/orion-fusion-theme/Base.scss new file mode 100644 index 000000000..f196d03f1 --- /dev/null +++ b/packages/terra-application/src/application-base/orion-fusion-theme/Base.scss @@ -0,0 +1,18 @@ +:global { + .orion-fusion-theme { + --terra-application-base-background-attachment: scroll; + --terra-application-base-background-color: rgba(255, 255, 255, 1); + --terra-application-base-background-image: none; + --terra-application-base-background-position: none; + --terra-application-base-background-repeat: none; + --terra-application-base-background-size: auto; + --terra-application-base-font-family: Tahoma, Geneva, Verdana, Trebuchet MS, sans-serif; + --terra-application-base-font-size: 75%; // root: 16px, base: 14px + --terra-application-base-html-height: 100%; + --terra-application-base-html-margin: 0; + --terra-application-base-color: #1c1f21; + --terra-application-base-body-height: 100%; + --terra-application-base-line-height: 1.4285694285714286; + --terra-application-base-body-margin: 0; + } +} diff --git a/packages/terra-application/src/application-base/private/getBrowserLocale.js b/packages/terra-application/src/application-base/private/getBrowserLocale.js index ddc0fc6c7..3ea880a7f 100644 --- a/packages/terra-application/src/application-base/private/getBrowserLocale.js +++ b/packages/terra-application/src/application-base/private/getBrowserLocale.js @@ -49,7 +49,6 @@ const getBrowserLocale = () => { if (preferredLocale) { return preferredLocale; } - /* for IE support, as languages and language in IE return undefined, and userLanguage and browserLanguage return "en-US" */ if (isSupported(navigator.systemLanguage)) { return navigator.systemLanguage; diff --git a/packages/terra-application/src/application-base/private/i18nLoader.js b/packages/terra-application/src/application-base/private/i18nLoader.js new file mode 100644 index 000000000..85a26947e --- /dev/null +++ b/packages/terra-application/src/application-base/private/i18nLoader.js @@ -0,0 +1,52 @@ +/* eslint-disable global-require, import/no-named-as-default */ +import { shouldPolyfill } from '@formatjs/intl-relativetimeformat/should-polyfill'; +import loadIntl from './intlLoaders'; +import loadTranslations from './translationsLoaders'; + +const i18nLoader = (locale) => { + /** + * Use try-catch to check if Intl is provided by the browser. In some instances checking Intl will throw an + * error and crash the page with little information. + * + * Reference: https://github.com/cerner/terra-core/issues/2820 + */ + let hasIntl; + try { + hasIntl = typeof (Intl) === 'object' && typeof (Intl.DateTimeFormat) === 'function' && typeof (Intl.NumberFormat) === 'function' && typeof (Intl.PluralRules) === 'function'; + } catch (error) { + hasIntl = false; + } + + if (!hasIntl) { + require('intl'); + } + + if (shouldPolyfill()) { + require('@formatjs/intl-relativetimeformat/polyfill'); + } + + if (global.IntlPolyfill) { + /** + * Intl polyfill attempts to cache and restore static RegExp properties before executing any regular expressions in order + * to comply with ECMA-402. There are times this results in regex syntax error so we are disabling this feature. + * + * Reference: https://github.com/andyearnshaw/Intl.js#regexp-cache--restore + */ + /* eslint-disable no-underscore-dangle */ + if (Intl.__disableRegExpRestore && typeof Intl.__disableRegExpRestore === 'function') { + Intl.__disableRegExpRestore(); + } + /* eslint-enable no-underscore-dangle */ + + loadIntl(locale, 'intl'); + } + + if (global.Intl && Intl.RelativeTimeFormat && Intl.RelativeTimeFormat.polyfilled) { + loadIntl(locale, 'relativetimeformat'); + } + + return loadTranslations(locale); +}; + +export default i18nLoader; +/* eslint-enable global-require */ diff --git a/packages/terra-application/src/application-base/private/intlLoaders.js b/packages/terra-application/src/application-base/private/intlLoaders.js new file mode 100644 index 000000000..b8d45b436 --- /dev/null +++ b/packages/terra-application/src/application-base/private/intlLoaders.js @@ -0,0 +1,78 @@ +import hasIntlData from 'intl-locales-supported'; +import loadLocaleData from './loadLocaleData'; +import logger from '../../utils/logger'; + +const supportedIntlConstructors = (polyfill) => { + /** + * Use try-catch to check if Intl is provided by the browser. In some instances checking Intl will throw an + * error and crash the page with little information. + * + * Reference: https://github.com/cerner/terra-core/issues/2820 + */ + let constructors; + try { + if (polyfill === 'intl') { + if (typeof (Intl) === 'object' && typeof (Intl.DateTimeFormat) === 'function' && typeof (Intl.NumberFormat) === 'function' && typeof (Intl.PluralRules) === 'function') { + /** + * intl-locales-supported accesses the 'supportedLocalesOf' property of each of these constructors. + * When certain polyfills are used, the polyfill may not have the 'supportedLocalesOf' property. + * For example, when using the date-time-format-timezone Intl.DateTimeFormat becomes Intl.DateTimeFormatPolyfill which does not support this property. + * + * Reference: https://github.com/cerner/terra-core/issues/2914 + */ + if (Object.prototype.hasOwnProperty.call(Intl.DateTimeFormat, 'supportedLocalesOf') && Object.prototype.hasOwnProperty.call(Intl.NumberFormat, 'supportedLocalesOf') && Object.prototype.hasOwnProperty.call(Intl.PluralRules, 'supportedLocalesOf')) { + constructors = [ + Intl.DateTimeFormat, + Intl.NumberFormat, + Intl.PluralRules, + ]; + } else { + constructors = []; + } + } + } else if (typeof (Intl) === 'object' && typeof (Intl.RelativeTimeFormat) === 'function') { + if (Object.prototype.hasOwnProperty.call(Intl.RelativeTimeFormat, 'supportedLocalesOf')) { + constructors = [ + Intl.RelativeTimeFormat, + ]; + } else { + constructors = []; + } + } + } catch (error) { + constructors = []; + } + + return constructors; +}; + +const loadIntl = (locale, polyfill) => { + const fallbackLocale = locale.split('-').length > 1 ? locale.split('-')[0] : false; + + if (!hasIntlData([locale], supportedIntlConstructors(polyfill))) { + return loadLocaleData(locale, polyfill).catch((error) => { + if (fallbackLocale) { + logger.warn(`${error.message} Using ${fallbackLocale} data as the fallback locale data.`); + if (!hasIntlData([fallbackLocale], supportedIntlConstructors(polyfill))) { + return loadLocaleData(fallbackLocale, polyfill); + } + } else { + return Promise.reject(error); + } + + return Promise.resolve(); + }).catch((error) => { + logger.warn(`${error.message} Using en data as the fallback locale data.`); + + if (!hasIntlData(['en'], supportedIntlConstructors(polyfill))) { + return loadLocaleData('en', polyfill); + } + + return Promise.resolve(); + }); + } + + return Promise.resolve(); +}; + +export default loadIntl; diff --git a/packages/terra-application/src/application-base/private/loadLocaleData.js b/packages/terra-application/src/application-base/private/loadLocaleData.js new file mode 100644 index 000000000..2ce1a29ab --- /dev/null +++ b/packages/terra-application/src/application-base/private/loadLocaleData.js @@ -0,0 +1,80 @@ +/* eslint-disable import/extensions */ +const loadLocaleData = (locale, polyfill) => { + if (polyfill === 'intl') { + switch (locale) { + case 'en': + return import('intl/locale-data/jsonp/en.js'); + case 'en-AU': + return import('intl/locale-data/jsonp/en-AU.js'); + case 'en-CA': + return import('intl/locale-data/jsonp/en-CA.js'); + case 'en-US': + return import('intl/locale-data/jsonp/en-US.js'); + case 'en-GB': + return import('intl/locale-data/jsonp/en-GB.js'); + case 'es': + return import('intl/locale-data/jsonp/es.js'); + case 'es-US': + return import('intl/locale-data/jsonp/es-US.js'); + case 'es-ES': + return import('intl/locale-data/jsonp/es-ES.js'); + case 'de': + return import('intl/locale-data/jsonp/de.js'); + case 'fr': + return import('intl/locale-data/jsonp/fr.js'); + case 'fr-FR': + return import('intl/locale-data/jsonp/fr-FR.js'); + case 'nl': + return import('intl/locale-data/jsonp/nl.js'); + case 'nl-BE': + return import('intl/locale-data/jsonp/nl-BE.js'); + case 'pt': + return import('intl/locale-data/jsonp/pt.js'); + case 'pt-BR': + return import('intl/locale-data/jsonp/pt-BR.js'); + case 'sv': + return import('intl/locale-data/jsonp/sv.js'); + case 'sv-SE': + return import('intl/locale-data/jsonp/sv-SE.js'); + default: + return Promise.reject(Error(`Locale data for ${polyfill} was not supplied for the ${locale} locale.`)); + } + } else { + switch (locale) { + case 'en': + return import('@formatjs/intl-relativetimeformat/locale-data/en.js'); + case 'en-AU': + return import('@formatjs/intl-relativetimeformat/locale-data/en-AU.js'); + case 'en-CA': + return import('@formatjs/intl-relativetimeformat/locale-data/en-CA.js'); + case 'en-US': + return import('@formatjs/intl-relativetimeformat/locale-data/en-US.js'); + case 'en-GB': + return import('@formatjs/intl-relativetimeformat/locale-data/en-GB.js'); + case 'es': + case 'es-ES': + return import('@formatjs/intl-relativetimeformat/locale-data/es.js'); + case 'es-US': + return import('@formatjs/intl-relativetimeformat/locale-data/es-US.js'); + case 'de': + return import('@formatjs/intl-relativetimeformat/locale-data/de.js'); + case 'fr': + case 'fr-FR': + return import('@formatjs/intl-relativetimeformat/locale-data/fr.js'); + case 'nl': + return import('@formatjs/intl-relativetimeformat/locale-data/nl.js'); + case 'nl-BE': + return import('@formatjs/intl-relativetimeformat/locale-data/nl-BE.js'); + case 'pt': + case 'pt-BR': + return import('@formatjs/intl-relativetimeformat/locale-data/pt.js'); + case 'sv': + case 'sv-SE': + return import('@formatjs/intl-relativetimeformat/locale-data/sv.js'); + default: + return Promise.reject(Error(`Locale data for ${polyfill} was not supplied for the ${locale} locale.`)); + } + } +}; + +export default loadLocaleData; diff --git a/packages/terra-application/src/application-base/private/translationsLoaders.js b/packages/terra-application/src/application-base/private/translationsLoaders.js new file mode 100644 index 000000000..3445704e8 --- /dev/null +++ b/packages/terra-application/src/application-base/private/translationsLoaders.js @@ -0,0 +1,61 @@ +/* eslint-disable import/no-unresolved */ +import logger from '../../utils/logger'; + +const loadTranslationsFile = (locale) => { + switch (locale) { + case 'en': + return import(/* webpackChunkName: "en-translations" */ 'en.js'); + case 'en-AU': + return import(/* webpackChunkName: "en-AU-translations" */ 'en-AU.js'); + case 'en-CA': + return import(/* webpackChunkName: "en-CA-translations" */ 'en-CA.js'); + case 'en-US': + return import(/* webpackChunkName: "en-US-translations" */ 'en-US.js'); + case 'en-GB': + return import(/* webpackChunkName: "en-GB-translations" */ 'en-GB.js'); + case 'es': + return import(/* webpackChunkName: "es-translations" */ 'es.js'); + case 'es-ES': + return import(/* webpackChunkName: "es-ES-translations" */ 'es-ES.js'); + case 'de': + return import(/* webpackChunkName: "de-translations" */ 'de.js'); + case 'fr': + return import(/* webpackChunkName: "fr-translations" */ 'fr.js'); + case 'fr-FR': + return import(/* webpackChunkName: "fr-FR-translations" */ 'fr-FR.js'); + case 'nl': + return import(/* webpackChunkName: "nl-translations" */ 'nl.js'); + case 'nl-BE': + return import(/* webpackChunkName: "nl-BE-translations" */ 'nl-BE.js'); + case 'pt': + return import(/* webpackChunkName: "pt-translations" */ 'pt.js'); + case 'pt-BR': + return import(/* webpackChunkName: "pt-BR-translations" */ 'pt-BR.js'); + case 'sv': + return import(/* webpackChunkName: "sv-translations" */ 'sv.js'); + case 'sv-SE': + return import(/* webpackChunkName: "sv-SE-translations" */ 'sv-SE.js'); + default: + return Promise.reject(Error(`Translations were not supplied for the ${locale} locale.`)); + } +}; + +const loadTranslations = (locale) => { + const fallbackLocale = locale.split('-').length > 1 ? locale.split('-')[0] : false; + + return loadTranslationsFile(locale).catch((error) => { + logger.warn(`${error.message} Using ${fallbackLocale} data as the fallback locale.`); + + if (fallbackLocale) { + return loadTranslationsFile(fallbackLocale); + } + + return Promise.reject(error); + }).catch((error) => { + logger.warn(`${error.message} Using en as the fallback locale.`); + + return loadTranslationsFile('en'); + }); +}; + +export default loadTranslations; diff --git a/packages/terra-application/src/application-error-boundary/ApplicationErrorBoundary.jsx b/packages/terra-application/src/application-error-boundary/ApplicationErrorBoundary.jsx index da9c7b0f7..f1b099427 100644 --- a/packages/terra-application/src/application-error-boundary/ApplicationErrorBoundary.jsx +++ b/packages/terra-application/src/application-error-boundary/ApplicationErrorBoundary.jsx @@ -1,7 +1,7 @@ import React from 'react'; import PropTypes from 'prop-types'; import StatusView from 'terra-status-view'; -import { injectIntl, intlShape } from 'react-intl'; +import { injectIntl } from 'react-intl'; import logger from '../utils/logger'; const propTypes = { @@ -15,7 +15,7 @@ const propTypes = { * @private * Intl object for translations. */ - intl: intlShape, + intl: PropTypes.shape({ formatMessage: PropTypes.func }), }; /** @@ -89,8 +89,7 @@ class ApplicationErrorBoundary extends React.Component { const activeError = this.state.error || this.errorRef.current; if (activeError) { - const errorDetails = activeError.message.toString(); - const errorText = intl.formatMessage({ id: 'terraApplication.errorBoundary.defaultErrorMessage' }, { errorDetails }); + const errorText = intl.formatMessage({ id: 'terraApplication.errorBoundary.defaultErrorMessage' }, { errorDetails: activeError.message.toString() }); return ( ( diff --git a/packages/terra-application/src/application-intl/index.js b/packages/terra-application/src/application-intl/index.js index a0a9905c4..d5d67410e 100644 --- a/packages/terra-application/src/application-intl/index.js +++ b/packages/terra-application/src/application-intl/index.js @@ -1,4 +1,4 @@ -import ApplicationIntlContext, { contextShape } from './ApplicationIntlContext'; +import ApplicationIntlContext from './ApplicationIntlContext'; import ApplicationIntlProvider from './ApplicationIntlProvider'; -export { ApplicationIntlContext, contextShape, ApplicationIntlProvider }; +export { ApplicationIntlContext, ApplicationIntlProvider }; diff --git a/packages/terra-application/src/application-navigation/ApplicationNavigation.jsx b/packages/terra-application/src/application-navigation/ApplicationNavigation.jsx index be9f8ddc2..d81a8a36a 100644 --- a/packages/terra-application/src/application-navigation/ApplicationNavigation.jsx +++ b/packages/terra-application/src/application-navigation/ApplicationNavigation.jsx @@ -3,6 +3,7 @@ import React, { } from 'react'; import PropTypes from 'prop-types'; import { v4 as uuidv4 } from 'uuid'; +import { useIntl } from 'react-intl'; import TerraApplicationNavigation from './private/ApplicationNavigation'; import { titleConfigPropType, navigationItemsPropType, extensionItemsPropType, utilityItemsPropType, userConfigPropType, userActionConfigPropType, @@ -12,7 +13,6 @@ import ApplicationErrorBoundary from '../application-error-boundary'; import ApplicationLoadingOverlay, { ApplicationLoadingOverlayProvider } from '../application-loading-overlay'; import { ApplicationStatusOverlayProvider } from '../application-status-overlay'; import { NavigationPromptCheckpoint, navigationPromptResolutionOptionsShape, getUnsavedChangesPromptOptions } from '../navigation-prompt'; -import { ApplicationIntlContext } from '../application-intl'; import ApplicationNavigationWorkspace from './private/workspace-layout/ApplicationNavigationWorkspace'; const propTypes = { @@ -156,7 +156,7 @@ const ApplicationNavigation = ({ workspace, userActionConfig, }) => { - const applicationIntl = React.useContext(ApplicationIntlContext); + const applicationIntl = useIntl(); const navigationPromptCheckpointRef = useRef(); const idRef = React.useRef(`navigation-${uuidv4()}`); diff --git a/packages/terra-application/src/application-navigation/private/common/_PopupMenu.jsx b/packages/terra-application/src/application-navigation/private/common/_PopupMenu.jsx index 4d1b62be5..d7abee992 100644 --- a/packages/terra-application/src/application-navigation/private/common/_PopupMenu.jsx +++ b/packages/terra-application/src/application-navigation/private/common/_PopupMenu.jsx @@ -107,13 +107,6 @@ const propTypes = { * A configuration object to render an action button for user Config. */ userActionConfig: userActionConfigPropType, - /** - * @private - * Given a callback function, menuClosingCallback will return a new function - * that will ensure that the various menu states are reset before the callback function - * is executed. - */ - menuClosingCallback: PropTypes.func, }; const defaultProps = { @@ -124,19 +117,7 @@ const defaultProps = { }; const PopupMenu = ({ - title, - footerText, - id, - onSelectFooterItem, - menuClosingCallback, - onSelectMenuItem, - customContent, - userConfig, - menuItems, - isHeightBounded, - showSelections, - role, - userActionConfig, + title, footerText, id, onSelectFooterItem, onSelectMenuItem, customContent, userConfig, menuItems, isHeightBounded, showSelections, role, userActionConfig, }) => { const listRef = useRef(); const buttonRef = useRef(); @@ -228,7 +209,7 @@ const PopupMenu = ({ {customContent} ) : undefined} - {userConfig ? : null} + {userConfig ? : null}
    {menuItems.map(item => ( { +const PopupMenuUser = ({ userConfig, userActionConfig, id }) => { const theme = React.useContext(ThemeContext); return ( @@ -52,15 +43,15 @@ const PopupMenuUser = ({
    {userConfig.name}
    {userConfig.detail ?
    {userConfig.detail}
    : null} { userActionConfig && ( - + )} diff --git a/packages/terra-application/src/application-navigation/private/utility-menu/_UtilityMenu.jsx b/packages/terra-application/src/application-navigation/private/utility-menu/_UtilityMenu.jsx index f3cd0e0f5..00ec93a23 100644 --- a/packages/terra-application/src/application-navigation/private/utility-menu/_UtilityMenu.jsx +++ b/packages/terra-application/src/application-navigation/private/utility-menu/_UtilityMenu.jsx @@ -61,13 +61,6 @@ const propTypes = { * A configuration object to render an action button for user Config. */ userActionConfig: userActionConfigPropType, - /** - * @private - * Given a callback function, menuClosingCallback will return a new function - * that will ensure that the various menu states are reset before the callback function - * is executed. - */ - menuClosingCallback: PropTypes.func, }; const defaultProps = { @@ -78,7 +71,7 @@ const utilityMenuSettingsKey = 'terra-application-navigation.utility-menu.settin const utilityMenuHelpKey = 'terra-application-navigation.utility-menu.help'; const UtilityMenu = ({ - userConfig, hero, onSelectSettings, onSelectHelp, menuClosingCallback, onSelectLogout, utilityItems, id, onSelectUtilityItem, isHeightBounded, intl, userActionConfig, + userConfig, hero, onSelectSettings, onSelectHelp, onSelectLogout, utilityItems, id, onSelectUtilityItem, isHeightBounded, intl, userActionConfig, }) => { let menuItems = []; menuItems = utilityItems.map(item => ({ @@ -116,7 +109,6 @@ const UtilityMenu = ({ title={intl.formatMessage({ id: 'terraApplication.navigation.utilityMenu.headerTitle' })} footerText={intl.formatMessage({ id: 'terraApplication.navigation.utilityMenu.logout' })} onSelectFooterItem={onSelectLogout} - menuClosingCallback={menuClosingCallback} userConfig={userConfig} userActionConfig={userActionConfig} customContent={hero} diff --git a/packages/terra-application/src/application-navigation/private/workspace-layout/WorkspaceLayout.jsx b/packages/terra-application/src/application-navigation/private/workspace-layout/WorkspaceLayout.jsx index 478dfba08..c25417d43 100644 --- a/packages/terra-application/src/application-navigation/private/workspace-layout/WorkspaceLayout.jsx +++ b/packages/terra-application/src/application-navigation/private/workspace-layout/WorkspaceLayout.jsx @@ -6,9 +6,9 @@ import IconPanelRight from 'terra-icon/lib/icon/IconPanelRight'; import IconPanelLeft from 'terra-icon/lib/icon/IconPanelLeft'; import ThemeContext from 'terra-theme-context'; +import { useIntl } from 'react-intl'; import { ActiveBreakpointContext } from '../../../breakpoints'; import ResizeHandle from './ResizeHandle'; -import { ApplicationIntlContext } from '../../../application-intl'; import ApplicationNavigationActionsContext from '../../ApplicationNavigationActionsContext'; import styles from './WorkspaceLayout.module.scss'; @@ -111,7 +111,7 @@ const WorkspaceLayout = ({ skipToCallback, }) => { const activeBreakpoint = React.useContext(ActiveBreakpointContext); - const applicationIntl = React.useContext(ApplicationIntlContext); + const applicationIntl = useIntl(); const theme = React.useContext(ThemeContext); const layoutContainerRef = React.useRef(); diff --git a/packages/terra-application/src/terra-dev-site/app/Application.1.app.mdx b/packages/terra-application/src/terra-dev-site/app/Application.1.app.mdx index 625aa8aac..fbc5bf1fe 100644 --- a/packages/terra-application/src/terra-dev-site/app/Application.1.app.mdx +++ b/packages/terra-application/src/terra-dev-site/app/Application.1.app.mdx @@ -98,9 +98,9 @@ Many applications respond to the current active breakpoint to adjust for screen ### Internationalization -Terra applications must work for many locales, The Application Intl Context provides access to the frameworks i18n APIs. +Terra applications must work for many locales, `react-intl` should be utilized for i18n api's. -- [Application Intl Context API](/application/terra-application/contexts/application-intl-context) +- [react-intl](https://formatjs.io/) ### Theming diff --git a/packages/terra-application/src/terra-dev-site/app/components.2/ApplicationBase.app.mdx b/packages/terra-application/src/terra-dev-site/app/components.2/ApplicationBase.app.mdx index 6bf2b01f1..66755eef3 100644 --- a/packages/terra-application/src/terra-dev-site/app/components.2/ApplicationBase.app.mdx +++ b/packages/terra-application/src/terra-dev-site/app/components.2/ApplicationBase.app.mdx @@ -20,9 +20,7 @@ import ApplicationBase from 'terra-application/lib/application-base'; ### I18n -ApplicationBase exposes a prop to define the application's locale and dynamically retrieve the translated strings for that locale. Children of ApplicationBase can access translated strings by using [react-intl's](https://github.com/formatjs/formatjs/blob/master/website/docs/react-intl/components.md) provided components or by using the [ApplicationIntlContext](/application/terra-application/contexts/application-intl-context). - -Consumers of ApplicationBase should review Terra's [translation aggregation](https://engineering.cerner.com/terra-ui/guides/terra-ui/internationalization/aggregate-translations) instructions to ensure ApplicationBase can retrieve the application's translations successfully. +ApplicationBase exposes a prop to define the application's locale and dynamically retrieve the translated strings for that locale. Children of ApplicationBase can access translated strings by using react-intl's provided [components](https://formatjs.io/docs/react-intl/components), react-intl's [imperitive API](https://formatjs.io/docs/react-intl/api) or by using the [ApplicationIntlContext](/application/cerner-terra-application/contexts/application-intl-context). ### Theming @@ -30,6 +28,8 @@ ApplicationBase exposes props to define the application's theme. ApplicationBase renders a theme context provider around its children. Children can access the current theme by using the [ThemeContext](/application/terra-application/contexts/theme-context). + + ### Breakpoints ApplicationBase renders an [ActiveBreakpointContext.Provider](/application/terra-application/contexts/active-breakpoint-context) around its children. Children can access the current active breakpoint value by using the [ActiveBreakpointContext](/application/terra-application/contexts/active-breakpoint-context). @@ -59,4 +59,4 @@ ApplicationNavigation renders a [Suspense](https://reactjs.org/docs/code-splitti ### Modal Presentation -ApplicationBase renders a [ModalManager](/application/terra-application/components/modal-manager) around its children. Children can access modal disclosure APIs by using the [DisclosureManagerContext](/application/terra-application/contexts/disclosure-manager-context). +ApplicationBase renders a [ModalManager](/application/terra-application/components/modal-manager) around its children. Children can access modal disclosure APIs by using the [DisclosureManagerContext](/application/terra-application/contexts/disclosure-manager-context). \ No newline at end of file diff --git a/packages/terra-application/src/terra-dev-site/app/components.2/ApplicationNavigation.app.mdx b/packages/terra-application/src/terra-dev-site/app/components.2/ApplicationNavigation.app.mdx index 29427ee5d..aae19b9a8 100644 --- a/packages/terra-application/src/terra-dev-site/app/components.2/ApplicationNavigation.app.mdx +++ b/packages/terra-application/src/terra-dev-site/app/components.2/ApplicationNavigation.app.mdx @@ -20,7 +20,7 @@ import ApplicationNavigation from 'terra-application/lib/application-navigation' ApplicationNavigation requires values from the following Contexts: -* [ApplicationIntlContext](/application/terra-application/contexts/application-intl-context) +* [react-intl](https://formatjs.io/docs/react-intl/api) ## Props diff --git a/packages/terra-application/src/terra-dev-site/app/components.2/ModalManager.app.mdx b/packages/terra-application/src/terra-dev-site/app/components.2/ModalManager.app.mdx index 403baa569..3363210c7 100644 --- a/packages/terra-application/src/terra-dev-site/app/components.2/ModalManager.app.mdx +++ b/packages/terra-application/src/terra-dev-site/app/components.2/ModalManager.app.mdx @@ -82,6 +82,64 @@ The provided component will be rendered below the standard ActionHeader and abov provide additional context to every disclosed component. This component is provided once to the ModalManager instance, not on a per-disclosure basis, and each component in the disclosure stack will be decorated with the same accessory component. +### Static Height vs. Dynamic Height + +ModalManager was intentionally designed to have static preset heights in order to work in conjunction with Terra content that can adjust responsively using the [terra-responsive-element](https://engineering.cerner.com/terra-ui/components/cerner-terra-core-docs/responsive-element/about), as well as any conditionally positioned UI elements like a [popup](https://engineering.cerner.com/terra-ui/components/cerner-terra-framework-docs/popup/popup), [multi-select dropdown](https://engineering.cerner.com/terra-ui/components/cerner-terra-core-docs/form-select/multi-select), or [date picker](https://engineering.cerner.com/terra-ui/components/cerner-terra-framework-docs/date-picker/date-picker). Having static preset heights allows for Terra to quickly present modal content without requiring extensive browser multiple-render drawing calculations that results in poor application performance. + +Some may be used to other libraries that commonly offer simple modals that can adjust the modal's height dynamically based on the content provided, but those situations only work well for when content is designed for a single presentation (i.e. is not responsive), and ones that have no higher z-index layers that require position calculation relative to the base content (i.e. no popups with pointers). + +### Creating Modal Content + +The ModalManager is intended for content which has regularly composed & designed layouts, including responsive variations. It is very grid-based, so it comes with standard heights and widths to accommodate the highly-structured assembly of content. + +When the preset size of the modal's width or height is _larger_ than the available device-screen or viewport (e.g. if you shrink down your window smaller than what the modal size was set to be), at that point the ModalManager will then "stick" near to the edge of the viewport as it's outer size and not flow offscreen. It is recommended to build the inner content with a responsive design, so when the modal is smaller than it’s preset size, the content will then know to adapt and adjust to alternate layouts accordingly to the new maximum available height and/or width as the outer size. If content is not built responsively, or if you intentionally build the content to overflow in one direction, it will then force scrolling inside of the modal. Scrolling is perfectly acceptable, but should be limited to one direction, preferably vertical-only. + +The key thing to remember is that the ModalManager, similar to a page layout, works based on the "**outside-in**" layout principal, which allows the _inside_ content to respond when the _outside_ container changes in size. The ModalManager unfortunately cannot simultaneously also follow the "**inside-out**" layout principal, which would mean the _outside_ container height grows or shrinks based on the _inside_ content size. The reason is that the inside content cannot dictate what size it would like to be at the same as as listening for when it no longer has any space remaining, which is required in order to be able to change itself to a new layout, and cannot do both (or at least not without attempting many redraws). Designers are encouraged to create structured and grid based layout designs that work well for the modal layout size options that best utilize space, similar to designing base pages within applications. + +### Sizing: Height & Width Options + +The ModalManager has two methods of setting the preferred modal height & width. The first method is by choosing from a list of easy shorthand size options that combine a predefined height and width pair, which works standard application screen ratios. The second method is more advanced and provides the ability to choose from a list of grid-based dimensions to set the height and width independently. _(Note: all values used for ModalManager are true pixels and not rem, relative em units.)_ + +Using the `size` prop within the [disclose argument API](/application/terra-application/contexts/disclosure-manager-context#disclosure-props) allows the consumer to provide a simpler implementation to set the modal preferred dimension, and typically might be used for common application disclosures of similarly sized content. _(Note: `size` should not be provided if `dimensions` are specified.)_ + +|`size` prop: Shorthand options|pixel dimensions| +|---|---| +|`tiny`| w: 320px, h: 240px | +|`small`| w: 640px, h: 420px | +|`medium`| w: 960px, h: 600px | +|**default**| w: 1120px, h: 690px _(modal size if no other details are provided)_ | +|`large`| w: 1280px, h: 870px | +|`huge`| w: 1600px, h: 960px | +|`fullscreen`| w: screen width less ~10px, h: screen height less ~10px | + +For application content that needs more specific dimensional control of modal sizes, using the `dimension` prop within the [disclose argument API](/application/terra-application/contexts/disclosure-manager-context#disclose-props) will be the implementation to choose. Consumers supply a simple object that contains both height wand width values: `{ height: '480', width: '600' }`. _(Note: `dimensions` should not be provided if a `size` is specified.)_ + +|`dimensions` prop: Width options|pixel dimensions| +|---|---| +|`width: '320'`| w: 320px, h: -- | +|`width: '480'`| w: 480px, h: -- | +|`width: '560'`| w: 560px, h: -- | +|`width: '640'`| w: 640px, h: -- | +|`width: '800'`| w: 800px, h: -- | +|`width: '960'`| w: 960px, h: -- | +|`width: '1120'`| w: 1120px, h: -- | +|`width: '1280'`| w: 1280px, h: -- | +|`width: '1440'`| w: 1440px, h: -- | +|`width: '1600'`| w: 1600px, h: -- | +|`width: '1760'`| w: 1760px, h: -- | +|`width: '1920'`| w: 1920px, h: -- | + +|`dimensions` prop: Height options|pixel dimensions| +|---|---| +|`height: '240'`| w: --, h: 240px | +|`height: '420'`| w: --, h: 420px | +|`height: '600'`| w: --, h: 600px | +|`height: '690'`| w: --, h: 690px | +|`height: '780'`| w: --, h: 780px | +|`height: '870'`| w: --, h: 870px | +|`height: '960'`| w: --, h: 960px | +|`height: '1140'`| w: --, h: 1140px | + ### Example ```jsx diff --git a/packages/terra-application/src/terra-dev-site/app/components.2/NavigationPromptCheckpoint.app.mdx b/packages/terra-application/src/terra-dev-site/app/components.2/NavigationPromptCheckpoint.app.mdx index 5d28cae53..45cbcbde6 100644 --- a/packages/terra-application/src/terra-dev-site/app/components.2/NavigationPromptCheckpoint.app.mdx +++ b/packages/terra-application/src/terra-dev-site/app/components.2/NavigationPromptCheckpoint.app.mdx @@ -62,12 +62,12 @@ to match the prompt messaging provided by the components within `terra-applicati ```jsx import React, { useContext, useRef } from 'react'; -import { ApplicationIntlContext } from 'terra-application/lib/application-intl'; +import { useIntl } from 'react-intl'; import { NavigationPromptCheckpoint, getUnsavedChangesPromptOptions } from 'terra-application/lib/navigation-prompt'; const ExampleComponent = () => { const checkpointRef = useRef(); - const applicationIntl = useContext(ApplicationIntlContext); + const applicationIntl = useIntl(); function resolvePrompts() { checkpointRef.current.resolvePrompts(getUnsavedChangesPromptOptions(applicationIntl)).then(() => { ... }); diff --git a/packages/terra-application/src/terra-dev-site/app/components.2/example/ApplicationBaseExample.jsx b/packages/terra-application/src/terra-dev-site/app/components.2/example/ApplicationBaseExample.jsx index 1c1131692..7ec14beb6 100644 --- a/packages/terra-application/src/terra-dev-site/app/components.2/example/ApplicationBaseExample.jsx +++ b/packages/terra-application/src/terra-dev-site/app/components.2/example/ApplicationBaseExample.jsx @@ -1,5 +1,5 @@ import React, { useState, useContext } from 'react'; -import { ApplicationIntlContext } from 'terra-application/lib/application-intl'; +import { useIntl } from 'react-intl'; import { ThemeContext } from 'terra-application/lib/theme'; import { ActiveBreakpointContext } from 'terra-application/lib/breakpoints'; import ApplicationLoadingOverlay from 'terra-application/lib/application-loading-overlay'; @@ -12,7 +12,7 @@ const ApplicationContentExample = () => { const [blockUnload, setBlockUnload] = useState(false); const activeBreakpoint = useContext(ActiveBreakpointContext); - const applicationIntl = useContext(ApplicationIntlContext); + const applicationIntl = useIntl(); if (throwError) { throw new Error("Testing ApplicationBase's error boundary..."); @@ -82,7 +82,7 @@ const ApplicationContentExample = () => { }; const ApplicationBaseExample = () => { - const applicationIntl = useContext(ApplicationIntlContext); + const applicationIntl = useIntl(); const theme = React.useContext(ThemeContext); return ( diff --git a/packages/terra-application/src/terra-dev-site/app/contexts.2/DisclosureManagerContext.app.mdx b/packages/terra-application/src/terra-dev-site/app/contexts.2/DisclosureManagerContext.app.mdx index 02cc76dd8..5316db8a9 100644 --- a/packages/terra-application/src/terra-dev-site/app/contexts.2/DisclosureManagerContext.app.mdx +++ b/packages/terra-application/src/terra-dev-site/app/contexts.2/DisclosureManagerContext.app.mdx @@ -99,6 +99,8 @@ disclosureManager.disclose({ }) ``` +### Disclose props + `disclose` Argument API: |Key|Is Required|Value| @@ -108,6 +110,8 @@ disclosureManager.disclose({ |`dimensions`|optional|An Object containing explicit `height` and `width` values for the disclosure. These values may not be honored due to the disclosure type or the available viewport size. `dimensions` should not be provided if a `size` is specified.
    Supported `height` values include: `'240'`, `'420'`, `'600'`, `'690'`, `'780'`, `'870'`, `'960'`, `'1140'`.
    Supported `width` values include: `'320'`, `'480'`, `'560'`, `'640'`, `'800'`, `'960'`, `'1120'`, `'1280'`, `'1440'`, `'1600'`, `'1760'`, `'1920'`.| |`content`|**required**|An Object containing a key and a component describing the component to be disclosed. See the `content` API below.| +### Content props + `content` Object API: |Key|Is Required|Value| diff --git a/packages/terra-application/src/terra-dev-site/app/demo/AppPage.jsx b/packages/terra-application/src/terra-dev-site/app/demo/AppPage.jsx index 1c53187cb..a6893f4f1 100644 --- a/packages/terra-application/src/terra-dev-site/app/demo/AppPage.jsx +++ b/packages/terra-application/src/terra-dev-site/app/demo/AppPage.jsx @@ -5,7 +5,7 @@ import PropTypes from 'prop-types'; import classNames from 'classnames/bind'; import { ActiveBreakpointContext } from 'terra-application/lib/breakpoints'; import ApplicationLoadingOverlay from 'terra-application/lib/application-loading-overlay'; -import { ApplicationIntlContext } from 'terra-application/lib/application-intl'; +import { useIntl } from 'react-intl'; import { ThemeContext } from 'terra-application/lib/theme'; import { ApplicationNavigationActionsContext } from 'terra-application/lib/application-navigation'; @@ -23,7 +23,7 @@ const AppPage = ({ pageName }) => { const [isInitialized, setIsInitialized] = useState(false); const activeBreakpoint = useContext(ActiveBreakpointContext); - const applicationIntl = useContext(ApplicationIntlContext); + const applicationIntl = useIntl(); const theme = React.useContext(ThemeContext); const [hasError, setHasError] = useState(false); diff --git a/packages/terra-application/src/terra-dev-site/app/demo/ModalPresenter.jsx b/packages/terra-application/src/terra-dev-site/app/demo/ModalPresenter.jsx index 9c56f1866..80152a4d8 100644 --- a/packages/terra-application/src/terra-dev-site/app/demo/ModalPresenter.jsx +++ b/packages/terra-application/src/terra-dev-site/app/demo/ModalPresenter.jsx @@ -7,7 +7,7 @@ import classNames from 'classnames/bind'; import Scroll from 'terra-scroll'; import { ActiveBreakpointContext } from 'terra-application/lib/breakpoints'; import ApplicationLoadingOverlay from 'terra-application/lib/application-loading-overlay'; -import { ApplicationIntlContext } from 'terra-application/lib/application-intl'; +import { useIntl } from 'react-intl'; import { DisclosureManagerContext, DisclosureManagerHeaderAdapter } from 'terra-application/lib/disclosure-manager'; import PendingActionToggle from './PendingActionToggle'; @@ -17,7 +17,7 @@ const cx = classNames.bind(styles); const ModalContent = ({ name, onSubmit }) => { const activeBreakpoint = useContext(ActiveBreakpointContext); - const applicationIntl = useContext(ApplicationIntlContext); + const applicationIntl = useIntl(); const disclosureManager = useContext(DisclosureManagerContext); const [hasError, setHasError] = useState(false); diff --git a/packages/terra-application/src/terra-dev-site/app/how-to.3/use-translated-strings.app.mdx b/packages/terra-application/src/terra-dev-site/app/how-to.3/use-translated-strings.app.mdx index dd4a1240f..d36195c00 100644 --- a/packages/terra-application/src/terra-dev-site/app/how-to.3/use-translated-strings.app.mdx +++ b/packages/terra-application/src/terra-dev-site/app/how-to.3/use-translated-strings.app.mdx @@ -7,15 +7,12 @@ Every child of [ApplicationBase](/application/terra-application/components/appli application's translated strings. Please review Terra's [recommended consumption guides](https://engineering.cerner.com/terra-ui/guides/terra-ui/internationalization/building-components-which-include-translations) for more information. -Additionally, ApplicateBase provides react-intl's APIs through the [ApplicationIntlContext](/application/terra-application/contexts/application-intl-context) -for consumers seeking a modern Context implementation. - ```jsx import React, { useContext } from 'react'; -import { ApplicationIntlContext } from 'terra-application/lib/application-intl'; +import { useIntl } from 'react-intl'; const ExampleComponent = () => { - const applicationIntl = useContext(ApplicationIntlContext); + const applicationIntl = useIntl(); return (
    @@ -33,4 +30,4 @@ export default ExampleComponent; ``` > Accessing react-intl's [legacy context value](https://reactjs.org/docs/legacy-context.html) directly is **not recommended**. -> This API is deprecated and not provided by react-intl v3.x. Terra's recommended usage patterns are supported by versions 2.x and 3.x of react-intl. +> This API is deprecated and not provided by react-intl v3.x. Terra's recommended usage patterns are supported by versions 5.x of react-intl. diff --git a/packages/terra-application/src/terra-dev-site/test/application-base/ApplicationBaseTest.test.jsx b/packages/terra-application/src/terra-dev-site/test/application-base/ApplicationBaseTest.test.jsx index 4365833ce..f675e1564 100644 --- a/packages/terra-application/src/terra-dev-site/test/application-base/ApplicationBaseTest.test.jsx +++ b/packages/terra-application/src/terra-dev-site/test/application-base/ApplicationBaseTest.test.jsx @@ -4,7 +4,7 @@ import ApplicationLoadingOverlay from 'terra-application/lib/application-loading import ApplicationStatusOverlay from 'terra-application/lib/application-status-overlay'; import ApplicationBase from 'terra-application/lib/application-base'; import NavigationPrompt from 'terra-application/lib/navigation-prompt'; -import { ApplicationIntlContext } from 'terra-application/lib/application-intl'; +import { useIntl } from 'react-intl'; import { ThemeContext } from 'terra-application/lib/theme'; const ApplicationContentTest = () => { @@ -14,7 +14,7 @@ const ApplicationContentTest = () => { const [showStatusOverlay, setShowStatusOverlay] = useState(false); const activeBreakpoint = useContext(ActiveBreakpointContext); - const applicationIntl = useContext(ApplicationIntlContext); + const applicationIntl = useIntl(); const theme = useContext(ThemeContext); if (throwError) { diff --git a/packages/terra-application/src/terra-dev-site/test/application-base/private/testOverridesTest.test.jsx b/packages/terra-application/src/terra-dev-site/test/application-base/private/testOverridesTest.test.jsx index e74eec9e1..602ca5457 100644 --- a/packages/terra-application/src/terra-dev-site/test/application-base/private/testOverridesTest.test.jsx +++ b/packages/terra-application/src/terra-dev-site/test/application-base/private/testOverridesTest.test.jsx @@ -1,9 +1,9 @@ import React, { useContext } from 'react'; -import { ApplicationIntlContext } from 'terra-application/lib/application-intl'; +import { useIntl } from 'react-intl'; import { ThemeContext } from 'terra-application/lib/theme'; const TestOverrideTest = () => { - const applicationIntl = useContext(ApplicationIntlContext); + const applicationIntl = useIntl(); const theme = useContext(ThemeContext); return (
    diff --git a/packages/terra-application/src/terra-dev-site/test/application-navigation/ApplicationNavigationDisabledPromptsTest.test.jsx b/packages/terra-application/src/terra-dev-site/test/application-navigation/ApplicationNavigationDisabledPromptsTest.test.jsx index 6c102d6ad..efc375831 100644 --- a/packages/terra-application/src/terra-dev-site/test/application-navigation/ApplicationNavigationDisabledPromptsTest.test.jsx +++ b/packages/terra-application/src/terra-dev-site/test/application-navigation/ApplicationNavigationDisabledPromptsTest.test.jsx @@ -1,7 +1,7 @@ -import React, { useState, useContext } from 'react'; +import React, { useState } from 'react'; import PropTypes from 'prop-types'; import { ThemeContext } from 'terra-application/lib/theme'; -import { ApplicationIntlContext } from '../../../application-intl'; +import { useIntl } from 'react-intl'; import ApplicationBase from '../../../application-base'; import ApplicationNavigation from '../../../application-navigation'; import NavigationPrompt from '../../../navigation-prompt'; @@ -35,7 +35,7 @@ PageContent.propTypes = { }; const ApplicationNavigationDisabledPromptsTest = () => { - const applicationIntl = useContext(ApplicationIntlContext); + const applicationIntl = useIntl(); const theme = React.useContext(ThemeContext); const [activeNavItem, setActiveNavItem] = useState('page_1'); const [loggedOut, setLoggedOut] = useState(false); diff --git a/packages/terra-application/src/terra-dev-site/test/application-navigation/ApplicationNavigationTest.test.jsx b/packages/terra-application/src/terra-dev-site/test/application-navigation/ApplicationNavigationTest.test.jsx index 67fe745ae..b7ee683b3 100644 --- a/packages/terra-application/src/terra-dev-site/test/application-navigation/ApplicationNavigationTest.test.jsx +++ b/packages/terra-application/src/terra-dev-site/test/application-navigation/ApplicationNavigationTest.test.jsx @@ -1,11 +1,11 @@ -import React, { useState, useContext } from 'react'; +import React, { useState } from 'react'; import PropTypes from 'prop-types'; import { ThemeContext } from 'terra-application/lib/theme'; import ApplicationNavigation, { ApplicationNavigationActionsContext, } from 'terra-application/lib/application-navigation'; +import { useIntl } from 'react-intl'; import { WorkspaceContent } from '../../../workspace'; -import { ApplicationIntlContext } from '../../../application-intl'; import ApplicationBase from '../../../application-base'; import NavigationPrompt from '../../../navigation-prompt'; @@ -119,7 +119,7 @@ const workspace = ( ); const ApplicationNavigationTest = () => { - const applicationIntl = useContext(ApplicationIntlContext); + const applicationIntl = useIntl(); const theme = React.useContext(ThemeContext); const [activeNavItem, setActiveNavItem] = useState('page_1'); const [loggedOut, setLoggedOut] = useState(false); diff --git a/packages/terra-application/src/workspace/Workspace.jsx b/packages/terra-application/src/workspace/Workspace.jsx index 2e26f571d..d1ec5a643 100644 --- a/packages/terra-application/src/workspace/Workspace.jsx +++ b/packages/terra-application/src/workspace/Workspace.jsx @@ -7,13 +7,13 @@ import IconSettings from 'terra-icon/lib/icon/IconSettings'; import IconPanelRight from 'terra-icon/lib/icon/IconPanelRight'; import Popup from 'terra-popup'; +import { useIntl } from 'react-intl'; import ActionMenu, { ActionMenuDivider, ActionMenuItem, ActionMenuGroup, ActionMenuRadio, } from '../action-menu'; -import { ApplicationIntlContext } from '../application-intl'; import usePortalManager, { getPortalElement } from './shared/usePortalManager'; import WorkspaceButton from './subcomponents/_WorkspaceButton'; @@ -118,7 +118,7 @@ const Workspace = ({ }) => { const [isMenuOpen, setIsMenuOpen] = useState(false); const theme = React.useContext(ThemeContext); - const intl = React.useContext(ApplicationIntlContext); + const intl = useIntl(); const sizeMenuRef = useRef(); const [workspaceContainerRef, workspacePortalsRef] = usePortalManager(activeItemKey); diff --git a/packages/terra-application/tests/jest/MockApplication.jsx b/packages/terra-application/tests/jest/MockApplication.jsx index 184841909..5aef5450e 100644 --- a/packages/terra-application/tests/jest/MockApplication.jsx +++ b/packages/terra-application/tests/jest/MockApplication.jsx @@ -1,13 +1,12 @@ import React from 'react'; import { IntlProvider } from 'react-intl'; -import { mockIntl } from 'terra-enzyme-intl'; import { ApplicationIntlContext } from '../../src/application-intl'; /* eslint-disable react/prop-types */ const MockApplication = ({ children }) => ( // eslint-disable-next-line compat/compat property })}> - + {children} diff --git a/packages/terra-application/tests/jest/action-menu/__snapshots__/ActionMenu.test.jsx.snap b/packages/terra-application/tests/jest/action-menu/__snapshots__/ActionMenu.test.jsx.snap index e9a4b7a78..b8e81bd79 100644 --- a/packages/terra-application/tests/jest/action-menu/__snapshots__/ActionMenu.test.jsx.snap +++ b/packages/terra-application/tests/jest/action-menu/__snapshots__/ActionMenu.test.jsx.snap @@ -6,7 +6,7 @@ exports[`ActionMenu should render with all props 1`] = ` className="action-container" fill={true} header={ - diff --git a/packages/terra-application/tests/jest/action-menu/__snapshots__/_ActionMenuHeader.test.jsx.snap b/packages/terra-application/tests/jest/action-menu/__snapshots__/_ActionMenuHeader.test.jsx.snap index 8625adc13..8ebdcb5ef 100644 --- a/packages/terra-application/tests/jest/action-menu/__snapshots__/_ActionMenuHeader.test.jsx.snap +++ b/packages/terra-application/tests/jest/action-menu/__snapshots__/_ActionMenuHeader.test.jsx.snap @@ -1,53 +1,92 @@ // Jest Snapshot v1, https://goo.gl/fbAQLP exports[`ActionMenuHeader should render with all props 1`] = ` -
    -
    - test label -
    -
    -
    -
    + `; exports[`ActionMenuHeader should render with minimal props 1`] = ` -
    -
    - test label -
    -
    -
    + `; diff --git a/packages/terra-application/tests/jest/application-base/ApplicationBase.test.jsx b/packages/terra-application/tests/jest/application-base/ApplicationBase.test.jsx index 0ad12d119..f7e8690f2 100644 --- a/packages/terra-application/tests/jest/application-base/ApplicationBase.test.jsx +++ b/packages/terra-application/tests/jest/application-base/ApplicationBase.test.jsx @@ -3,7 +3,7 @@ import ApplicationBase from '../../../src/application-base/ApplicationBase'; describe('ApplicationBase', () => { it('should render with minimal props', () => { - const wrapper = enzyme.shallow(( + const wrapper = enzymeIntl.mountWithIntl((
    content
    @@ -12,14 +12,11 @@ describe('ApplicationBase', () => { }); it('should render with all props', () => { - const wrapper = enzyme.shallow(( + const wrapper = enzymeIntl.mountWithIntl(( placeholder
    } + unloadPromptIsDisabled themeName="test-theme" - themeIsGlobal - fitToParentIsDisabled >
    content
    @@ -27,50 +24,21 @@ describe('ApplicationBase', () => { expect(wrapper).toMatchSnapshot(); }); - it('should render with the preferred browser local', () => { - const wrapper = enzyme.shallow(( + it('should render with the preferred browser locale', () => { + const wrapper = enzymeIntl.mountWithIntl((
    content
    )); expect(wrapper).toMatchSnapshot(); }); + it('should render without scroll', () => { - const wrapper = enzyme.shallow(( + const wrapper = enzymeIntl.mountWithIntl((
    content
    )); expect(wrapper).toMatchSnapshot(); }); - - it('should render with theme and density', () => { - const wrapper = enzyme.shallow(( - -
    content
    -
    - )); - - const themeProvider = wrapper.find('ThemeProvider'); - expect(themeProvider.props().themeName).toBe('test-theme'); - expect(themeProvider.props().density).toBe('compact'); - - const themeContext = wrapper.find('ThemeContextProvider'); - expect(themeContext.props().theme).toStrictEqual({ name: 'test-theme', className: 'test-theme', density: 'compact' }); - }); - - it('should render with density', () => { - const wrapper = enzyme.shallow(( - -
    content
    -
    - )); - - const themeProvider = wrapper.find('ThemeProvider'); - expect(themeProvider.props().themeName).toBeUndefined(); - expect(themeProvider.props().density).toBe('compact'); - - const themeContext = wrapper.find('ThemeContextProvider'); - expect(themeContext.props().theme).toStrictEqual({ name: 'terra-default-theme', className: undefined, density: 'compact' }); - }); }); diff --git a/packages/terra-application/tests/jest/application-base/__snapshots__/ApplicationBase.test.jsx.snap b/packages/terra-application/tests/jest/application-base/__snapshots__/ApplicationBase.test.jsx.snap index 6f1611cba..1f5b0718e 100644 --- a/packages/terra-application/tests/jest/application-base/__snapshots__/ApplicationBase.test.jsx.snap +++ b/packages/terra-application/tests/jest/application-base/__snapshots__/ApplicationBase.test.jsx.snap @@ -1,228 +1,23 @@ // Jest Snapshot v1, https://goo.gl/fbAQLP exports[`ApplicationBase should render with all props 1`] = ` -
    - - - - placeholder -
    - } - > - - - - - - - - } - > -
    - content -
    -
    -
    -
    -
    -
    -
    -
    - - - -
    + `; exports[`ApplicationBase should render with minimal props 1`] = ` -
    - - - - - - - - - - - } - > -
    - content -
    -
    -
    -
    -
    -
    -
    -
    - -
    -
    -
    + `; -exports[`ApplicationBase should render with the preferred browser local 1`] = ` -
    - - - - - - - - - - - } - > -
    - content -
    -
    -
    -
    -
    -
    -
    -
    - -
    -
    -
    -`; +exports[`ApplicationBase should render with the preferred browser locale 1`] = ``; exports[`ApplicationBase should render without scroll 1`] = ` -
    - - - - - - - - - - - } - > -
    - content -
    -
    -
    -
    -
    -
    -
    -
    - -
    -
    -
    + `; diff --git a/packages/terra-application/tests/jest/application-base/private/i18nloader.test.js b/packages/terra-application/tests/jest/application-base/private/i18nloader.test.js new file mode 100644 index 000000000..95ce26954 --- /dev/null +++ b/packages/terra-application/tests/jest/application-base/private/i18nloader.test.js @@ -0,0 +1,201 @@ +/* eslint-disable no-console, import/no-unresolved */ +import * as relativetimeformatPolyfill from '@formatjs/intl-relativetimeformat/should-polyfill'; +import i18nLoader from '../../../../src/application-base/private/i18nLoader'; +import defaultLoadIntl from '../../../../src/application-base/private/intlLoaders'; +import loadTranslations from '../../../../src/application-base/private/translationsLoaders'; + +jest.mock('../../../../src/application-base/private/intlLoaders'); +jest.mock('../../../../src/application-base/private/translationsLoaders'); +jest.mock('@formatjs/intl-relativetimeformat/should-polyfill'); + +global.console.warn = jest.fn(); + +describe('i18nLoader', () => { + beforeEach(() => { + console.warn.mockClear(); + }); + + describe('when intl is provided by browser', () => { + beforeAll(() => { + defaultLoadIntl.mockClear(); + global.Intl = { DateTimeFormat: jest.fn(), NumberFormat: jest.fn(), PluralRules: jest.fn() }; + relativetimeformatPolyfill.shouldPolyfill = jest.fn().mockReturnValue(false); + i18nLoader('en'); + }); + afterAll(() => { global.Intl = undefined; }); + + it('does not add the intl polyfill ', () => { + expect(global.IntlPolyfill).not.toBeDefined(); + }); + + it('does not load intl data', () => { + expect(defaultLoadIntl).not.toHaveBeenCalled(); + }); + }); + + describe('when Intl.RelativeTimeFormat is not defined', () => { + beforeAll(() => { + defaultLoadIntl.mockClear(); + loadTranslations.mockClear(); + global.Intl = { DateTimeFormat: jest.fn(), NumberFormat: jest.fn(), PluralRules: jest.fn() }; + relativetimeformatPolyfill.shouldPolyfill = jest.fn().mockReturnValue(true); + }); + afterAll(() => { global.Intl = undefined; }); + + it('loads en locale', () => { + i18nLoader('en'); + + // adds the intl polyfill + expect(global.Intl).toBeDefined(); + + // loads the locale data + expect(defaultLoadIntl).toHaveBeenNthCalledWith(1, 'en', 'relativetimeformat'); + + // loads translations + expect(loadTranslations).toHaveBeenNthCalledWith(1, 'en'); + }); + + it('loads es locale', () => { + i18nLoader('es'); + + // loads the new locale data on sequential load + expect(defaultLoadIntl).toHaveBeenNthCalledWith(1, 'es', 'relativetimeformat'); + + // loads the new translation data on sequential load + expect(loadTranslations).toHaveBeenNthCalledWith(1, 'es'); + }); + }); + + describe('when intl is not defined', () => { + beforeAll(() => { + defaultLoadIntl.mockClear(); + loadTranslations.mockClear(); + relativetimeformatPolyfill.shouldPolyfill = jest.fn().mockReturnValue(false); + global.Intl = undefined; + }); + afterAll(() => { global.Intl = undefined; }); + + it('loads en locale', () => { + i18nLoader('en'); + + // adds the intl polyfill + expect(global.Intl).toBeDefined(); + expect(global.IntlPolyfill).toBeDefined(); + + // loads the locale data + expect(defaultLoadIntl).toHaveBeenNthCalledWith(1, 'en', 'intl'); + + // loads translations + expect(loadTranslations).toHaveBeenNthCalledWith(1, 'en'); + }); + + it('loads es locale', () => { + i18nLoader('es'); + + // loads the new locale data on sequential load + expect(defaultLoadIntl).toHaveBeenNthCalledWith(1, 'es', 'intl'); + + // loads the new translation data on sequential load + expect(loadTranslations).toHaveBeenNthCalledWith(1, 'es'); + }); + }); + + describe('when Intl.DataTimeFormat is not defined', () => { + beforeAll(() => { + defaultLoadIntl.mockClear(); + loadTranslations.mockClear(); + global.Intl = { DateTimeFormat: undefined }; + }); + afterAll(() => { global.Intl = undefined; }); + + it('loads en locale', () => { + i18nLoader('en'); + + // adds the intl polyfill + expect(global.Intl).toBeDefined(); + expect(global.IntlPolyfill).toBeDefined(); + + // loads the locale data + expect(defaultLoadIntl).toHaveBeenNthCalledWith(1, 'en', 'intl'); + + // loads translations + expect(loadTranslations).toHaveBeenNthCalledWith(1, 'en'); + }); + + it('loads es locale', () => { + i18nLoader('es'); + + // loads the new locale data on sequential load + expect(defaultLoadIntl).toHaveBeenNthCalledWith(1, 'es', 'intl'); + + // loads the new translation data on sequential load + expect(loadTranslations).toHaveBeenNthCalledWith(1, 'es'); + }); + }); + + describe('when Intl.NumberFormat is not defined', () => { + beforeAll(() => { + defaultLoadIntl.mockClear(); + loadTranslations.mockClear(); + global.Intl = { DateTimeFormat: jest.fn() }; + }); + afterAll(() => { global.Intl = undefined; }); + + it('loads en locale', () => { + i18nLoader('en'); + + // adds the intl polyfill + expect(global.Intl).toBeDefined(); + expect(global.IntlPolyfill).toBeDefined(); + + // loads the locale data + expect(defaultLoadIntl).toHaveBeenNthCalledWith(1, 'en', 'intl'); + + // loads translations + expect(loadTranslations).toHaveBeenNthCalledWith(1, 'en'); + }); + + it('loads es locale', () => { + i18nLoader('es'); + + // loads the new locale data on sequential load + expect(defaultLoadIntl).toHaveBeenNthCalledWith(1, 'es', 'intl'); + + // loads the new translation data on sequential load + expect(loadTranslations).toHaveBeenNthCalledWith(1, 'es'); + }); + }); + + describe('when Intl.PluralRules is not defined', () => { + beforeAll(() => { + defaultLoadIntl.mockClear(); + loadTranslations.mockClear(); + global.Intl = { DateTimeFormat: jest.fn(), NumberFormat: jest.fn() }; + }); + afterAll(() => { global.Intl = undefined; }); + + it('loads en locale', () => { + i18nLoader('en'); + + // adds the intl polyfill + expect(global.Intl).toBeDefined(); + expect(global.IntlPolyfill).toBeDefined(); + + // loads the locale data + expect(defaultLoadIntl).toHaveBeenNthCalledWith(1, 'en', 'intl'); + + // loads translations + expect(loadTranslations).toHaveBeenNthCalledWith(1, 'en'); + }); + + it('loads es locale', () => { + i18nLoader('es'); + + // loads the new locale data on sequential load + expect(defaultLoadIntl).toHaveBeenNthCalledWith(1, 'es', 'intl'); + + // loads the new translation data on sequential load + expect(loadTranslations).toHaveBeenNthCalledWith(1, 'es'); + }); + }); +}); diff --git a/packages/terra-application/tests/jest/application-base/private/intlLoaders.test.js b/packages/terra-application/tests/jest/application-base/private/intlLoaders.test.js new file mode 100644 index 000000000..e4f58298b --- /dev/null +++ b/packages/terra-application/tests/jest/application-base/private/intlLoaders.test.js @@ -0,0 +1,239 @@ +import hasIntlData from 'intl-locales-supported'; +import * as loadLocaleData from '../../../../src/application-base/private/loadLocaleData'; +import loadIntl from '../../../../src/application-base/private/intlLoaders'; +import logger from '../../../../src/utils/logger'; + +jest.mock('intl-locales-supported'); +jest.mock('../../../../src/application-base/private/loadLocaleData'); +jest.mock('../../../../src/utils/logger', () => ({ + warn: jest.fn(), +})); + +const supportedIntlConstructors = [ + Intl.DateTimeFormat, + Intl.NumberFormat, + Intl.PluralRules, +]; + +describe('intlLoaders', () => { + beforeAll(() => { + hasIntlData.mockReturnValue(false); + }); + + afterAll(() => { + window.Intl.mockReset(); + }); + + describe('dev environment', () => { + beforeEach(() => { + logger.warn.mockClear(); + }); + + it('logs a warning when the regional locale is not provided and locale fallback is used', () => { + loadLocaleData.default = jest.fn(locale => { + if (locale === 'es-US') { + return Promise.reject(Error('Locale data was not supplied for the es-US locale.')); + } + return Promise.resolve(); + }); + expect.assertions(4); + return loadIntl('es-US', 'intl').then(() => { + expect(logger.warn).toBeCalledWith('Locale data was not supplied for the es-US locale. Using es data as the fallback locale data.'); + expect(loadLocaleData.default).toHaveBeenCalledTimes(2); + expect(loadLocaleData.default).toHaveBeenNthCalledWith(2, 'es', 'intl'); + expect(loadLocaleData.default).not.toHaveBeenCalledWith('en', 'intl'); + }); + }); + + it('logs a warning when the locale is not provided and en fallback is used', () => { + loadLocaleData.default = jest.fn(locale => { + if (locale === 'es') { + return Promise.reject(Error('Locale data was not supplied for the es locale.')); + } + return Promise.resolve(); + }); + expect.assertions(3); + return loadIntl('es', 'intl').then(() => { + expect(logger.warn).toBeCalledWith('Locale data was not supplied for the es locale. Using en data as the fallback locale data.'); + expect(loadLocaleData.default).toHaveBeenCalledTimes(2); + expect(loadLocaleData.default).toHaveBeenNthCalledWith(2, 'en', 'intl'); + }); + }); + + it('logs a warning when the regional locale and locale are not provided and en fallback is used', () => { + loadLocaleData.default = jest.fn(locale => { + if (locale === 'es-US') { + return Promise.reject(Error('Locale data was not supplied for the es-US locale.')); + } + if (locale === 'es') { + return Promise.reject(Error('Locale data was not supplied for the es locale.')); + } + return Promise.resolve(); + }); + expect.assertions(4); + return loadIntl('es-US', 'intl').then(() => { + expect(logger.warn).toBeCalledWith('Locale data was not supplied for the es-US locale. Using es data as the fallback locale data.'); + expect(logger.warn).toBeCalledWith('Locale data was not supplied for the es locale. Using en data as the fallback locale data.'); + expect(loadLocaleData.default).toHaveBeenCalledTimes(3); + expect(loadLocaleData.default).toHaveBeenNthCalledWith(3, 'en', 'intl'); + }); + }); + + it('throws an error when the regional locale and en fallback are not provided', () => { + loadLocaleData.default = jest.fn(() => Promise.reject(Error('Test no locale data'))); + return expect(loadIntl('es-US', 'intl')).rejects.toThrow('Test no locale data'); + }); + + it('throws an error when the locale and en fallback are not provided', () => { + loadLocaleData.default = jest.fn(() => Promise.reject(Error('Test no locale data'))); + return expect(loadIntl('es', 'intl')).rejects.toThrow('Test no locale data'); + }); + }); + + describe('production environment', () => { + beforeEach(() => { + process.env.NODE_ENV = 'production'; + logger.warn.mockClear(); + }); + + afterEach(() => { + delete process.env.NODE_ENV; + }); + + it('only fallbacks when the regional locale is not provided and locale fallback is used', () => { + loadLocaleData.default = jest.fn(locale => { + if (locale === 'es-US') { + return Promise.reject(Error('Locale data was not supplied for the es-US locale.')); + } + return Promise.resolve(); + }); + expect.assertions(3); + return loadIntl('es-US', 'intl').then(() => { + expect(loadLocaleData.default).toHaveBeenCalledTimes(2); + expect(loadLocaleData.default).toHaveBeenNthCalledWith(2, 'es', 'intl'); + expect(loadLocaleData.default).not.toHaveBeenCalledWith('en', 'intl'); + }); + }); + + it('only fallbacks when the regional locale and locale are not provided and en fallback is used', () => { + loadLocaleData.default = jest.fn(locale => { + if (locale === 'es') { + return Promise.reject(Error('Locale data was not supplied for the es locale.')); + } + return Promise.resolve(); + }); + expect.assertions(2); + return loadIntl('es', 'intl').then(() => { + expect(loadLocaleData.default).toHaveBeenCalledTimes(2); + expect(loadLocaleData.default).toHaveBeenNthCalledWith(2, 'en', 'intl'); + }); + }); + + it('only fallbacks when the locale is not provided and en fallback is used', () => { + loadLocaleData.default = jest.fn(locale => { + if (locale === 'es-US') { + return Promise.reject(Error('Locale data was not supplied for the es-US locale.')); + } + if (locale === 'es') { + return Promise.reject(Error('Locale data was not supplied for the es locale.')); + } + return Promise.resolve(); + }); + expect.assertions(2); + return loadIntl('es-US', 'intl').then(() => { + expect(loadLocaleData.default).toHaveBeenCalledTimes(3); + expect(loadLocaleData.default).toHaveBeenNthCalledWith(3, 'en', 'intl'); + }); + }); + + it('still throws an error when the locale and en fallback are not provided', () => { + loadLocaleData.default = jest.fn(() => Promise.reject(Error('Test no locale data'))); + return expect(loadIntl('es-US', 'intl')).rejects.toThrow('Test no locale data'); + }); + + it('still throws an error when the regional locale and en fallback are not provided', () => { + loadLocaleData.default = jest.fn(() => Promise.reject(Error('Test no locale data'))); + return expect(loadIntl('es', 'intl')).rejects.toThrow('Test no locale data'); + }); + }); + describe('loads locale data as needed', () => { + beforeEach(() => { + hasIntlData.mockClear(); + loadLocaleData.default = jest.fn(() => Promise.resolve()); + }); + + it('loads locale data', () => { + hasIntlData.mockReturnValue(false); + expect.assertions(3); + return loadIntl('es', 'intl').then(() => { + expect(loadLocaleData.default).toHaveBeenCalledWith('es', 'intl'); + expect(loadLocaleData.default).not.toHaveBeenCalledWith('en', 'intl'); + expect(hasIntlData).toBeCalledWith(['es'], supportedIntlConstructors); + }); + }); + + it('does not re-load locale data when it has already been loaded', () => { + hasIntlData.mockReturnValue(true); + expect.assertions(3); + return loadIntl('es', 'intl').then(() => { + expect(loadLocaleData.default).not.toHaveBeenCalledWith('es', 'intl'); + expect(loadLocaleData.default).not.toHaveBeenCalledWith('en', 'intl'); + expect(hasIntlData).toBeCalledWith(['es'], supportedIntlConstructors); + }); + }); + + it('does load new locale data', () => { + hasIntlData.mockReturnValue(false); + expect.assertions(3); + return loadIntl('pt', 'intl').then(() => { + expect(loadLocaleData.default).toHaveBeenCalledWith('pt', 'intl'); + expect(loadLocaleData.default).not.toHaveBeenCalledWith('en', 'intl'); + expect(hasIntlData).toBeCalledWith(['pt'], supportedIntlConstructors); + }); + }); + + it('does not re-load region locale data if regional local has already been loaded', () => { + loadLocaleData.default = jest.fn(locale => { + if (locale === 'es-US') { + return Promise.reject(Error('Locale data not provided for es-US locale.')); + } + + return Promise.resolve(); + }); + hasIntlData.mockReturnValue(true); + expect.assertions(3); + return loadIntl('es-US', 'intl').then(() => { + expect(loadLocaleData.default).not.toHaveBeenCalledWith('es', 'intl'); + expect(loadLocaleData.default).not.toHaveBeenCalledWith('en', 'intl'); + expect(hasIntlData).toHaveBeenNthCalledWith(1, ['es-US'], supportedIntlConstructors); + }); + }); + + it('does not fallback locale data if fallback has already been loaded', () => { + loadLocaleData.default = jest.fn(locale => { + if (locale === 'es-US') { + return Promise.reject(Error('Locale data not provided for es-US locale.')); + } + if (locale === 'es') { + return Promise.reject(Error('Locale data not provided for es locale.')); + } + + return Promise.resolve(); + }); + hasIntlData.mockReturnValue(false).mockReturnValueOnce(true); + expect.assertions(2); + return loadIntl('es-US', 'intl').then(() => { + expect(loadLocaleData.default).not.toHaveBeenCalledWith('en', 'intl'); + expect(hasIntlData).toHaveBeenNthCalledWith(1, ['es-US'], supportedIntlConstructors); + }); + }); + + it('does not add supported Intl constructors if supportedLocalesOf property does not exist', () => { + delete Intl.DateTimeFormat.supportedLocalesOf; + delete Intl.NumberFormat.supportedLocalesOf; + return loadIntl('en', 'intl').then(() => { + expect(hasIntlData).toHaveBeenNthCalledWith(1, ['en'], []); + }); + }); + }); +}); diff --git a/packages/terra-application/tests/jest/application-base/private/loadLocaleData.test.js b/packages/terra-application/tests/jest/application-base/private/loadLocaleData.test.js new file mode 100644 index 000000000..7aefba5e4 --- /dev/null +++ b/packages/terra-application/tests/jest/application-base/private/loadLocaleData.test.js @@ -0,0 +1,83 @@ +import loadLocaleData from '../../../../src/application-base/private/loadLocaleData'; + +const locales = ['en', 'en-AU', 'en-CA', 'en-US', 'en-GB', 'es', 'es-US', 'es-ES', 'de', 'fr', 'fr-FR', 'nl', 'nl-BE', 'pt', 'pt-BR', 'sv', 'sv-SE']; + +describe('loadLocaleData', () => { + beforeEach(() => { + jest.resetModules(); + }); + + locales.forEach((locale) => { + it(`loads ${locale} intl data`, () => { + jest.doMock(`intl/locale-data/jsonp/${locale}.js`, () => ({ + localeData: `${locale} included`, + })); + expect.assertions(1); + return loadLocaleData(locale, 'intl').then((module) => { + expect(module.localeData).toEqual(`${locale} included`); + }); + }); + + if (locale === 'es-ES') { + it('loads es intl-relativetimeformat data for es-ES locale', () => { + jest.doMock('@formatjs/intl-relativetimeformat/locale-data/es.js', () => ({ + localeData: 'es included', + })); + expect.assertions(1); + return loadLocaleData(locale, 'intl-relativetimeformat').then((module) => { + expect(module.localeData).toEqual('es included'); + }); + }); + } else if (locale === 'fr-FR') { + it('loads fr intl-relativetimeformat data for fr-FR locale', () => { + jest.doMock('@formatjs/intl-relativetimeformat/locale-data/fr.js', () => ({ + localeData: 'fr included', + })); + expect.assertions(1); + return loadLocaleData(locale, 'intl-relativetimeformat').then((module) => { + expect(module.localeData).toEqual('fr included'); + }); + }); + } else if (locale === 'sv-SE') { + it('loads sv intl-relativetimeformat data for sv-SE locale', () => { + jest.doMock('@formatjs/intl-relativetimeformat/locale-data/sv.js', () => ({ + localeData: 'sv included', + })); + expect.assertions(1); + return loadLocaleData(locale, 'intl-relativetimeformat').then((module) => { + expect(module.localeData).toEqual('sv included'); + }); + }); + } else if (locale === 'pt-BR') { + it('loads pt intl-relativetimeformat data for pt-BR locale', () => { + jest.doMock('@formatjs/intl-relativetimeformat/locale-data/pt.js', () => ({ + localeData: 'pt included', + })); + expect.assertions(1); + return loadLocaleData(locale, 'intl-relativetimeformat').then((module) => { + expect(module.localeData).toEqual('pt included'); + }); + }); + } else { + it(`loads ${locale} intl-relativetimeformat data`, () => { + jest.doMock(`@formatjs/intl-relativetimeformat/locale-data/${locale}.js`, () => ({ + localeData: `${locale} included`, + })); + expect.assertions(1); + return loadLocaleData(locale, 'intl-relativetimeformat').then((module) => { + expect(module.localeData).toEqual(`${locale} included`); + }); + }); + } + }); + + it('throws error when intl locale data does not exist', () => { + expect.assertions(1); + return expect(loadLocaleData('fake', 'intl')).rejects.toThrow(); + }); + + it('throws error when intl-relativetimeformat locale data does not exist', () => { + expect.assertions(1); + return expect(loadLocaleData('fake', 'intl-relativetimeformat')).rejects.toThrow(); + }); +}); diff --git a/packages/terra-application/tests/jest/application-base/private/translationsLoaders.test.js b/packages/terra-application/tests/jest/application-base/private/translationsLoaders.test.js new file mode 100644 index 000000000..7f58b718c --- /dev/null +++ b/packages/terra-application/tests/jest/application-base/private/translationsLoaders.test.js @@ -0,0 +1,157 @@ +import loadTranslations from '../../../../src/application-base/private/translationsLoaders'; +import Logger from '../../../../src/utils/logger'; + +describe('translationsLoaders', () => { + beforeEach(() => { + jest.resetModules(); + }); + + it('loads en translation file', async () => { + jest.doMock('en.js', () => ({ + test: 'test', + })); + expect.assertions(1); + await loadTranslations('en').then(messages => { + expect(messages.test).toEqual('test'); + }); + }); + + it('logs a warning when the regional locale is not provided and locale fallback is used', async () => { + const spy = jest.spyOn(Logger, 'warn').mockImplementation(() => {}); + jest.doMock('es.js', () => ({ + test: 'test-es', + })); + expect.assertions(1); + await loadTranslations('es-US').then(() => { + expect(spy).toBeCalledWith(expect.stringContaining('Translations were not supplied for the es-US locale. Using es data as the fallback locale.')); + spy.mockRestore(); + }); + }); + + it('logs a warning when the locale is not provided and en fallback is used', async () => { + const spy = jest.spyOn(Logger, 'warn').mockImplementation(() => {}); + + let callCount = 0; + + // this doMock actually mocks both 'en.js' and 'es.js' due to the module name mapper mapping the en and es files to the same file. + jest.doMock('en.js', () => { + if (callCount === 0) { + callCount += 1; + throw new Error('Translations were not supplied for the es locale.'); + } + return ({ + test: 'test', + }); + }); + + await loadTranslations('es').then((messages) => { + expect(messages.test).toEqual('test'); + expect(spy).toBeCalledWith(expect.stringContaining('Translations were not supplied for the es locale. Using en as the fallback locale.')); + spy.mockRestore(); + }); + }); + + it('logs a warning when the regional locale and locale are not provided and en fallback is used', async () => { + const spy = jest.spyOn(Logger, 'warn').mockImplementation(() => {}); + + let callCount = 0; + + // this doMock actually mocks 'es-ES.js' 'en.js' and 'es.js' due to the module name mapper mapping the en and es files to the same file. + jest.doMock('en.js', () => { + if (callCount === 0) { + callCount += 1; + throw new Error('Translations were not supplied for the es-ES locale.'); + } + if (callCount === 1) { + callCount += 1; + throw new Error('Translations were not supplied for the es locale.'); + } + return ({ + test: 'test', + }); + }); + await loadTranslations('es-ES').then((messages) => { + expect(messages.test).toEqual('test'); + expect(spy).toHaveBeenNthCalledWith(1, expect.stringContaining('Translations were not supplied for the es-ES locale. Using es data as the fallback locale.')); + expect(spy).toHaveBeenNthCalledWith(2, expect.stringContaining('Translations were not supplied for the es locale. Using en as the fallback locale.')); + spy.mockRestore(); + }); + }); + + it('throws an error when the locale and en fallback are not provided', async () => { + const spy = jest.spyOn(Logger, 'warn').mockImplementation(() => {}); + let callCount = 0; + + // this doMock actually mocks both 'en.js' and 'es.js' due to the module name mapper mapping the en and es files to the same file. + jest.doMock('en.js', () => { + if (callCount === 0) { + callCount += 1; + throw new Error('Translations were not supplied for the es locale.'); + } + throw new Error('Translations were not supplied for the en locale.'); + }); + + await expect(loadTranslations('es')).rejects.toThrow('Translations were not supplied for the en locale.'); + spy.mockRestore(); + }); + + it('throws an error when the regional locale and en fallback are not provided', async () => { + const spy = jest.spyOn(Logger, 'warn').mockImplementation(() => {}); + let callCount = 0; + + // this doMock actually mocks both 'en.js' and 'es.js' due to the module name mapper mapping the en and es files to the same file. + jest.doMock('en.js', () => { + if (callCount === 0) { + callCount += 1; + throw new Error('Translations were not supplied for the en-US locale.'); + } + throw new Error('Translations were not supplied for the en locale.'); + }); + + await expect(loadTranslations('en-US')).rejects.toThrow('Translations were not supplied for the en locale.'); + spy.mockRestore(); + }); + + describe('production environment', () => { + beforeEach(() => { + process.env.NODE_ENV = 'production'; + }); + + afterEach(() => { + delete process.env.NODE_ENV; + }); + + it('still throws an error when the locale and en fallback are not provided', async () => { + const spy = jest.spyOn(Logger, 'warn').mockImplementation(() => {}); + let callCount = 0; + + // this doMock actually mocks both 'en.js' and 'es.js' due to the module name mapper mapping the en and es files to the same file. + jest.doMock('en.js', () => { + if (callCount === 0) { + callCount += 1; + throw new Error('Translations were not supplied for the es locale.'); + } + throw new Error('Translations were not supplied for the en locale.'); + }); + + await expect(loadTranslations('es')).rejects.toThrow('Translations were not supplied for the en locale.'); + spy.mockRestore(); + }); + + it('still throws an error when the regional locale and en fallback are not provided', async () => { + const spy = jest.spyOn(Logger, 'warn').mockImplementation(() => {}); + let callCount = 0; + + // this doMock actually mocks both 'en.js' and 'es.js' due to the module name mapper mapping the en and es files to the same file. + jest.doMock('en.js', () => { + if (callCount === 0) { + callCount += 1; + throw new Error('Translations were not supplied for the en-US locale.'); + } + throw new Error('Translations were not supplied for the en locale.'); + }); + await expect(loadTranslations('en-US')).rejects.toThrow('Translations were not supplied for the en locale.'); + spy.mockRestore(); + }); + }); +}); diff --git a/packages/terra-application/tests/jest/application-error-boundary/ApplicationErrorBoundary.test.jsx b/packages/terra-application/tests/jest/application-error-boundary/ApplicationErrorBoundary.test.jsx index e07fde3b6..996c2992f 100644 --- a/packages/terra-application/tests/jest/application-error-boundary/ApplicationErrorBoundary.test.jsx +++ b/packages/terra-application/tests/jest/application-error-boundary/ApplicationErrorBoundary.test.jsx @@ -7,7 +7,7 @@ describe('ApplicationErrorBoundary', () => { it('should render with minimal props', () => { const wrapper = enzymeIntl.shallowWithIntl(( - )); + )).dive(); expect(wrapper).toMatchSnapshot(); }); @@ -17,7 +17,7 @@ describe('ApplicationErrorBoundary', () => {
    Test child
    - )); + )).dive(); expect(wrapper).toMatchSnapshot(); }); @@ -42,7 +42,7 @@ describe('ApplicationErrorBoundary', () => { /** * After rendering the component again, the error view should no longer be rendered. */ - wrapper.instance().forceUpdate(); + wrapper.setProps({}); expect(wrapper).toMatchSnapshot(); expect(spy).toHaveBeenCalledTimes(1); spy.mockRestore(); diff --git a/packages/terra-application/tests/jest/application-error-boundary/__snapshots__/ApplicationErrorBoundary.test.jsx.snap b/packages/terra-application/tests/jest/application-error-boundary/__snapshots__/ApplicationErrorBoundary.test.jsx.snap index 14c0d3fa2..e5a6841c3 100644 --- a/packages/terra-application/tests/jest/application-error-boundary/__snapshots__/ApplicationErrorBoundary.test.jsx.snap +++ b/packages/terra-application/tests/jest/application-error-boundary/__snapshots__/ApplicationErrorBoundary.test.jsx.snap @@ -1,61 +1,45 @@ // Jest Snapshot v1, https://goo.gl/fbAQLP exports[`ApplicationErrorBoundary Snapshots should render error view when an error is detected 1`] = ` - + @@ -63,65 +47,49 @@ exports[`ApplicationErrorBoundary Snapshots should render error view when an err
    - + `; exports[`ApplicationErrorBoundary Snapshots should render error view when an error is detected 2`] = ` - + @@ -156,11 +124,8 @@ exports[`ApplicationErrorBoundary Snapshots should render error view when an err > - - Terra.status-view.error - + Terra.status-view.error

    - + `; exports[`ApplicationErrorBoundary Snapshots should render error view when an error is detected 3`] = ` - + - -
    -
    -
    -
    -
    -
    -

    - - - Terra.status-view.error - - -

    -
    - -
    -
    -
    -

    - terraApplication.errorBoundary.defaultErrorMessage -

    -
    -
    -
    - + +
    + - + `; exports[`ApplicationErrorBoundary Snapshots should render with children 1`] = ` @@ -348,29 +254,41 @@ exports[`ApplicationErrorBoundary Snapshots should render with minimal props 1`] diff --git a/packages/terra-application/tests/jest/application-intl/__snapshots__/ApplicationIntlProvider.test.jsx.snap b/packages/terra-application/tests/jest/application-intl/__snapshots__/ApplicationIntlProvider.test.jsx.snap index 6d9e64fa3..b41d61f10 100644 --- a/packages/terra-application/tests/jest/application-intl/__snapshots__/ApplicationIntlProvider.test.jsx.snap +++ b/packages/terra-application/tests/jest/application-intl/__snapshots__/ApplicationIntlProvider.test.jsx.snap @@ -1,61 +1,45 @@ // Jest Snapshot v1, https://goo.gl/fbAQLP exports[`ApplicationIntlProvider Snapshots should render an ApplicationIntlContext.Provider 1`] = ` - + @@ -63,5 +47,5 @@ exports[`ApplicationIntlProvider Snapshots should render an ApplicationIntlConte Test Component
    - + `; diff --git a/packages/terra-application/tests/jest/application-navigation/ApplicationNavigation.test.jsx b/packages/terra-application/tests/jest/application-navigation/ApplicationNavigation.test.jsx index e69423df2..4de579d21 100644 --- a/packages/terra-application/tests/jest/application-navigation/ApplicationNavigation.test.jsx +++ b/packages/terra-application/tests/jest/application-navigation/ApplicationNavigation.test.jsx @@ -1,7 +1,18 @@ import React from 'react'; - import ApplicationNavigation from '../../../src/application-navigation/ApplicationNavigation'; +jest.mock('react-intl', () => { + const reactIntl = jest.requireActual('react-intl'); + const intl = reactIntl.createIntl({ + locale: 'en', + }); + + return { + ...reactIntl, + useIntl: () => intl, + }; +}); + describe('ApplicationNavigation', () => { it('should render default element', () => { const shallowComponent = enzyme.shallow( diff --git a/packages/terra-application/tests/jest/application-navigation/__snapshots__/ApplicationNavigation.test.jsx.snap b/packages/terra-application/tests/jest/application-navigation/__snapshots__/ApplicationNavigation.test.jsx.snap index 4e0d1b117..fb48bf3af 100644 --- a/packages/terra-application/tests/jest/application-navigation/__snapshots__/ApplicationNavigation.test.jsx.snap +++ b/packages/terra-application/tests/jest/application-navigation/__snapshots__/ApplicationNavigation.test.jsx.snap @@ -9,7 +9,7 @@ exports[`ApplicationNavigation should render default element 1`] = ` - + } /> - + @@ -99,7 +99,7 @@ exports[`ApplicationNavigation should render with all props 1`] = ` - + - + diff --git a/packages/terra-application/tests/jest/application-navigation/private/__snapshots__/ApplicationNavigation.test.jsx.snap b/packages/terra-application/tests/jest/application-navigation/private/__snapshots__/ApplicationNavigation.test.jsx.snap index e52c97759..ac52cf361 100644 --- a/packages/terra-application/tests/jest/application-navigation/private/__snapshots__/ApplicationNavigation.test.jsx.snap +++ b/packages/terra-application/tests/jest/application-navigation/private/__snapshots__/ApplicationNavigation.test.jsx.snap @@ -1,38 +1,17 @@ // Jest Snapshot v1, https://goo.gl/fbAQLP exports[`ApplicationNavigation correctly applies the theme context className 1`] = ` - + -
    - +
    - - + @@ -306,7 +309,7 @@ exports[`ApplicationNavigation should render default element 1`] = `
    - - @@ -380,7 +383,7 @@ exports[`ApplicationNavigation should render with prop data at large breakpoint
    - - my test hero @@ -562,7 +565,7 @@ exports[`ApplicationNavigation should render with prop data at medium breakpoint
    - @@ -619,7 +622,7 @@ exports[`ApplicationNavigation should render with prop data at medium breakpoint
    - - my test hero diff --git a/packages/terra-application/tests/jest/application-navigation/private/common/__snapshots__/PopupMenu.test.jsx.snap b/packages/terra-application/tests/jest/application-navigation/private/common/__snapshots__/PopupMenu.test.jsx.snap index 325abee4e..baa3c3205 100644 --- a/packages/terra-application/tests/jest/application-navigation/private/common/__snapshots__/PopupMenu.test.jsx.snap +++ b/packages/terra-application/tests/jest/application-navigation/private/common/__snapshots__/PopupMenu.test.jsx.snap @@ -6,7 +6,7 @@ exports[`PopupMenu should render default element 1`] = ` fill={false} footer={} header={ - } @@ -51,7 +51,7 @@ exports[`PopupMenu should render prop data 1`] = ` /> } header={ - @@ -111,7 +111,7 @@ exports[`PopupMenu should render with height bounded 1`] = ` fill={true} footer={} header={ - diff --git a/packages/terra-application/tests/jest/application-navigation/private/common/__snapshots__/PopupMenuUser.test.jsx.snap b/packages/terra-application/tests/jest/application-navigation/private/common/__snapshots__/PopupMenuUser.test.jsx.snap index d93f869df..94935ea9e 100644 --- a/packages/terra-application/tests/jest/application-navigation/private/common/__snapshots__/PopupMenuUser.test.jsx.snap +++ b/packages/terra-application/tests/jest/application-navigation/private/common/__snapshots__/PopupMenuUser.test.jsx.snap @@ -10,7 +10,7 @@ exports[`PopupMenuUser should render default element 1`] = `
    - - @@ -63,7 +62,7 @@ exports[`DrawerMenuUser should render with large variant 1`] = `
    - @@ -113,7 +111,7 @@ exports[`DrawerMenuUser should render with small variant 1`] = `
    - diff --git a/packages/terra-application/tests/jest/application-navigation/private/header/__snapshots__/CompactHeader.test.jsx.snap b/packages/terra-application/tests/jest/application-navigation/private/header/__snapshots__/CompactHeader.test.jsx.snap index 7090a8a96..9f2c492b4 100644 --- a/packages/terra-application/tests/jest/application-navigation/private/header/__snapshots__/CompactHeader.test.jsx.snap +++ b/packages/terra-application/tests/jest/application-navigation/private/header/__snapshots__/CompactHeader.test.jsx.snap @@ -1,62 +1,46 @@ // Jest Snapshot v1, https://goo.gl/fbAQLP exports[`CompactHeader should render default element 1`] = ` - + - + `; exports[`CompactHeader should render title element 1`] = ` - - + `; exports[`CompactHeader should render with function callbacks 1`] = ` - - - +
      - + `; exports[`CompactHeader should render with ids for navigation and extension items 1`] = ` - - - +
      - + `; exports[`CompactHeader should render with menu callback 1`] = ` - - + `; exports[`CompactHeader should render with skip callback 1`] = ` - - + `; diff --git a/packages/terra-application/tests/jest/application-navigation/private/header/__snapshots__/Header.test.jsx.snap b/packages/terra-application/tests/jest/application-navigation/private/header/__snapshots__/Header.test.jsx.snap index 8744494ad..95edded34 100644 --- a/packages/terra-application/tests/jest/application-navigation/private/header/__snapshots__/Header.test.jsx.snap +++ b/packages/terra-application/tests/jest/application-navigation/private/header/__snapshots__/Header.test.jsx.snap @@ -1,61 +1,45 @@ // Jest Snapshot v1, https://goo.gl/fbAQLP exports[`Header should render default element 1`] = ` - +
      - + - +
    - + `; exports[`Header should render title element 1`] = ` - - + - +
    - + `; exports[`Header should render with function callbacks 1`] = ` - } - intl={ - Object { - "defaultFormats": Object {}, - "defaultLocale": "en", - "formatDate": [Function], - "formatHTMLMessage": [Function], - "formatMessage": [Function], - "formatNumber": [Function], - "formatPlural": [Function], - "formatRelative": [Function], - "formatTime": [Function], - "formats": Object {}, - "formatters": Object { - "getDateTimeFormat": [Function], - "getMessageFormat": [Function], - "getNumberFormat": [Function], - "getPluralFormat": [Function], - "getRelativeFormat": [Function], - }, - "locale": "en", - "messages": null, - "now": [Function], - "onError": [Function], - "textComponent": "span", - "timeZone": null, - } - } navigationItems={ Array [ Object { @@ -463,29 +429,41 @@ exports[`Header should render with function callbacks 1`] = ` } intl={ Object { + "$t": [Function], "defaultFormats": Object {}, "defaultLocale": "en", + "defaultRichTextElements": undefined, + "fallbackOnEmptyString": true, "formatDate": [Function], - "formatHTMLMessage": [Function], + "formatDateTimeRange": [Function], + "formatDateToParts": [Function], + "formatDisplayName": [Function], + "formatList": [Function], + "formatListToParts": [Function], "formatMessage": [Function], "formatNumber": [Function], + "formatNumberToParts": [Function], "formatPlural": [Function], - "formatRelative": [Function], + "formatRelativeTime": [Function], "formatTime": [Function], + "formatTimeToParts": [Function], "formats": Object {}, "formatters": Object { "getDateTimeFormat": [Function], + "getDisplayNames": [Function], + "getListFormat": [Function], "getMessageFormat": [Function], "getNumberFormat": [Function], - "getPluralFormat": [Function], - "getRelativeFormat": [Function], + "getPluralRules": [Function], + "getRelativeTimeFormat": [Function], }, "locale": "en", "messages": null, - "now": [Function], "onError": [Function], - "textComponent": "span", - "timeZone": null, + "onWarn": [Function], + "textComponent": Symbol(react.fragment), + "timeZone": undefined, + "wrapRichTextChunksInFragment": undefined, } } navigationItems={ @@ -582,7 +560,7 @@ exports[`Header should render with function callbacks 1`] = `
    - - +
    - - +
    - -
    - +
    - +
    - + `; exports[`Header should render with navigation and extension item ids 1`] = ` - } id="test-application" - intl={ - Object { - "defaultFormats": Object {}, - "defaultLocale": "en", - "formatDate": [Function], - "formatHTMLMessage": [Function], - "formatMessage": [Function], - "formatNumber": [Function], - "formatPlural": [Function], - "formatRelative": [Function], - "formatTime": [Function], - "formats": Object {}, - "formatters": Object { - "getDateTimeFormat": [Function], - "getMessageFormat": [Function], - "getNumberFormat": [Function], - "getPluralFormat": [Function], - "getRelativeFormat": [Function], - }, - "locale": "en", - "messages": null, - "now": [Function], - "onError": [Function], - "textComponent": "span", - "timeZone": null, - } - } navigationItems={ Array [ Object { @@ -1274,29 +1273,41 @@ exports[`Header should render with navigation and extension item ids 1`] = ` id="test-application" intl={ Object { + "$t": [Function], "defaultFormats": Object {}, "defaultLocale": "en", + "defaultRichTextElements": undefined, + "fallbackOnEmptyString": true, "formatDate": [Function], - "formatHTMLMessage": [Function], + "formatDateTimeRange": [Function], + "formatDateToParts": [Function], + "formatDisplayName": [Function], + "formatList": [Function], + "formatListToParts": [Function], "formatMessage": [Function], "formatNumber": [Function], + "formatNumberToParts": [Function], "formatPlural": [Function], - "formatRelative": [Function], + "formatRelativeTime": [Function], "formatTime": [Function], + "formatTimeToParts": [Function], "formats": Object {}, "formatters": Object { "getDateTimeFormat": [Function], + "getDisplayNames": [Function], + "getListFormat": [Function], "getMessageFormat": [Function], "getNumberFormat": [Function], - "getPluralFormat": [Function], - "getRelativeFormat": [Function], + "getPluralRules": [Function], + "getRelativeTimeFormat": [Function], }, "locale": "en", "messages": null, - "now": [Function], "onError": [Function], - "textComponent": "span", - "timeZone": null, + "onWarn": [Function], + "textComponent": Symbol(react.fragment), + "timeZone": undefined, + "wrapRichTextChunksInFragment": undefined, } } navigationItems={ @@ -1393,7 +1404,7 @@ exports[`Header should render with navigation and extension item ids 1`] = `
    - - +
    - - +
    - -
    - +
    - +
    -
    + `; exports[`Header should render with skip callback 1`] = ` -
    - + - +
    - + `; diff --git a/packages/terra-application/tests/jest/application-navigation/private/tabs/__snapshots__/Tab.test.jsx.snap b/packages/terra-application/tests/jest/application-navigation/private/tabs/__snapshots__/Tab.test.jsx.snap index 186ea7380..34d5535b8 100644 --- a/packages/terra-application/tests/jest/application-navigation/private/tabs/__snapshots__/Tab.test.jsx.snap +++ b/packages/terra-application/tests/jest/application-navigation/private/tabs/__snapshots__/Tab.test.jsx.snap @@ -26,7 +26,7 @@ exports[`Tab should render prop data 1`] = ` - diff --git a/packages/terra-application/tests/jest/application-navigation/private/tabs/__snapshots__/TabRollup.test.jsx.snap b/packages/terra-application/tests/jest/application-navigation/private/tabs/__snapshots__/TabRollup.test.jsx.snap index e3f7ccbbe..5b6c055f3 100644 --- a/packages/terra-application/tests/jest/application-navigation/private/tabs/__snapshots__/TabRollup.test.jsx.snap +++ b/packages/terra-application/tests/jest/application-navigation/private/tabs/__snapshots__/TabRollup.test.jsx.snap @@ -65,7 +65,7 @@ exports[`TabRollup should render prop data 1`] = ` - diff --git a/packages/terra-application/tests/jest/application-navigation/private/tabs/__snapshots__/Tabs.test.jsx.snap b/packages/terra-application/tests/jest/application-navigation/private/tabs/__snapshots__/Tabs.test.jsx.snap index 6723f091f..12189c3d4 100644 --- a/packages/terra-application/tests/jest/application-navigation/private/tabs/__snapshots__/Tabs.test.jsx.snap +++ b/packages/terra-application/tests/jest/application-navigation/private/tabs/__snapshots__/Tabs.test.jsx.snap @@ -1,61 +1,45 @@ // Jest Snapshot v1, https://goo.gl/fbAQLP exports[`Tabs should render default element 1`] = ` - + - + `; exports[`Tabs should render prop data 1`] = ` - - + `; exports[`Tabs should render with hasCount set to true when notifications are set to 0 1`] = ` - - + `; diff --git a/packages/terra-application/tests/jest/application-navigation/private/utility-menu/UtilityMenu.test.jsx b/packages/terra-application/tests/jest/application-navigation/private/utility-menu/UtilityMenu.test.jsx index ee52353bf..c4cba4863 100644 --- a/packages/terra-application/tests/jest/application-navigation/private/utility-menu/UtilityMenu.test.jsx +++ b/packages/terra-application/tests/jest/application-navigation/private/utility-menu/UtilityMenu.test.jsx @@ -5,7 +5,7 @@ import UtilityMenu from '../../../../../src/application-navigation/private/utili describe('UtilityMenu', () => { it('should render default element', () => { const mountComponent = enzymeIntl.mountWithIntl( - , + , ); expect(mountComponent).toMatchSnapshot(); @@ -13,8 +13,7 @@ describe('UtilityMenu', () => { it('should render with function callbacks', () => { const mountComponent = enzymeIntl.mountWithIntl( - jest.fn()} + my test hero
    } userConfig={{ name: 'user-name', @@ -43,7 +42,7 @@ describe('UtilityMenu', () => { const mockCallBack = jest.fn(); const mountComponent = enzymeIntl.mountWithIntl( - , ); diff --git a/packages/terra-application/tests/jest/application-navigation/private/utility-menu/__snapshots__/UtilityMenu.test.jsx.snap b/packages/terra-application/tests/jest/application-navigation/private/utility-menu/__snapshots__/UtilityMenu.test.jsx.snap index c10ecf26f..f603c0232 100644 --- a/packages/terra-application/tests/jest/application-navigation/private/utility-menu/__snapshots__/UtilityMenu.test.jsx.snap +++ b/packages/terra-application/tests/jest/application-navigation/private/utility-menu/__snapshots__/UtilityMenu.test.jsx.snap @@ -1,285 +1,295 @@ // Jest Snapshot v1, https://goo.gl/fbAQLP exports[`UtilityMenu should render default element 1`] = ` - + - - } - header={ - - } - setFocusOnContainer={false} + -
    } + header={ + + } + setFocusOnContainer={false} >
    - - - - -
    -

    - terraApplication.navigation.utilityMenu.headerTitle -

    +

    + terraApplication.navigation.utilityMenu.headerTitle +

    +
    -
    -
    - - - Terra.actionHeader.close.description - - - - + Terra.actionHeader.close.description + + + - Terra.actionHeader.maximize.description - - - - + Terra.actionHeader.maximize.description + + + - Terra.actionHeader.minimize.description - - + + Terra.actionHeader.minimize.description + + +
    -
    - - - -
    -
    -
    - + + + +
    +
    -
    -
      +
      +
        +
    -
    - -
    -
    - - -
    - - + +
    +
    + + +
    + + +
    -
    - - - + + + + `; exports[`UtilityMenu should render with function callbacks 1`] = ` - my test hero
    } - intl={ - Object { - "defaultFormats": Object {}, - "defaultLocale": "en", - "formatDate": [Function], - "formatHTMLMessage": [Function], - "formatMessage": [Function], - "formatNumber": [Function], - "formatPlural": [Function], - "formatRelative": [Function], - "formatTime": [Function], - "formats": Object {}, - "formatters": Object { - "getDateTimeFormat": [Function], - "getMessageFormat": [Function], - "getNumberFormat": [Function], - "getPluralFormat": [Function], - "getRelativeFormat": [Function], - }, - "locale": "en", - "messages": null, - "now": [Function], - "onError": [Function], - "textComponent": "span", - "timeZone": null, - } - } - menuClosingCallback={[Function]} onSelectHelp={[MockFunction]} onSelectLogout={[MockFunction]} onSelectSettings={[MockFunction]} @@ -314,61 +324,55 @@ exports[`UtilityMenu should render with function callbacks 1`] = ` ] } > - my test hero
    } - footerText="terraApplication.navigation.utilityMenu.logout" - isHeightBounded={false} - menuClosingCallback={[Function]} - menuItems={ - Array [ - Object { - "dataAttrs": undefined, - "icon": - my icon - , - "id": undefined, - "key": "my-test-key-2", - "metaData": Object { - "meta": "metaData", - }, - "text": "test-text-2", - }, - Object { - "dataAttrs": Object { - "data-navigation-utility-item-settings": "true", - }, - "icon": , - "id": undefined, - "key": "terra-application-navigation.utility-menu.settings", - "text": "terraApplication.navigation.utilityMenu.settings", - }, - Object { - "dataAttrs": Object { - "data-navigation-utility-item-help": "true", - }, - "icon": , - "id": undefined, - "key": "terra-application-navigation.utility-menu.help", - "text": "terraApplication.navigation.utilityMenu.help", + intl={ + Object { + "$t": [Function], + "defaultFormats": Object {}, + "defaultLocale": "en", + "defaultRichTextElements": undefined, + "fallbackOnEmptyString": true, + "formatDate": [Function], + "formatDateTimeRange": [Function], + "formatDateToParts": [Function], + "formatDisplayName": [Function], + "formatList": [Function], + "formatListToParts": [Function], + "formatMessage": [Function], + "formatNumber": [Function], + "formatNumberToParts": [Function], + "formatPlural": [Function], + "formatRelativeTime": [Function], + "formatTime": [Function], + "formatTimeToParts": [Function], + "formats": Object {}, + "formatters": Object { + "getDateTimeFormat": [Function], + "getDisplayNames": [Function], + "getListFormat": [Function], + "getMessageFormat": [Function], + "getNumberFormat": [Function], + "getPluralRules": [Function], + "getRelativeTimeFormat": [Function], }, - ] + "locale": "en", + "messages": null, + "onError": [Function], + "onWarn": [Function], + "textComponent": Symbol(react.fragment), + "timeZone": undefined, + "wrapRichTextChunksInFragment": undefined, + } } - onSelectFooterItem={[MockFunction]} - onSelectMenuItem={[Function]} - role="listbox" - showSelections={false} - title="terraApplication.navigation.utilityMenu.headerTitle" + onSelectHelp={[MockFunction]} + onSelectLogout={[MockFunction]} + onSelectSettings={[MockFunction]} + onSelectUtilityItem={[MockFunction]} userActionConfig={ Object { "text": "Edit Photo", @@ -383,293 +387,432 @@ exports[`UtilityMenu should render with function callbacks 1`] = ` "name": "user-name", } } + utilityItems={ + Array [ + Object { + "icon": + my icon + , + "id": "test-utility-2-id", + "key": "my-test-key-2", + "metaData": Object { + "meta": "metaData", + }, + "text": "test-text-2", + }, + ] + } > - - } - /> + + my test hero +
    + } + footerText="terraApplication.navigation.utilityMenu.logout" + isHeightBounded={false} + menuItems={ + Array [ + Object { + "dataAttrs": undefined, + "icon": + my icon + , + "id": undefined, + "key": "my-test-key-2", + "metaData": Object { + "meta": "metaData", + }, + "text": "test-text-2", + }, + Object { + "dataAttrs": Object { + "data-navigation-utility-item-settings": "true", + }, + "icon": , + "id": undefined, + "key": "terra-application-navigation.utility-menu.settings", + "text": "terraApplication.navigation.utilityMenu.settings", + }, + Object { + "dataAttrs": Object { + "data-navigation-utility-item-help": "true", + }, + "icon": , + "id": undefined, + "key": "terra-application-navigation.utility-menu.help", + "text": "terraApplication.navigation.utilityMenu.help", + }, + ] } - header={ - + onSelectFooterItem={[MockFunction]} + onSelectMenuItem={[Function]} + role="listbox" + showSelections={false} + title="terraApplication.navigation.utilityMenu.headerTitle" + userActionConfig={ + Object { + "text": "Edit Photo", + "userActionCallback": [Function], + } + } + userConfig={ + Object { + "detail": "user-detail", + "imageSrc": "user-src", + "initials": "user-initials", + "name": "user-name", + } } - setFocusOnContainer={false} > -
    + } + /> + } + header={ + + } + setFocusOnContainer={false} >
    - - - - -
    -

    - terraApplication.navigation.utilityMenu.headerTitle -

    +

    + terraApplication.navigation.utilityMenu.headerTitle +

    +
    -
    -
    - - - Terra.actionHeader.close.description - - - - + Terra.actionHeader.close.description + + + - Terra.actionHeader.maximize.description - - - - + Terra.actionHeader.maximize.description + + + - Terra.actionHeader.minimize.description - - + + Terra.actionHeader.minimize.description + + +
    -
    - - - -
    - -
    - + + + +
    +
    -
    -
    - my test hero +
    +
    + my test hero +
    -
    - -
    - - + -
    - user-name + user-name + US + + } + src="user-src" + variant="default" + > + user-name US - } - src="user-src" - variant="default" - > - user-name - - US - - -
    -
    -
    -
    -
    -
    - user-name + +
    + +
    - user-detail -
    -
    +
    + user-detail +
    + - + + +
    -
    - -
      - - my icon - - } - key="my-test-key-2" - loopFocus={[Function]} - onSelect={[Function]} - parentRole="listbox" - showSelections={false} - text="test-text-2" + +
        -
      • -
        + my icon -
        -
        - test-text-2 -
        - +
      • - 0 + + my icon +
        - -
      • - - - } - key="terra-application-navigation.utility-menu.settings" - loopFocus={[Function]} - onSelect={[Function]} - parentRole="listbox" - showSelections={false} - text="terraApplication.navigation.utilityMenu.settings" - > -
      • + test-text-2 +
    + +
    + 0 +
    +
    + + + -
    + icon={ + } + key="terra-application-navigation.utility-menu.settings" + loopFocus={[Function]} + onSelect={[Function]} + parentRole="listbox" + showSelections={false} + text="terraApplication.navigation.utilityMenu.settings" + > +
  • +
    - - - - - - -
    -
    - terraApplication.navigation.utilityMenu.settings -
    - + + + + + +
  • - 0 + terraApplication.navigation.utilityMenu.settings
    - - -
    - - } - key="terra-application-navigation.utility-menu.help" - loopFocus={[Function]} - onSelect={[Function]} - parentRole="listbox" - showSelections={false} - text="terraApplication.navigation.utilityMenu.help" - > -
  • +
    + 0 +
    + +
  • +
    + -
    + icon={ + } + key="terra-application-navigation.utility-menu.help" + loopFocus={[Function]} + onSelect={[Function]} + parentRole="listbox" + showSelections={false} + text="terraApplication.navigation.utilityMenu.help" + > +
  • +
    - - - - - - -
    -
    - terraApplication.navigation.utilityMenu.help -
    - + + + + + +
  • - 0 + terraApplication.navigation.utilityMenu.help
    - - -
    -
+ +
+ 0 +
+
+ + + + - - - -
- - } + +
+
- + } > -
- - + + +
-
- - + + + - - - - + + + + `; exports[`UtilityMenu should render with skip callback 1`] = ` - - - - } - /> - } - header={ - + + -
+ } + /> + } + header={ + + } + setFocusOnContainer={false} >
- - - - -
-

- terraApplication.navigation.utilityMenu.headerTitle -

+

+ terraApplication.navigation.utilityMenu.headerTitle +

+
-
-
- - - Terra.actionHeader.close.description - - - - + Terra.actionHeader.close.description + + + - Terra.actionHeader.maximize.description - - - - + Terra.actionHeader.maximize.description + + + - Terra.actionHeader.minimize.description - - + + Terra.actionHeader.minimize.description + + +
-
- - - -
- -
- + + + +
+
-
-
    +
    +
      +
-
- -
-
- - } + +
+
- + } > -
- - + + +
-
- - + + + - -
-
-
+ + + + `; diff --git a/packages/terra-application/tests/jest/application-navigation/private/utility-menu/__snapshots__/UtilityMenuHeaderButton.test.jsx.snap b/packages/terra-application/tests/jest/application-navigation/private/utility-menu/__snapshots__/UtilityMenuHeaderButton.test.jsx.snap index 7744e1bd4..b7b785359 100644 --- a/packages/terra-application/tests/jest/application-navigation/private/utility-menu/__snapshots__/UtilityMenuHeaderButton.test.jsx.snap +++ b/packages/terra-application/tests/jest/application-navigation/private/utility-menu/__snapshots__/UtilityMenuHeaderButton.test.jsx.snap @@ -1,61 +1,45 @@ // Jest Snapshot v1, https://goo.gl/fbAQLP exports[`UtilityMenuHeaderButton should render default element 1`] = ` - + @@ -106,66 +90,51 @@ exports[`UtilityMenuHeaderButton should render default element 1`] = ` - + `; exports[`UtilityMenuHeaderButton should render with click callback 1`] = ` - - + `; exports[`UtilityMenuHeaderButton should render with function callbacks 1`] = ` - - - +
-
+ `; diff --git a/packages/terra-application/tests/jest/disclosure-manager/__snapshots__/DisclosureContainer.test.jsx.snap b/packages/terra-application/tests/jest/disclosure-manager/__snapshots__/DisclosureContainer.test.jsx.snap index c254dd6e9..472bd4ebf 100644 --- a/packages/terra-application/tests/jest/disclosure-manager/__snapshots__/DisclosureContainer.test.jsx.snap +++ b/packages/terra-application/tests/jest/disclosure-manager/__snapshots__/DisclosureContainer.test.jsx.snap @@ -8,12 +8,12 @@ exports[`DisclosureContainer should render the provided children 1`] = ` } } > - + } + header={} setFocusOnContainer={false} > @@ -24,6 +24,6 @@ exports[`DisclosureContainer should render the provided children 1`] = ` - + `; diff --git a/packages/terra-application/tests/jest/workspace/Workspace.test.jsx b/packages/terra-application/tests/jest/workspace/Workspace.test.jsx index cc32cee10..b7da0f7ab 100644 --- a/packages/terra-application/tests/jest/workspace/Workspace.test.jsx +++ b/packages/terra-application/tests/jest/workspace/Workspace.test.jsx @@ -10,6 +10,18 @@ import MockApplication from '../MockApplication'; const testMetaData1 = { data: 1 }; const testMetaData2 = { data: 1 }; +jest.mock('react-intl', () => { + const reactIntl = jest.requireActual('react-intl'); + const intl = reactIntl.createIntl({ + locale: 'en', + }); + + return { + ...reactIntl, + useIntl: () => intl, + }; +}); + const TestWorkspace = (props) => ( ataiT?^K{Wc+El%Kpl=aK6TT?(ylyCJ?he|_KqiU=^Une#-W;1q|IJ#BWq$MT+J3r&p8u^K!ukJe z!hdtuWc<*teN0c0mD|7kHdtLE&@_Vn=HtfXZdnt*{Sf=_y4LeAnOmnFaqzOVnf{Om z7wOQVnSOIeUq<{rsMHZnvHgeCeOc;X>Nw~!=awTeOK@0Ge0rX!mg0G3U=mN6V9vc> z_3itYR6kt{SDwTu1gwnCYJEnN#JF@E>>LvJ8YDkqo7rK^Xm#$SeRtkViX3EV?Vif9 zxacsye~2Ln5d4Iv0Ua?x6!3e_2OB&WK$J}TC z8C@@z+nYUgn!Rlx7vg z(drLCSQ`vk_z5FA>p3?r?-2eLpb&>Ph4k9HQ|((@T}F1=S*gaxh)XNPHfOPu?gmDl z3LW-(lR1trtF1yccR?$zCFKEzQVws(2EOoN) zuK=s6YP}osl|rKWaeM^FIMjn+gI7iZY$#XZI@`6Y@(RMF^@AZ%QFy|7xp6U5M{R4U zR%B zBBi5WTO#MPuN6vSk*Jz&vOVt9Bf}LF0x>3zWbk`q`K~)%5T@Ts6bOT5`loki@&(NVkKWjY02lBPPAH=)QFM_qQ`*5#qJVcAjdRrEuu9 z3T^+n>@GH6D@?Qr*gbe2hm2>apUnhBnJ7$&C3Wy{^Q84l^t#e3xqzh+M4h z)8}yb@oY`SV?VO34#uDI)abDPx|k^6&NnMCAg!w|N)F&hTb?&;S{Aq__qJ`x zYf(! z|3+qpwYEEda(}ymA_KwZZH5iy_Y@r4CMIqn9wZP0boPGd3du&x_=azQl-jc+=DLxL z>hM!xyznTUIJtauOA&|>s$1NSpyrQx60*XZT*5h4N(eWazZsx zk=qRIBkYzCVk~p&ob1MkJ7fDg)r!i~1 zBH=Af84JtT*v~#e>G-)$b(q8*uC_FoR+5&Kk)`$AC|>O6*iLGC0cO(B77VhK7)BkR zv751lNqSagoS>Jl4pZE4EjKqcEw#b&GRbq}c(Em`ju55$E-&JZ<95UPVQIpjtsNLQ zwr71>XrGr3SL;jSgKu>v8KRF0e(#}Lz3~c9kL9EC8M^pP+BDeCh^fzd^4p2D)F<}J zNSRfCKxUQneIjE8<;5UjPg0-FjOxM1;G5xyd=j96C3NjWvH zx2hCXmZPaIBaMS%#@-a^_ZK-x9auW)1tWsyYH(F(%(Ctcfj9|1G=?Z|Y5AT-e9~2P zN46}O^OX-ce21TOdl)R;PnaO)EcATUe_*BrY_l*3&F1Gb2NNZNdzfuF|s9ko8*`yH&s<|6F60ZX^sqP78trN&jqgW^26YX^EFBSXzTgx7kj%s#wr#hfbsTv>YXO{*8QAYQKKQ z3wVMr8Q;B)-jd^Da@9~0GF^hUX=wNp3qPdiWeWD>$@QlEGs%%C+IH{3opX{Vx}1i% z2v~Bcy$o(ZaX(IM_jxat3|^$ja7iQ;UBYyzT)Dre{QIF|169q}b%yjrL%!Um9Hx#4 zL&bAlvu?=!I6vE+GMu%UaI9+Fc+OS%^l1qp?6zOu^1cIh*9U7S-*;WMcDa}l-M&Ii38kml#7YuX#@{fqdSnH1erm->)(2<{S=Z3 zggnq4I(sEnXbZhemmW*WdZ&WZ{#a5&b7Rn*leYBJ=2+H5>5emC3HOKc+MKO>+Mkk% z{}^38{?nP=*wC1Tvw&Rw1N}9gP|lRNQnBOP0)zYW9+cI#!bH9XcIb-I;-Y*%%^u>2 z>VQ~L3TI@`U4(x{{EXs4>m9L0MqQ;>kqq%-!umEtlZ3P>9PuI5)(1vwBn=L>V2*?+ zt>%QbMObdZUkH1S`;@x1W;!13XM;+RnY&lh3Ui%pDeD*&t`5k`QoG_pH7~qiU)UWW zee@SomYWij5k(a5-7GU0#EA~DuvNt%^67$*>kAYak#mZBm~gq_Pjzn zF=8Sx2JF*XPTC3Fv)Eu*cPAwZRF9usli^}NfLq?W(w+V?FHqmtCvB)#rXx_3MTwYs%R0G{861xZ?EzW-dZAOa!u|zCT{f67iE!h6Ph9!pTS6mkz zLDyiu(qs&q4Ya1|`Dag4%>{4T_U;A4PyuKZu!QQYwZzp;3Bq;>f&M%2^NcRfmFed_ z=~K5&KB_VcmTHqEGO_p|X9fE`=nu2p-ao11jBEVhkFZfU#h!+F3+-P~XUIn#DqQG` zbcdJP#_t-iG;i5~THl=t;vnHs`IW?8-r>gaoQRSDef|(oayF zHv+4R*3xq0A_rA`KjjmQmOvVQB4$s+h+EBJWpG7JgE|LA@Lmq`dUkacnq|3F+o|B~ z^#Z{;+cc;72LwaI>|+Uc+Pa4X*4Th(6e5*Uf3%Fwh4OMEd*@3l<<}ZMYEqXl0gpcm z`iF7wy7SGec8J&i;v9L+TER?49-vJA>lT&;XkmLzG{-6sV@3^ zbj0mw{<0eHSfj5Lm@hZf)Hn!^->F@-jq-?{2Cam{@3hanhfJ(MOUbIkCtUXOEFID~ z>R!FaTT*frdWMW_$B~3$R%L}k){_1-z_KmXc;4gwc~vy)pRSICQs8y(3r6N`Bq=;{^}FMDvl>KnNjyKr=@Q#zQ?4RC z<)53=m@fD3o4q0xo=E{w4*PrcfiS&goDomzyH`}^HpA=NWEA64Qn_)la?I`?p1hR@ zdZ&JG#?3^w5UF0hEfDdE-`VxCyQ%T$uy_`*CV!-Y->7SDMrYcoH|z(`ih*H50j6tf za1#;{x4DR&=o+%(U(H0i@BcE*sT%MByL(@*RZ^LWzEISQ<$C|bKTNw_R7E1V5_)xL z0wG7Xx9Lk5?(k8=8KDfhsE$mJY&|$D*AWMRl7gfOKSEIV+Ee5eX`va7Wh)44HfZpt zzf1;M7~0|Ud3d(_$*s20W_Ef54~(K=9T73#i}l?AS!%OQW1^o=%c0xQY^2T`<{B0gz-Qo;HP#?1EBp`PEfoL)Z<-X#>znHrj1 zg@sg}%do|;F=lC@)*&+D)@XMM5IrY7c( zJ$J7h55xU=Y)2eN*UWD>7YMK{-nVQ(M}VptnNl}9Q~JIP^cUX>Uhzqh%~Xcqh(~-< zaK+BcbIW~CFHGI>4TrU(8U*J^d5mnyUupwoic=<0Q0a?i+9ZVK8S#<5)%qRp+zBk` zn>=-P&Y1??bU59!IP~y%8s5g7h-F0(5lc8k(aM1F7p4IwAch69m!96yY&?WSLYxh;lHQHIO93byc z32zz04mQ-4Amz?io6%g9Qtj-UGIl-G$)Wah)el3q5x!a-Cg=aFsJC~tf z9R{g_*Yjr+Q@C|>Dtt#cV-!C(}2LAF4DbY5MYMdtW7fju7}xp6SH zE5QRIDg%l9W$Yet+~Hb{5yAr0GJ5nHT>hzm(GT;VTeHi=An@o)kJ1DXpnH}dJYrf| zhY#JnPWs3WS#HY;1=YOH+exg}a_mq_s&*qi4QrT%J6BgNwkX!poGL=7U3C%{l7~Q= z@mG*oXvz#zW{*mJ)I%#NJmGLsc&e9-xQsX~k8}d%P4$##;au1@!@{U@*)%}c8)w;1 z;;Z}RP~&8_LG=B6ys8{zs!ENaX79~cMXEt;kVCiYHK3!jnW_iURKm)iv`GMDhv*-j z4uizc8<(7zHwhi>e#wkTN4U~IJM_r7#{2Kbx#u4p+(rLDy0{2copXKQ9JXc7;>xB- zS#5zo{0`Lhi(KEgppSu+#raWfg@zCukGKd?h{{XB6S0eyo%2$T>hB=RnddQO@K6c= zSlAfRMglPT>#GUC{XkAqXY1LYn0(WU9k)LC0%IHwdi3}9EjU6_u#ozML>8`vTQqNR z5i~r5jI^SV+-;-tu3{DesCj0)w=NUj<+^hD4joBrFPxKpKS5%v3wvVk<|wQZ_GAfD zbG+rRlA>UJ?%vvsaVZN|J7kS3n1Bf1^VRDLsh&W0L1_NCb%I15Pm1|H+YUsx zP^oUeJt3hW1&CItUyP{9>eT|dsLzOod3_*0R?#Ljuv{VtN%ViwolKxRLc&4Y0r&?E zWofZ6#)p4W)v7WAjtwXcQDpUXmYy3RNeNMROdcB~U#0(a_Dxs|n=li(P!**86}UT1 z+z~o9TKJgDXul7V4BYw-?^b&-fy^?^J;LI6*QvVA#p4dq#$qP4ps$;@LZl0gp>UzB z)1saC%oq#2v;a`)>a2clI%T9$H;%mywYsT1%Gnp+3pTJQKA@;=O&r^RaRqWS+yM}V zqw97&fyLsqeCKsIEJ`Q95w4?OS(Yz8R;?jZwJX!PI1vJ4aoE}~=I(KAb$>h}Qx(mg zQNLFp^_{DM4@j9{X%*Ucu!IuU`0@U1BSC-AQwd;%#>Q7#7I!ul4mSD+c11zzGFXP4 zvaC;2(-+_<4~sa~*!g@cqI*5|r!TOBcH2NQ0zyc{UxkJtXw8NwIDo>gSV(8#Y|9MC zoM*}N^aV)br3Ru@{vu&`gXPf7KN;7Z>6Q^%;~b7 zf^!<5<>pie@E(yp`cHAv#I2b+7c(50jfIls;J~i5a=q!SqrNU9IC0E!xuW5=I)sDh zFa5i#kh%80tgjZ-yw=TqKZ$7Ya?Y2a`!&6*jDgAf2&V8Fi%y0?;<1=L?4p%9=fgl( z&3b3793*K`YSG~tRks>F9S;jPThjXcgpo$a4oH&>lvT2n-y(&0VS~Ov&(e+CH@#}1 z0~t~Iz^w?*6N=x91DEkkMqCOUSuSx z-?rl2U%Jz!ydGz)b9nDCFxaX$%s~XQE5JbW*}VJGoo7UnlkSrkfc5tmZ8cFu%J^+7 zMEe+DF|bpdx?`UZ3JfrU&t>ptx#O4^;5ELuJ|}hVNVTnVTaRY7KHuis2C4nT(j6)M z@E{Hzo!0l$3z~RIL@dkm1&dT!CGkNlT=PI%dJd;xG@R8rNS(znDynL}G5^Q{so+%n zG0JEf$}>X`8T@#m$ccX8l>JV8IX|yJ1Xf@_sEi@0_%k#=nxHExz>@&>$Bj0_;h||W zGTMG+5(LG9*m?eML@QVj|1c#BZvB^O2BZtp_`_ZxB|LFvB1oW8 zFd*a<;pO?g{R2(J4f$7A{E>~RDyD1)0x$~}c@QsIQcly32E<%JyRW?lO_;3iDxRKx ze3?^EqdD_i5s{t2V?}I}e*S~IIsSu6V+@ddG&n45EFtNHKp8Dhx$>|v-?R4AZ!@W% zU5IYMHoFbiXZ9jEn!(uPv|9^b>rA%P> z&&g}&o5*5-CByjSk`rpEgbkgt6}JUu{Lvj_MSN5B3U@SH#Ca<$Tw@~%3kKRY;`3nq zkXUWsfFg?ZP_w<<*ygHLnX1&StB}@VLV~EfG(LNCqtC(Xf#(OHTvL?gRIsSlHBb&~ zy%NjP4;!43*D~N>z?L8(C7G687XT8VCxwdD9R4Lge&XOt%H_@g2mL}r#Si}1%m)j7 zX4%5|f!Fj!dRFpCcdy=FRqcZ;(xn+Ydp};tgxOmol_3s*aZ7&H;c9qKNEOFgH3b^v zB%p-GG{J{Kq6l7hvOj{NwO^(+&&wb{h_3-P;F2c0qFqP_jNmD`SD5f$Gy(&_k|0}vi1+plbehP4wCp5=adHX z)4AO3j=x%X@W(V4&$qG8z;L*T$ey!tTsGt;qhG_J@4qqxHLaNg^IgO!Fj7P|t#{Uc0GB@OtJ?q5w#|vZ?Cj zxM_%yTV8+JP!i4To0UHIR|P`yvMnwy775n%+Y`&J$hG6^ox>v<#901XVp%N~q6oo^ z^enGt*O~}Vc|Vw&tsgp|hC{p+x+|<|3pZ3iw|+k6YkM$`l&n@B(;_j#kbsUh3a6nk$JD4#QP-ctA;f%d9Y0T3P2p;YBG5J7}z0M6B`>ob}kZu zmC$M@-P-$L>4t{1SpLK~|FJd0fhI1H7JGhoP|o{U!y8g(A$ozy&UJYiXj0c#Y`!(a z>QZam`88c=paN3kWG{_gt4QltY({M=_UOD9IC=Q)k5^F}nzp8@o z9?LE?`2WYdbH+NmP*T=`5bXB&fL5I^k9bPYP;PX+-DDCZxdts4=Q_zTMsZV;eGd|0OS8$dN&p|)jP=CL zKNOpTEQ(elOJaMsoQ1O+ZFN$Z&yUWwzLS!A-k=Y`pb~m^kRAnlw%<0G`C@D%biYgjc%ETqCyep@IA76iUG3X`LPqJa_L{6Fbs zb(S=i`J@7Xe|xq6UUN~de{~+gUFy)ogL^4+Y;Wt(p=xxZE}bj++L663fTCt+!;UIz zn3lu%B>?|*SiT8x(VI3@hpsM&t9#Lhxq3Sxk|^yPXSQ8sJau2x=6_@SLKumHVW*pw z5}<}mN#px10N{vBrK#Q=3JQU1UoF%taG`b`(lVPoXPisxS9UH=?hBfA*9EB|sY}hx zNuH}qAm#@N_gAOJg0v}E<2DSSzI0JM9ei25Nw|t$DWLDJwM1dUYm5VoleYL>&X#R_pT|YHC5k<$UXYqyFl^xD6)(tLsrdL;Gx?m(N^@3kfw_g`^m6Z=Fil2uzM=1u09^t+G&THK@R6~@U%#m*+sUzHzKL$qtR-8w;ugpM*nHn1T zyg8f-cM}yp8+hn^zALI6pB=_%g?6K`xz1gy3pKFdBaf&q=Ee=B|22%H?V!vliAT5%V(slg!ifZLDjJZ6#+;brd}T7nJ)*&E_v8j|AIP-6$76|u zdkC)uREs-Z=4gN&-NwKlG!|Ac+OaCH%SD0OHS-%{k|Q5H7OfcB5Or@lPS!zxNvT6u zTpT9*tdqVj{3EXT7`OqA^6}F>Y6xq@o#2kuV?zWVD3V_!7lSkTT-|w53khc5x7GqwxS43!~a7BVp zZ{FH~qMCkY@B*0F#Jz0f%wHfJTxzHf&PG8Mm-n3-!dH`2t;+}p+aAZu69wuzkPsRA zz>{|>(aJu+Y^WGPsd@>9Db?4kW(}1qTsU)49U@OwLTu{tEe@6^+1X3@3+dRao9q4W z;Hf%j11GKDNXxL#T+pV~yCEO+JAS1W1b*t_;`&S7&70z&yB=y&y-lyaZIf%Qm{;rP zFC2}W=ul~gHXIFCaZGHTYR{4i`|%?>r$GT8=cixao-Sylu(YJjDM=$t(xSG|Dob+8 z7<-iH(;%YDX92)IBeKW*DJE2;YAVaC@VC3!#a-YIiOl8Wxe_H2J+lw-Ca-;sBo(Bm zv*h?ATcp%Ni}$9yye@cdu}^z(n*|s#jD!x6Uwv)8tz3(XU&IuA;h=W(h3}SUBYgk# zD=NT0f94vi)-xFn+g^InI@_qu@AhU$gXf#4{H>`WD@aJAbuBjAD}@me4>I%P%L=p< z?J6zyQi~I~TvZ-`TV7uzF~8DCYK#!)?*oGtTAp1>hbz53xax*X%g5JF+iR|~>YCmh zVOLSB#eELYUlDM+Y%SUf2*=+v# zJkQ79=b$*Ya%NlL_Nf>;#^BSFYRv)oqIl*<{APgRhRx^llm9L&&dqMl$ScaXA@unc zy#H5vqh!p4)0Z>#g4?u3k@t;34;ImXeM=#E3+5%IpP+7qzkGSk5uj~)|F%H2Ggg

@&B{!p5 z!8SOJa4IlyhX40ywACfE38!fj2c0SvMm1shvWY{HEvcUM4~+jU{PKUhfk{nxWX8lH z-8Ng#hV0+AEdpT#lJ-)=UxRH*^%&(H0W)}#4hE)FT!0+NV5AfZJH~&Uh3{8N@-4Kd zGzffM&Kd~=p84N$9C3d)UafwRN3eb(`At3*Q^-%ZO{p9PtkaK016G97t@@E({uhlz zgAc%5xgsB#Y_SZO|_yx-J-#J z$Od;B6TJI(u8bs93jy;XWwjYoD}#fP+6UoM@CE3S)2NzFn%=e7{fjkMRsEB4kg8dY z)ZcMDK@Y>1;hoLYFXB7X82;u|`${^d)~D3V@YSWrXJCCyp&Wr10*}k^f=Sc6Ctw2r zEw0LcF=l~IU_}ZKHXb&h*vM4^CJUsea0(qd-}wB^0^dM+s{6j9lk{8n&u>5{8v*^_ z@9*nXJ?1mD;BUZ?iW`h0ZSb9?Dbtt$;oldblT3Rlf9b~ejE~sek1)$_v!_-Z2|J;B=8k&$FMwAc`5rH&?+XQ(6zkjBNJO><1tifE0 z|934o@c4j7zJgIMADM5fss9qmOI4>p1zPc}(-o)$Mxs{#)oyFDN4naxE+_xF)4GQ0 zUihz95ycJ=*7>`q(yvY8>0?72f*b+UKPH6$_Hh6%orB|_f!mjfPMx?sr^{Z?dC$fp z`ePXh7iig+`fsmJIDdNFuHk0O42S_~CI5E;%EP)7na!b;q5DMpS!14?eg2mLenEP( z6~@oar%S?elHCLDoK6m^FTc((eeVn*{3tK~RuGl%63xkp8?Z#T=QrxS(^mgRejmLk zflG7anX=SCa?oLe?WWDdMvM)^RuXf}FS_Q)HWCt&WJ)48?{2@BkCpR)~xE-Jv{WHn`o``auLz?Tmt5A2r@wti*!Gp-E^17KUsUF)yEauVFDo)3tH}H z9wH+r$JKDZCt6gg@XPKLgXA^JU-dMk{EVK2EAJ7JHYe>`=0B2_;Dnp8ZCziCn3cmBmY z!`azcj#$PFF>SWE83j2%i~ihCvC;%9vfFzKd4^c%fBTh-JYr@c38Tj zgt$4MZGL_B?Me0Gwdwu+g}BpkPfqv1Kvw7>HY(dTcr>T6Gi zE{2DP{VYt*^(bUxyBkq?{6>t{Z*7N2OhqV^0)1v@xfWH+yur?=;r|S4nK4Wfw2^;R zB*UKK))YRZR3zkZIA0Erh)DXLCGxa_#r?*Y`(-?j^|OR33lb8(ZxR@kaw?xilqm-i zdn)#OynTF19kduN8?M;k;i2jd0~0vGutfKJZntM?zHvOpuNX%@@m#F-ZI@BX8eET? zrDtRqnVGFdMA6JN=+o5AxjP|(g|j@G-A_M!_^rcua=3ailbj&_b80WEvJzQ?#@zMK zif?~xw6u^bfw{T4I>(XgdlD>7&C7R!7fUCUnr^!2dAu$*y%Obel8iQb6!>fwn~@O) zX^}eX-BS0CQz`!bA=-;qTchl}$i+jl)=<7h*DVbK6w0hc>)I`E zMJg*DkJ2Do*DpX=jawbF^$l&0U{KRP?u{j=S=PoGYB~BJ)YfiqYB{}7R8(}WaeZN! zVn?AX9@=Sun9=j<0X8gNpEWR)LvHFldS*#)W(`9JweTSyCW=rqn@GC2J}Vu<+^7w(KWu^c8J3E^dvQ1&c`e0@d>9vpx3ZiyL$yzoXuEL8*9# zZ|-hmwHNnrR`w7Ei+Pozn$uVA9$gFV?d>IB@1q*3wxz2!%}5zb;ij}~Sy6l=q!X%_ zFRpO892tlUFJq^$8b#%7Y+f}wXC0r~4x!@{4$!hc5LcBjBoY#Ci|Ok#nr=dp@4L!b z*x0P^Ic;lKM?X4lk2IHG-em>hbH_LHoxWVq5AN1GS2g@|$~+{m^r_{Kc3aJHS&D+P znz)lb`Mqb#jzYQ9DU{OK!opy*9sU-w_`+;xK-VKkj5LB$CN(Q7>Nr3WWmAioma@_i z0U24k;o|;gTizubs7braQFG|wtZ7ktL;7E8-EY9Gtl^H!U;jra+3C>f)}8;;$R{%L z^W|^8#4ToQC-rj{`mHsk1z#F}6d?qhACINXiAjk|Hyt`)g6-rpaOL1s@(> zLaalJ6HrxmkF5n2p?-B|Xvbf@_O4nzJrbvf3kleoj>(74WT&aQC4N4|O@mo6n&7?H zx|bq`LI}C1>saA{)!~yO5HZSqoigP6s~n?wY3TY4f4W4QRFb+ggh*6W@wHmjX6moP zLfwhoN+~@4WFQ--0%w|PY zonF*kENb<7KE*YP?_`hT(B{EsH_xuAz+5<=SC{)R83FqgxY~$xyXS*Ff*oi|Jvi!oj z3e0uX5tL>23(oJ}{Te=)uT1#fDg>Nxn>Y<0h3zy$vimuwIvqA$OyH1Gq0Vnlq`&-p z+s2s_JYsnnKi~?WBZMV%t_|#ur0^R-)6L%bKu zRvZ9b9JRI!7A%$ceic@4G)`Z;~bsJFWYm~^rAQC zD;GD6s_*;xP9Q&!h(td4y~x7kDxdK@YztLlc*v*0VS~J^Ke;GjrSxsQ3D}`~` zgrtH3vtX1Ws{ry686RKrd;`z-*#rA3vjGyScT54likrgE@Yz2pX$s1@x)Q*^AuXRO z$fnWwE=cH!aEN7uZEhNT-`&GU2PU{3RZUTmH7>5LgH_kuj9#m_b#QRHfX2_7SzjPNO0R zzo~B<1ja$6`4j@+LNBN7CWG7VXQKNXUB^bvs*O$PJR-f#8~5gvA~7W5kO70WE$q9< zk9616TmxU4NSa}(g@AxKa(7CJjYf>!)fUPpW@?I`rbL6f z=s_=dBMDO2Ne;|<%K|@8@OvwjhqeIzQ!RtwYGq(@4g9Xo9A<%m3y+@k4NhQZ)*ls_ zEYSEUtc$@_+|`v}+1!>tVY*GnM~9Upk0-c^M*8T`F16Ll^x#REd~L_1o0q*%`BFkU!XqLs_q2%LbRV3*di`43(UC*5I7WB_>NreJNvTj#?T2Crr%`x$se71s zD!$nt*LJ+o$B2W}AIIzqUF))*GjDD&D7Rj6yEyLL3skAMpam=p3VIqVMFE8MFQ>SE zcE^9d4Aa}&DsX##9ZJ~SpF@BAgGF#sWOnueJ< zf+}FT#25pg&3v^Z#?bb}p=sdvx4XQ;U;3xHVf!@n?4eavN?csroIjam_=B$ymzHa> zHNR>RKWvM09#kmITyN`+PfmVPQtH&Kt*uS8p3Q4uabffLsIededww+3)O&NLd-nsG zAi&eJpx}Kt7Z+F0!I*C&6Eky9PtQu@v}$$4Z3EBs>5j0iEwhBaeip>euC%-<`Fqog z2I9TR!Zlsu#_yj<#Y?o?#KPGuX4^~BgmKwispuP-5;D`e2!N?;Xg^#)CPT)x!My41 z8^|cl3)}dmRO&kMPN~>E(3Br)oqRo(GNas^#@EdPGG|Et83 zq#oaXtRyE)#xP|dn0>Lk$=+;f zP}coefv)cIt-&BqN|j?`Fg}}AA8qxk&@TV3wRyWK*_!q6z}n*s<)5E5GzN~`FSsX* zmpsV`3sgXCB^@k{M9dfzkpB+h28+pJ9$L}0M&@?A`|G8rIFU!<<|ft;Vp}8)4S4$_ zi{)U^k2TA;Cvj|c2*nN8cur1E>JNE)Dy2H)9!~d8=gRWx?cM04H5*mjxxm$G*=l(t z{VKku@^C$-eq>@-aZ|u+8fE!Usx2MZngS2UOvx@QqFh|F)ZKlQIkLpFYv%i=i+hMQ zn`_GDMk6{^ik}%)yseSIuA%bXzC2QNcII-s!TO2$@#9)Qh~aJsQwFVEyt&KeSMCHKG+fguQbSb0d==s z&2A9@UZ1oE(nDwGr)uvNQq~7HXjD!Hzl7j2c@MdrGtb}cEtR;piGfZ1T|pf&Q{@Jy z8i$*B7RLOOOrmjVu#W4n@j~-HxlpYddRFX~llU%r2KHRSQF@$hm5b!Ms&NY~>> zGv#i7YkCS8BGo2W&Le}3-lzig+E)_0GR7}D$k`_j=6m{anK@2^#yB^(N#1Lgd6NkL zU@$!7nY2_Hf_4!PZ2)9;wI!X?;Nd~!e)_5EC^xmSF$rKThO5N#+WpZ$PUF_+(Z%XL zMoZ$@(JXrJ^lB1D5Tj3E&9VrjT%IC^z%6*ZxgK6#;7SZoD#Kc|TVzlfT z6)0u10dT$Xcz9E2ZqCBW%Dj{5-=D~sRB1Z(NmEnCUJ2{tlDdqYG%}ji$_wT=yZfui zbDE9&CI0TsLNy7ly9$N8{CtD4%>goffc7`$ZDa3tO)ILZZ01XK0hW5EFv#mmy_MW1 zF2nC72m^P#x%jq`R1#C1 z?I2e~jFwXrkfCwv2+pknW~ZwtWz}+fLJUf&<+6`-tK$)}1`9usdCt2iw|95bD>A+P zF)023=U6rc?IQe$=3Sst8vsL1zt?50+jZQ%=8*|l*O^U0SHJ#Nsrd}6FS__mURhZH z^U&?f7ln>mW6G5NIn$}*)07mFun$(7xH;wKHvmm6bWSs7^bGdu>?HI7MrCI- zdiBxQ$L2*)j*X7C-ZgvtoUCF4SWo&NMjIMZa=&|bc{!n6YI63D&1_yoO${GggCPQu zKDGlyMwesELuED-CgGDsYD1USUA8kF*i82OD)-0pCsOf_Z|R$l-$5M-fH{OAdqwsN zo^0pCs~;qSv0`Y?p9>10J^$+@kM^A4gVng-2zoe~#He6Ex?d($z?%TSbU&)cLvFd( z;GoRo%)pM9Iy-;OdoK9oaXQ%x!QbD!KY(fBnURQL;6x@tjs5oV6fRFE@^~W4Quq67 zT(TDJuklD5lE22OH-!Egm+$rY|5^YEOx$4z(D(i@ica1l=uZN^6N+&Xo6#sRdBqQB+l4m@_(KkXSHp0|4-n_)&`1&M6Ea(j-WrA>2Ow313O}aK;6cAHJIZPJni;I$f z!X%McApZgGKP8c0EGEtn3nt^I4{aj>GvFx`f0yX~I6j}P93LNlBe6j8_kBO3v6${J zt&wnsQ&5H6-HCD%S;7JWBp20dzZVrf4~J0cJZ?mzy1hMC1cglI8~zm3Sx^fA+`_d3vSE;z;OPXINO6U_R#hmhB|2VTs;M!uY|wgu_*PSJ7%F2IZgX zN88`8R`Rp$;AZLGa&&a`^1jePuGxkCCf=$Q{&tO$ud~_xZs{lF&)-iT&qXK2VRXe2 zMEhw1{7fQ~@hj6s)wUnf2|FnCO}7Y$*tFWkrbSJ_T9{}$Z?K-{=jE-)xvifn;PMzT zpzN3k5h+(R2(UX628r|RJZddR$wWJu22+#X;GY* z*q;~~kpQ4%vQSIb0guNB?Wkil%hIM77{0g*E)a!^$zKFKirg6!Om819tIl)Y2|%ck ziAj2TSwI^tl5nm80Zqoy_)EnA+Q<2j!)_H%h~!Cc2+c#{AXYWv-ABaE-o_C_EA8-W z{vA5+Rj(;LTz8Gn@mQ?hU?+MI0fR*TWf}o2jjujdNnCuQ<_04e%12Ydq(>yOIoM+av3n=PUL6HA%$xmpQwXFqzA)3O+>3VOQLJ}SQ zV|?x}6VoUHs0NZvMjI_A8-w+6ZQY+TJS?nbB|IvwXD276x373Wdn7z-eBwZF@w*T3 zy^+AyQ{qA&I|Li}mQ;H~Ler^2!N{+$T=#oY?YyI=W_$ODzCh} z5$xWhZjXN?;J1H2Gc$9F1rCqb9~WIC+O&Ur-e-2{GyouTUTLu=Cd0j<2P{`^USURE zcC;zK{p*uWdcA>JJF}%yFJydn>k@z!$z`~pB7-ShK9u*ThUZg2=ra8&Z6=~(6n<(6 zyhrNk?$6{UGSsTKpBS5%=+J~#an#2r%qXj=B^DG&g@}Gd+U(bUuDd|@0sf22rDiR)t=UmeR;dxYav>330@|M`b zz^3iK0QnkeOIG_+DlED$QVyo3!4apwy-*cYRXgtOr;aG{@@nI9Qk4Gnjo@Wdo& zMBW_WIiAMYrzZ*}J+puGh4QG%U%m)6kIFm$a?i?&jE){&c=wKGdw-vdz8V!|3_zYy zUP0~S$B&580|O9yyHB4#w_A6GXczD9;t}1gMSw^RV6#C@L9{>az-nN~-p7?@h%@S3 zTAd@bc~&rF*4FxfK#z&Tejn%MGn9@=b2acEZSAchjek~_HmCiBS(;Odo>%>s6L&6o z;|W$6n+qmnjX#{k3O%|0?$aO37Yt7sl#!e3w<7F&e6`0vz^bevA+Npktf>ARBhmIe z4v;SQMZUG7XX}+{iBq3a_?ItVa9OOLz`&hSQd0U}n5=C|KL!B`l+rrIz~umw$a$5C zK~48A)8oOW=;4&o$z=e~#-@y#mX-ub7^Sn}3bCiVdwGqxG5j0MwZa$m)(YyaV@s_Y zCUImU@A0_~fWE_>OZYfz*S9uC<~Fvr!saMrvNtK}#v(kNe@srY(Z$>GIXPYJ8=L8! zsaZn%wUSAV+d8FrF1vLfcd$Q^Evkqr9R#9Fi!S_?c6MX~aqOYM#RSm1t(@E*Ho>Ws z+tVIRjCr_6>vjdfj!y5jh!d^t($H@`1|s$c`CD;Y$%Y_4CSYDSYC6vHSdHd(Z*R$6 zYD`GETeYA|WR38+YDI>KqDMt3-d-oW%#_*T1Cb+O)q!{e;vqlNsoqity!Cqv&H;~y z-TgN?ssE$BFOP?M-~ZQX(K!{Tjg+X6BcTY{>y&JvC_=VuA!N%oOe={jgREm(NGiMR zW|G3#CS%{rGK@7dc4quupK;FjckknV@9*CGeca#oulqQU#xcg{{rn$@AnO6RmSfXOCkKZQXkR?xC%$FDZw%o{nIJa83g=vns!xfg9rE z<0rCSy?Ouw+W7d>YsR5#0t0Jr($imO7sb`rA1~4O@!>(Phv5)pLCrZE8{4MB=XV#5 zh$;j%S%q7n6J?#ATP`?jYA#>yL$jfEjrWmb)U&O+Wdb?)&w7oSTsmW5aMa1kRnQ*2 zzTB@G7-;^w2^F!-wKobFgw-J5{{45FvG)%>&oA1eAs>Md#q^+KH4@(*aG$jJYJs_P zt6TF(b-PG@Q=9Ks9f0do=( zR`h2X`S}Ge&$W}gYAIqSRCBYymM9jRSGr=NsH1z?pbs}Y>oGrJ|2*BEll`3--w0zY zD(ak;qv)8jSVqPyk$84YLdB9Z>Y(nMaw?9?BF zX{RO(ronF$-Lc6xzCC~CZP(zyQ8g8~1!C{%9_Q6%Ly>XA+IxzO5j&ry*7ik{ftk}P zOG~{IT~~GWjEq!%+4c);<%8^QgY5)OBZA)ilj^}MSKE>N%S>Ch<0uDg@7LfZBy`EA zaK8Ivi(I{`ZP}0Keg7()r^>IX(B-hd@Wr8NVr}EV!=HD{?Ynxl6?MrhiSf&}zH9Z& zgv7)pzg@wbV6#|f1@Eqk;?uH&*jko2VvY)K=Po;|XK;rL{QnUt+$uZ5@Fw28|8_|m zixQV8S4{ltc1BKavrFCBt=SlZ!Q8{1*CO?9dp@mSMb*K!gaoEq1~XJpPvsd zt+q>BOUrqE_uWcghGR`H8t-#!_HsEYAbV9Wl4~cGt~e{LV}Z4)>jb#J-E$ zI>)1x52UN)v?qAAA;L>g%sBU zuCOj8%4Q{Tj9E_vRGOM9@Hz>%kF-il!`aq|l!GyQk6+7=+a0D7W@wfe(qgh6gvv zTzZU(baLk?C_km5z<4zt4PKnEvKX3V8X+@PgR4 zmY2=v#|({YU))^3a7l^${`ph1fQg>skg^`-S!z_JnGHj8bWAh*U4ZP$yWS5Wv|P9O z)~x*KF04YNZyqab#9k|37Be<6p^6!I8yl6|?nsZoVzn<{KCG(xXwTlgdRMNf!#6&~ zKKWiA*{;pDuan$mz%bv#z1Ou0tWM{yZUvEJ;(~xhhqjJ7n-sdF<-UEg%`RE@g0KAM z%}YtLPQQp6WFFxQk7{Y^)UnqPF*1rjZd4LV#@s-Ns^vaO@2_Wc6qc;H#LVuuB(Be1 zFt|EgVn&~M(vmMgkWGI7E-yruOYB8P#?vctGQ-zjYsO%x57>?a=m){sEi1qIoMrI&N*=6F)aOO>S*f^#a4j4-C6lQ`Amb#>i9T z#vJClSE-$Z?Do~oA#t8ej|*Y@s(L}O_)V=Tjp*X4Qn^jfR3gDr#dsKf_J%9Q99^|E^^Q_LMj8JugT5H^ProcW>Ho_SauGZ9u+6?Af$|eHUxyCHG#v`o6#DUh){$bNtQw zx4&ch!da8X?d#WIjHH70sLt-Wyl1Ad%k#ZyA)kgXffYZ@9D0{`95*WoZOjzc%Yfs! zU$kO#?l62yOx(4$$#r(VSsAjnYwjW6|08^rUjtpZ^ZUW-Yn-WmnhN{1 zG9C77t4qcUD8SzEq$fEE%#jj_vMFzo~10mD(K3d zip*u-JFV^X`GgN(&R_1!3RNzav$nOyfY7qF-2$Xf@C$-PcL0u@W@Hi)jo-XYe+?x# z8uC4?fUEWx*fT)JeZjf&2${kN{tJfPpYGW|a{NNpojkD}bLto-p4E5DXeh4|Jg8y3 ze@t%QzpdeQ4sji_A&oeh7%5$qr`L{GHJX-s`+q;eqprh3Fbend%2yAU;G3~AQ z*$~354hnFihUjnN#Xlqa>bAO|I;oaov3FkVo9NoA?kcIFFxzd;1WfiQbwRKXEa`0- z$FJuB64i0?eSqH%4PYoow>~dUeZ={@?S(D<$lFh$GH8boK&o)EZ^G)TqE7PZ z$kqFblzJ>_n*@o{o8(IqMD7?fa6<>{u?sAcbL2>ob(T*i{{$*>$)u#DWb0OSD6_f5 zfcXCM!-uB`mT@Z1p7`=b6}24IE@{_?a$arIUR^aLP~J=F*pWX63ksE#?30~3{p`3& zRYPHK#r;Pvx94IEBO;S4oK#9e;0hb1Uh4`#T8ty5tSq$R!Is=xOK#vW)D{hfr|Rl( zV8Sl0D~Zqkl)>&f-`vEh4 zC%+amsj006FKM%&Q(x|*{QL-bbRx%4K4d8xx<0_fLsEbPqWS>1b&(#{>!j&Yoxyu+ z#LDoT8ZS%St$X@jVS8ES_e*-$>%YDVx;>I1o0qk`>^tvpv!l`sdk_mH2IQ`;3wlR( zHnqkaQc|j7-pJV}tey1H3XQs7&Lv?~YoB)UMq^ofq{k4;IiI@}t~9r&f0-idy@K_G zC6P<`gx`!B>vAlbtM+m|?cw2(dt=xkz^|WCmU#E^gOgK5R@A7d%4%g_Aw%@6Cg#&2 zXa);|l><2q!GlJB5Oe^e1?Km|%#nTq(MngTp=`6uS8&E*sis|&4-Pl=kt_CJzTKdf zHPohnzF1a{ow`z(7ZxcHn3Gl3qu4dz1P$N*4e_Y@u9ZC;F;8f~XW|DWk*L~T;G#y3 z6k@H23WM@FuC+PrwChA%(<)8P>j!pinUlFdU_NLP2%=;8d#cE?{nh~CD26%Vyn*e} zptrB`uw;y0Zmy(JzBSL%($YmNii65S1wKG4CS9){$|DV20tRpr)p3bZpQsCL+tbst zrM304p<(s-HZHe;#og*8b)*X{30w(Tx-a4A09kh0D_nm=EMd{7DqJDi1+}ErgQ~{n z7kb^!rbt}-{GOgB<@Wi+6mwE(m6E(tbhGWE?Zre*cYUdl*m5GW^e-j()(S!h=_v45 zSTO-=8*A=+aE#zKn6Is2`%lXM4(KbdetA#i9@U-acV6DJQx$pfyb}TCwcoh{ z51W^K&%2m(B3at8eWusMMGd2u3OSKO&vgDK$AiFfOP$cJp95AyN{#Y8L?FkfuII7` z+3L%`stfK~T^#We&?vw9&*Jz0IOW5lMI5i51^NnVpjj?G^+c`6Z|5;#f)EUNL;q3W z_@^6YaeK34va+%0#g40?D$LV&Ci@!lNaY_L>1Jve-&ZW9CvoLkM{E{qW?R{bmAzBw zQA^DyPl|6+mIQb0bRQwX#}d~+rf;lQPY9TyuhL`}ay?gMF#8WAE)Kh(tJhYmpVnhl za0_G0A6C7S@&<#5-#EDBLYrLJO`DiNRx1w`QH`yrb0Nl3`ztZH1^J!_OixHFHWKPNDtp?wk$li`&~zz(0q&<=y7o}SuAL!+d!nwjO+@^73W%wV za%*Mw7ZW8RjfbHBc){c}-r-7NGm{PbQ zzd}YtSBY_nzJ}|`bK!iSu!Vi~__6Wv&UY^?IsH8Ec#u0gHDJgzg3q5fG`v4MyN{J} zl3aT#t6obaT9P0Bj9S921w&3|_x}C!hp06>*JHWnlaR$WS%QwUv-nEs@{>9!{IMKZ zoau2J(S?GV)KbsC2L5wRU0t=ArgMUmT~|r-lM4Gz-q?pAIoKII8fszd%wl;+nqL5R zmlr*??ew$o>L(P zij$0$m+uBkT1Zqh3NnpI_Nj$95|JFK15ypQQtx?DdF6PC7PyH1+kP1ZKamiS3U+i1 zEjQq}In+-4IlUj!Tsb>CjV7|3N5t`r2PSW_`nA0h2^Kr^8gY#^J1dJ;3KxDP`b`bK zG?I!x>2$0?yWzOm{85QA#l$H||FJ!g$NODRkuMD@0L=T{`4bCosRHExBW1+yNb9t7 z>lMzlH1|~SnwjM9`Q4x4ESN6r@OQM(`fQj5cya`v{|x!P-^RLQ_r5c5pMJpE)Y0)! z(7%JFC493DDfPo3s3TK2OaE8amu zqGC47EyPeh&y9usKHQTB530*c{&9`c09V-&ZR{uE%o5DGe>;Y93_a13u%%Prh`%gB zAW}Wz%GIk4U3240LE-4o02@XJ-k%*4ww=X8C1m_-i%|n_MblwvtJ>@h8b~87?#;+> z>TzG2_5mg?A}&7Aj4OL4N2jAzpje>ocn;iK(*ijQN>e4d^^Qh_%%>4q>DPz@*mIJTAL zd`AL)L1m#X8DUR==PxZue0cZq$x{=Z=e!c2Y#OpVNZ}`-l&9wocXRU^k*K4&h5!#B znhx7HKNGXIv5|y4IY!2%^LJxobyv&7E284Z1feeG7Y)sIGQ0}}@8Uw1e@u_ET-jo+ z<8`-+i~Hv%zAF^=TmW~fzjTu0U%<&VwU2AN0}o@OS&V0FGZ=HU43~fhn1Lf0@nVak zeqcA1n@m4{TM}3a6h8{;=;+-mQzN~b&hv(LmB_;rkVZ*hInT#J>d?@T8xzL6t`3l* zyh8la4g_Jxw@J8?rq|Bs>+kM|Q{l(nzCC??>`q$~0nLMyMG63QKG*s+JE$SC@OEE* zdP-_)P8MWN@iQ^#?~8+BfH(r{JQou3OIa=fSm+%edQ5kf8L8$&jcH%(LZd>Ul(57^ z%}xO*1B_zsO`;_DfAR85ykse|$gyKX?zrMGq8(1v%X^lX27KTX0X0JplGkScp>tyMxD3U95NpJkL8B6BM!aus}l zpZ}YpqxGFx1f{H1q5Fdc{o~e+wl|Jhgbf<_NRzrSHtv=9p0e<}_(Yjo(W#}-cB&!8-e)?TP}T)uoyaBjV9$joBshh-A@ z`v{3gN|GSYUcFr|fpvmSc}}>^rRSmGob9^VEx!GnINpM*aBWc-s=^Q&3%>eZI7~Hk zz?{j=99dC06si6rz!cppY~RuRQ6OC9EEy`-(%-#%^|~Oeazh=w ze_!G@ADG+h@~f6^T7F7gv#!!32{aYA*z3=kJ(f`jBIq%z_U5*#|2FFA=uqz|*}|_` zDGw(Vj-B4~@3$iIKYZ!z{dz_ZXuC_6Pf!Sy**328$ZTbp9F#As z?Vz+xqY@SHYo@RgRe#+S$|H@L+#AFD7RMYggiL`ei9r~-7sU6vsOYgSnq~|Flk~K| zBpA0g)}G{9MZK7CIx^+FA@^X_!D=WJC|W8|xR(86M<$;3izHd9Xj07!u7I|vnzbLA zrB<%YK*i(`g(5i-_X-h+EGRAlPC9nrj?`q2JCa^T`+Qe5!zzSB91D6UUK$M!r-Oqd z)fqW^0;OYG&%^~HAHT`Ww455>CI>b6^KUcLEt@G~f=*qzj{u7Pn$iw2ZaO=^NKX%b z`SN$z#;he@{*i=cC?Kpp^>t=gc_Xui%Bx^|s-G|z#LFS{<;!*@->qJKzEUf1v$E{6 z0t1yMT05IGAngZ{3f9a{D0L<`Ta}qx{<=$bC!pxMN<%6^ru*C!*8B(C;|ss-pwVe^ zjOeIh>WVCaRo}lhH4&f0yjz;|U!Xhxbfm<@)pe)8+sY+V{g4!30bsJF$96P#)IgDx zB^W4h($c2yzU)mWr@`Cl-A2_w06PrLocX}+gzERx*Tv&bKENt?IG)81#5>s=u!isg(+`ZLqG&Pd_Cqo#)+|hzP5ay4iI7IAzaYG=Rc|dOm|m7s zI3^n5Vg2(zFa^}TmLXz30_PHwj~YJayfUL3k&=wmN&a`9fbm&ZqBc_Z7j*8(SziO0 zUi-#zI!^~7NvykIX3)Inso>nHzvC^g(=~cjDf%gJ)_*_p{aMuczYe+U$qJRSCBM}l zlT=98a%U?M zu@0ga#?^FmWT1#n9cU4fvoSPxm79KVqSo7pE#s$BsYtoCs6_e05L+w>N@*k=TDF3d zpZ5-*yl?|7uT2|H73N2rx>JAiJ{xjeO>ozH6T&^PAHgAwnEl@VPx{c8PMwl*`{Y_J z3GN=U%aGF`P;a$aISm8Im3_#cjnit6M|!!8f-W>4dnI?@^&i*YIvvEumS z=iEmqLK5;qvF5He7cN|ILz}sFY2{fHu|_4gjF$iMo07~r+FnsfIXNDSl@s`YQ>h#& z(HK2VO%V+dk<^r|Xv_*3{u0!!FBjC*=s9^LB0powWf=3Nzm|QC(Vyo#moVFaRgfjj z);80lg%3W{MJ*@2=RZ(K=|U6y>BHLy2?w0ZMEo7w!-kSb0m@pjV!G|xsV-IDEOY`Y z=gx}fRiLyWaM7m__^rKDW?dP2i8NkNT@qFy~Yg8sTH zW9f3#ha)NN=?iKys*aQoSfAU8k$iU`t<2=kyRM+f$PeomfPp=x{dd- zcWSG|@v~$&+CrNxA06VhZa3wN@xqVyF41L~HUU2>`G;lA=%VQ#D817@=4}}V8rT~b zZ!3FHjC>aS`eHrDFVOEvDJOAaeGFt|q@`o|(M_n^IM<{b zAPLMOeTlB(V>)#$S5TJmEvR_DWO`)GF{`1a<;s>VTWHb3Dk9S>?VPr)Z%doK`nXA? zlO)uI`A)y-p4-jZo!7Zdmm5N#hNn#j9&oA83k$Ga=3D5frc}%JV??u-&6XP#*6#B% zhbkqV8Yhg3-6s=Z1!?uGsmu^BYI|sF~P zYvZ0_{NY%0Rkg6>>CMYnGx?o^3;Y)djV7J0d1EUdhkEAj=5b)YPQt z+isehgT0f06LV@vkT%M0)`>UJB*G&kF!t_VNr^MT!Pk9S7u+b-%E_F#r5r`Zo3t(7 z)}x!D{Tp!2S~||}_vJ8eT9n(OrEYyjVQ=!izB6|^eMVZ0n-}g!B`3biDph{<>XpxP zgUsvky zN?bX8E<~b%8$X*`HoBQaioz{EoE5{bcFT>p<4D2PDhg@`XQC$xNmg#Ht?fhi65s&3 zO4$g`ZD5AfNKGq0MW-}23=LU3mony)W+L-wz3=d`coGhM79Q6T)9*8xWn*D+2qs*u zZ-q1sdvAHx6h$0RTua&Q_K~?l!S$`(yZ)DNgrZeMIa_wf_C`yX{TNOP=&F;vU5 zk$CcST+YnQMZd|c@}vEP?^UQ7Epv`+r+r2rj-<-QA@M>aRWKDo2VPHeN^1v1jN#1U zsby$OJ3b+yR=V93=hT~7s(8%B51{(%IS%5tZx$R%L*FJ!VJPQ3+c$d;iTX{UFLAT6 zc}GA`%-cOR+Ed5>=&g3BUE|l)A0H1cMOV77x{_*te7*E6>stIaJj#*_J#Mn0;Gn=e zgOu4V`kERdLaEUy(b0NjLrtPT6_#m-!}XHIT;v~HH*P=tb;IYy|Fc)v`QHwo%5_j> zD?*pEv3)#u6FS9qOZS37M$LoE8{x{Q4FAQ~c4X~s45T#Fxrg~1Xl77L(r07zq@<9{Ogellb3Y&>NyD&vfO#jy*FiK>>4L{y=I$={fQXVcz3_Xwmdsh zqj@=XhtG;aUwrrUwOx1FUm-YgLs)U81Hzs#f)_@G&Zib+By+__k{2FL6t7JAbVaIJ zyE8iZ8J1xRl+m7UOI_6O%=xT7-n&7psZ8Y(yB@t%d2VSSmMPF27!*kR6s1!iT+NSz zH{<8iNlA$t=es4`N2d1Ob-FBpgiU#>T=npTyGpG6hqhJX^qMoEO;pp|IQ=EJvIP2v z9XdHO(vzyNrXpVN3fol|w^Dq|ejC?BG&c_AHs9wM-Xb3%ieKqP(I(s_Wt5YjPG(mo zl?^{#6XjQ?zgHZz*RA{U<2Ia6jN}X$6)?izuwj!)MQ&Bkol;NieP?LbWsw#8CDuII zt9-$KX~k>Jic+79g>K3=1H>0he5ju4Bs*mIG)ORRJd-d_CV1C%(TTH*}bw(zH^(=WB~@%{djF4prCoiJ^tY*SjS(H$cX<9X2&d6H=6 zZRV=B3lR>l=H&zj6K`c^p(YP3QEXyutl0UzEt0(kex{maTcmB@zJ180j}}{8`2G8f z(9rjFgMgU5lT+fm+g*Wy?esY@mb1g=Pn9^5rj)+dVgQq`(gA(9AG%_u`t! z*PojFIb7kCu6NIi;zCot5AM&zO_If&I&(`U?HZG|b8^~s!RgK1!7v4DeJ=6q5%%<; zAlL#iSKk?Kw$OJ#;;kn$mVm*jOt$oNV-%+A4{ANLwMvaH8))GkxxY=K{@ES6SRsp0 z#3s=`)puG3)h8>7N-P!Y)5Z*wleOi>($%bQ-ZZl%CC3bg$;l(396}+xh5q^-0|jQ` zd5gYIW3`IE&TIdX+IP7*dYWcFU0U>~Fb%Em+J|2JaN%dFo4M5zeJaP-1a}V(7Bd46 zxK{;{>R+SWX9{WK1X`U@{!L5g;>iNkx6trS-_k_>5vZ-c4@1>{_xbc9XsFW8U(r$R zLT(OhE1#uw31YiM$?5*`<%E10zxj#P*2KPuLc$=nm=Pwlp+M#D173j}q5;}X*BD72 zpJu3u2??5F(jvsg#q-LGky3egtOeP+a}gSIAlt3=Eoybb{ih%5t$;+?U*4M(iW3&p z(EIN;T>TfJ>~EnD0XM~mfR0<)7P1gv-`c>Fz<+m=So3zT&k2}Uw!4)7*(=N%+g;p^ z8;s?Pp%4X!tP8k3Ee>szvbDZl^&M#r_)TygQ9NDtmc9=jbedfZ4YzCP6_rw! zNvPn-quqXkTthqVIzd^X@qmuY?GxQmecvqZB*`Wbb8-}~BOSBY4PIRH0p9xgH?pVW z(uu_NxBr=5TWpgX-b|`{r-Sw>xWLYrZO$crEh6J8L`Jq->|p^_Qn|M)bUKaaAT+aa zMty(rqU?u{ux+@~9n#Qe>i`dWI6a<(js4)LM)vyrJ!oXnDx7%6;1 z9h%ZJ%L<1rJ9UX=KJ;AFmnW#ffe`wnC_WM2zmm~kk1U^9Q|9EXlEaAV61IPJZgseO z?PwZqo;*=L!q+)zlSc9DFFne?($d-4)dD^FSou5}V~AzaLf;=CDlnO*OF;{G34{i6 z<5oY-P8N)3$}KGkQ<`y0xB8f21k&fv=aDGx(R*c?!+)Z}r_r^VqK}i4by*rGG(0kA z_?n?=iJg;8r4(k_+D1ET&>40Cvx6+L+V%zjn~iTv>E!(AMA=PC<+U#okhrJ%@CiElaq7Nj|O}bh`FT7@=QZ~Qd0d@ zLvyT&bGcZ!(&%%=UF-K_k+xI`hn)ol1O(y>JUUI&KiKw_y{HGxT4(saCLa*F$F&-B zvD=<`d+K`0sRJe@6Pepd{EY%Hr^VoCwWpX{;6j%y8Pa~o;1B&v2({U0RPo#Qrlm3p4LF>AYP6yQJhjSci5BD2(ioDPqq>cID05hp zEPL`~WS@mZGlg@9jfozz%}lXVduN(^Tea6dCDiwpF1O*B2NE z+?qMjan=03HNyzQJ)d{joC$K?Qn>cpJ-_BE=H_h!^u) zbV~!%<5KcnP`ti{om~nZZ(~n@Xfj-t7!bFOF#jPxd$zzt((Yz}Of}${NO?uHo*u$J z5&j7r&dr>KAfi9sV7Z6Uz^+D~Z{(~8Qu2U9@sQv22fIwdOyDg}7F1J96SlDb8330swNpQnt1?ZuuLCnLh)J zyCpI9@eI86TGq;zPn^}XZWDaEoJXqi+&kogH#7equLXB^0Tml!wnCSmUBN`NUBW~w zS|DCZYV>OCuDg?l#0#2y5x@_;e~T7OwRUimWa|!rc2lBLtn-lHB0V4Kg99#1ePTz6 zXM94^_KyO+0P$6A8CvPm{z5_;#41gh42UNkyEHMGDJfd9c#NLo(X^wICAOXzaklVV zLZ%uH2h~9VkPR`I6(q7L?$N}+^fU~$SOcU>O3TG$CTh0ZJP=0UhPh`os2J#QN?Srotln!7P-IUkxqY)m_Z7X| zv#iyXVC=|RW+{S@;}M~X7ORPLMk8@H3cb7a6>$yT5(q;i>TNZXxiZH#>W9?Nt{(bFptHw}0R1LaYy zX6P1<@$=ZwQ2^se)Q!IN-ui(a?F}|uO3H;V9+^{c!QrlmcuG!V{7=&>wiYzKO^v;5%|vt{AUFIGXj4( b0t}T`)UqQH$H^8*pwv*+IiLBv#r^*SCo_+8 literal 19133 zcmeIZXH=8z)-I}|pn?=>B27f9Nbg-~A`qna-g^n104lwUfb{-Sq<09tLx4~ODbhpl zgdPZR9@bi}^?m!C?~MItkFkHejsb?;Pwslnd0+FIGoc?rGEW{qe|+c8ohP#IC6({o z!Po$P?mWZ<-l?lrz`k?mLx8O0TUC#{JMCDI@xZI|o5^))R`1{)g@;@_WZxG%Lir0P z^v1K@rja$Z+E>4|Eo|&cY9=DPLqo!hV`zi|#P6AY3)o2;Slx4mqEI)Y2GnN`$(3;g z@n=Ur97owyyXrnjZZQ^Thz{ z9E*%$LpM1-Go48U=~J?S0eO$Elq6Ps@3`t&aa~n>|CcA{QeAX0T&`69 zC)Ir5az{enm`6WwGPqOP2TM*=N$tAXI7I``2X!y(NCe68jP^HIOgUcsYhj2uWfw1T zsT0(}k!N#=L;9yo!;b7=0uqsksc~Cvn|`a(-@#i)PT4sB+NuD4vo9UAu=GSlgR;P6 z5uF1Y#y5zMFx)7q6E7y+sxKx;FI}Qit@eugG~CCN#fzG{xa5I0>W(Z|wfg_~`@#$U zkM=2V!GAno;Z~zuZ~mayc+)b^5&k$TH^1g{2hVH%??XM>x>vZ_h}clsp;sK<+yqXc z9P>?(W`zs2mQ38CTF9Sw0%O~~t3&Nt&Dd`iKUfSdv)`he_J49bP zbJ(9Lq%vasIa*NY*8}IrU-#b4Rcz&wvBG_S!coZ78 zD*5aW;G8~Cu*`O85N8JOd<@+A7;i}!@a$ZSmoHJzapW6eaRd{em9PuGTOCsmd|niGzV`DE;1O{T!$TQZ=+l=uL`YaccVqRJ1~@l~SwAQz zk>tE+fx3h&S6a$HElPk}fKJ(?%tsSnsk5aFqff0QwNOzb z-zViW-gE~y1U`5U^*MFS`>S`v%>8hF9&;kT&Y5|oC%DS=9rIl;5gT0Y%A(Sgtnbf@ z9YOaP;9oq-Ju~N{_#=zwc7fw&n7%g07EJ39KLR5j;c*@=wa`Nf!whuF{A1q;@_!;X zH&q(5%I!uhzCY#D8QCPlOwJ%w^!OTscgC}%qK5wMMM*T_s-igw7hnEH3pM|Mxli(I z`Q*>cUHMpKszuQW+mh$0wS)ooB`=O82-GwmBMCqv_$J@rF)81ScM;#4ISa zWIDP{bof$jYd2)9z_{1qc1>Du^%x$wrr~hY(1jhmpk;F?>sdW^DS^FWEKBn4uzI4FgpA1E{A}cfYVsQ&G%sF-yJ9E_`}IC=Y=yH2MM5_<`@&saVMYqsHu}<-o-DJN#ZxE&YzQRBfr*-GZ*xQ z)0^TLSubbkn+n7DMY1L2(Uxyn#e5sTexLV6YkOTy2R#sHTt93`7tHxiFM4DJj<0NCTK962YSMz4H zt8mOFiIg>-o+S{zwqi;tn(?&Rq_`L9#l1hvOIkMEYc}jN6l2;O==|$1m!4PBPbo5c zXV;D0eMlX4O7my-R%SM?It2A+lmqEU3f6<50_a1;quG;wb=CMWwSp0!6W%qwIJbW$EULrvx% z?%k9JaLw_s*|x8qWT_AZ^#(cJ1e$Et3TYXP_G~&XAF~+0Q<%NJz@62n7UQ>hRX0r5 zE=aibLhrbdKXDBn@ero^*p|tcDLdSk-B^STR^+3V ziEKAy&vZIH0~gc=%_`*}RfqzMKgRorpc8tJ$cGkvmZ>=JiYfW*e@~ul))xoXY7~=l+Qo@pRCMk|!z_kkekeBSET6~@RMESKi zSMrXL5sQ#J4$WQ6EkV0#?Td$x*bfI=aq)?bjW@re8IpeDC`GLw)nM!6qhh> zoX~pot5@QRdUcV219*222kmL{064vqG0voPvf#IPSTiMPPZc`1{NVO}oi{rLn_WNm zrK@W4(uCI5US7lV3sv2YE3+yiVOAW)WtOxYFGGaZqF&Gl<2QqPqmpsc7rgL^AL4Nz z6c>G14m~)y) z5Zsh>P7F7CKd-mBeu(}q|9*8=DfHQipx5P`@TDhR{H{7THh3B8tc=Ml>Nf5c!^ILY z+^;kJaa!8N@lG8aMnfw|(nRXyT-4m@r%kc`Uw>k(Y6G-aswQm5Wh_vy`)I(%Xamn7o- z;-T!1XD))aAUwq~ww$5aUPE9iWF%Bwqt$1E=f&BPT`4< z6dHi_z%lbjij3&I1Xz(8Lyw&`va8Q9Dla!bn&)y$AhkTvgL|Tsw}lx)Vk7wnSy#aQ z!=rd9ik)&qT}5SNE5w4CZ8`2#2O>Ouj=+v&TrWy{U&vdkj6Itb|2bFF zogIb?WgkB2_p%L< z!I!r`Fcoi`+bZA3(-Z!z7u-;O+z7qg87+Qevv!4$t~7q<;enK_Rd>(S;^c@Q4UIvs zq`jlCXRBMqTOWebdh8hF;?(B14~nb&G-kBoq`gi7DIIwESbm4YvKq$veW-~D2`pFG zG!#t?RPbi-T%E6~Ss;bcGx}^VUWpG&Bt*!pVw*gDshOMsA66$BwRK|W;)=pzr5Y|7 za9>3Jz){tlj5GiYX&tzdd$T}Yeq&6J^~>(rtK$Ha1;25iQ}0M7dyFabT_UW_hjay5H~e~9d+hBy%@=<4&YVv~e8$~p$ZS<1 z{3@Kr=P;p0sKY3K*U~2O!MQ4T&eIO4wX@*BHI%Tb6V9W;S#P7yDh6r%I)zW@4yT3< zYmhjVclKwG%Ibbg=xC@^=N8lA55ojgNBd}tf6`yd3TFULwqi}35F;=d$HRyDwmAm5 zG^M96I=|4>n+s3fEEM!2OCxHZ`s@8E&snC{*OWE`v9cAwBUpCGWBR&Y^8)d zK`^zy!iUhcTByM6l^YF%gscf(>vd+pBbbt|7;S7KJ|V^lRJh4twr?G4#%kX+)7e>V z=R6`Ol#2{dWQgQHxn?PsBL(Z*H4+yi9(Pzo~WMmtGcE5xVt(ZjP%W|tX@PB4YOsP!*q!0hk z2V?qc^)Ga(dgx>h?MN-h!E-ydg)?4OHT(eYW%0QNyG^=f3yfIyET0fiQ_0I~zF-=q zv1PQAR+%x%t#83rkS_>DZgMmkcsx{7b82XYG?ax-Lm!2d^<=8>+eiu{mp%iL-vKN_*nF)Jx5Iug;jD^=C-S4@(Y z6A-<~fRXj4hu?BMtaNw~3q&t0G@l(g2UX-Y5W*eAriZtMY(_ON<|u6IzC9xgFo%2~ zB4?fft}gZbVBjW1>acTuP74;as^uTCE!%BdSGgs&F~Z;zRs9wx62KAqk&M5*R=DdN z6v)A5@l2;sXta1%XBdMz9&i92YVpmH=76b>Mkt2nEq>%v&&SGmTqO7WASIPVqIG6q zA{m#vWWv{ta?2P9$uY43EudWsdP`JTqw$lcUF_88I;6YP}CppYIpQc{&;)8<9D@np-;-W}xp(v?j_Bc%o-1xC^SC zbmQa^!Hg_qzFj*&+qM3`cEfO&m*K4Rw;W)mhP&!m|9A<9C3S2c5j-_qv^)-bR{;Ao zlkZ$f7x3T^V9S!hiHQk>!>(hTWQ;&8EVQ$jf;~ zycElVR(R*?ttG+dg3mV_r2>+0gnfPy={FeB|A=W%1$jxW7QL61&97*|RZ|mq+MIo8 z7AY6?l1DJE)t+Cxbw*AxBb>A@4m^~o8sSBmMNeyAMw&7P1iF=84wMNZRU~DF&a*@w zhhxU98L3j{w*3A)$-6Aq1KPE!HHg!TDU}5&pSsA|07f*ft2PkU0r>lof*%`m7KWQ8 zFftpdpARs@XF2-4*-lnX)wy3lI${7SNNeK=DWCQQR6oPC-gR|cKZFB3_gV3;pS@`V zd}F`27gaggC0~BI_Ym*#3t`4j8utC`?~NrCxDzkW*GskS)6zP@lOPKVJBG_-Z(s@v z8X4hbRn;4Y+@z6mYuQdP3XrZQ{(>~AB51t{`NL9|3eQYI1nqmGk6w%Za2u()gnbDM zds~*d@nYOm+yq>Y+^!aU^mv5esiox6%)WfLVi}|61U~T6sjDRCSSa5EH;&3{@a&M^!FBhlP0Ld?(g)KWvAxd0NIhb#p5(IWMvLNA+mnT3u5mj4{TNcfiq z)_xstf}73sqaMV`55~v9egH5x^?ds#86e>{d8X`w926Ok0og+^?F;?5Y1`KE;<}1j z!w!g>h8`n1m{hUtAG;`mGhq)tJPvY31N}{_{_3fY&~&5PLde$vbiP$D1q7_CBPJ9u zwhr-__PanFidlKu_>6=kz`&uEycIw8GZLm0As5v(Y&t?nX1e0|+YYp+SCaq?V5q5y zpX^rT@2#<$JGZtX4+vl3Nl6vOMV71Y^US)Ge~x#;z5`m?K3kf&spB1A4Fyo|-tmFH z6Go?r1k`(p(f7)i18^{)pzI5K(Kj~cz}?A8nbD8Ri9O#CCzMOrzazDD82SUf+0S(U znTzFz#vPa6X%NDIpg;m5igz+P6j2&#cjDP-1(=Ea^?NTe3_1*fy8)u9-1|jI zwzy#%;znt00XDY+WgaSgu!zZPXQMS7*IVJ zWv=Z_nQDz0^#0=~Dg}l7cn$Y)$5(RzWC8b<4TR`Y%gTvK#JxZ?3j~9E7xveuo^*hJ zGLU&IEs}gfTmsSm)w5Ip5%MW-jGC-fb>ffZG=@4$leBvHU{Ox^5@IG-Q`k!e==~HNAV%WmprHpYMs7V`hS!g`r}SsqD*#H-I7}6I550BOT<^n-z~*bIe3CHP zYuGL=a`xtV@4o2tFfeKE8*e2lUmtrs0B61&G2RZCFiKk4kaSKBu{5OCQ;(j`M+!3>Vt`Cl)?0zeUj$#56L)an$$lIB<;l1Tryd+gZVWSVJ~Ru1H2a& zsZ=*CC;V^*k z9UdSaS>76gTS_b!{P2r5Rio`wENw5#&0UM~4S>lG4J>`eljBbc3QYEJK}vS`N8q>} z72Cd3zy#FC!!{YZYVAt_Er9Qr?G~@*T)}nu-o!qjMQCx-MA8xdd{zL6*no_CE1FdX zc6a3f`3on0AF79Vi?3znKjal=M`V6A#LXWrIy4gy(f6WcB@w9!qJ^TmBUf@IV>4pg zC@msa!#zWT6Cyyqd}O%}kRJ;5J8xJs$)FE#L%H#trid z+U1q}lYltPEg!4(TOJkFwW-*Gj}!J;39Gq}6nX4eHfkZ9!El5LLMbq-&t2<_C-ubq zf9YW`9h1ug%JMjM^XXv{pU|yv@bU|b}c~m_mU%~*n9G&vnqr{h$dZ~ zHdkD@!?Mdwt?7?s7+!*+HVg^X^HV^L*bnL<@17SHKD8VfvjYDFY95C`l**+BAy)!S_|1((&tIX5R-q% zREo~4&P@>L49>b^M2~^(Oo*HTVx8*)e&A?Fx`MHshoL!-IJd}b=R=HUg>Co&V-|cc zM41!<9hP;^z;-enrJ>(yusv4|!NYqcCKM%}L#3c)g9n6lw`7*d5m`@!{*de)f{SaY zY)zCb?jO~-7Wo3uw%YA|?XVVfTKsbd+$&vBpnmN)!gZ(@WyIqzqgVhHpCsJhH#+)7 zPC9lEeU3_7feNF;F5Mf!#Nz@(?)6B}tC36z6R;5@K2OVb?C#b=Wc5SjAKV|eCYFGb7nw#-2w4UJ1ybFJtG(#y|s+(lQ**` z7bLeXpA~TV(VbFdol+l69|CR>PR}OM%d1~1V5Z#xN`Ry` zso;}9sbK%^Suha91Jd4_d{s?$JP=w4dxJ%R%~RhkTs=A@@%3uw_XXlbKmEpx8ImXj z0%oOJcUt+QDgKT>E<9smZ+)Ul`f%q>mD1;Ax7Rn?lYL9V9^FLJbTZj0L_~`v)M*MT zb!iz*wUkaCI)yVyT*6W7rD@U*t-=`);fab?ArJKk~w@*rJ)Hh|A_b)r?& z7kvcita`3`P1ViGGwTtVKk}m|-6ovRI%3dQja-&hf>WB){edPbBe#hPJDE3U28qFM z^E;Q1kZwvMxOEBb*VS2HW)7=7_kM2z!O@d7QQtG9FAy~HS8BM81E8=iO^pNTxl{Yi z=)%fKBbTF~0>Z7UFLIu~^jzDrO1w-ho*irR%pp`#BL+kYK%h6-EMA%wwYXpSc*gqo zkKJloP}Er%Icjq{=Y0E@%BEAjr_sz?&TNVEF*OzFa^yYzX{F99(lsM@&uQhko-BKE zW`pzP3upTbk5RPPQAL*10 zAQ-^@gs(5u8V_I+3^Q@nmP6!e?+ajkcticU?Y8T=c05f@&CjLszv7d0?SjGYBObm3 zFHM<>icNu36shy&axf}8&-=4Yj5qeSB&E#C1%(W>J#FyJ-kAGBKvdDi)BcnBhdEWf zK!DtZr(wIAj!mDLd9d>PX)%a&S;hFEka@THDgcXY^e?Gk*drBi2?jGeM|#G_4? zq*N)jlm`kn4%8N_^gzJ%g0Za)k2ER={!_+Q^Myfop-6DO=jnTZngVh>)bt%@9h|&- zbr=#h2Z$5eEItsji9I(^+-I8V+y;NZ%T<{|m;v{PAO#%u=Dz%rVPkx-=)9smg#Rp+ zF9^Wetw{Y@Rh66SS8z{$p{2Z+NPe=S+UWfa*ZL+=-29))+kDQvZ>~WAc zzTettdarD!V5u2_*`h$D)tr#C>F(`$FgJ%&T~Zj?dR;`MAVG>gh_@>!3^Sje&Z#){ z9!azVQC(&xE+bRi9~0bIowP`+@7t`r2X6B-Kg|wt9UH;(fxHjgCvAETdmX?$_EHnV ze{D)HpZ;j7Z%!ty(*U!$H$$PKOuf|?!9@mxYJ;%q%~709J3x`aH6 zgs;9;0n(ep3$GCa4g3Da_jQjDBvE;_13kcmj5Dd5)It`vzDcVS^C9YhTmUeLLfsr} zf0Am^0~pCnPwF*d!S@Vy7u{6Y|D?>ev#f5RlWy3)YhOG(Fr$P8;kf6K^QnD8t-7)_ zn;7}4dM5Q&g$X|D`>nhu;>V)GW$bZ~jhsC*;$V%ACLA4Gr{`~LyN$nZs+{qF7!DMu zptcM6*zVkA6{rj3@ed^$Aa}+O+`52}Z8b_`X?ta_PQrIE+CmTPX}(ID!e=82b>$Dt z{&e|yoL{pUS5~4{9Jh8LbZ2G1yXV%|kb9Kth{N+Ky~%d}BJ5GL(XOa(g{82A?~N@G zSi9=+`d;bZ6~Sd_zG8iB{Tns&1ng-9CM&ZmLujfl!fLvkJdPk}K**+HqYFCoa}=di z$MU}YVc3Z4=66oMgcfAEu2Db~-C(R0ufCoA%3{6-s!%K>P$VfYrzWrc?a440^kqaJozuJ2f^ zgUj=0XU;Fxi6_CmO}d!Yb%KCk;=Qp2c49t(HWxDrcWwDZvQTAobT2FSMLdx**>q(8!JC` zB7ZQ8d4kDheww*|ySY@uQJ)(fXzEp8ws5LH9}O$PIW>}{3|3K{glR?lwTXkN^&&II zmX||ox`iuh6U&4!B>E7JM^*0bM`=uC@(R&Q#RN$HSt?v^9S?7Jk$B2xOTYq}_xD$Y zV!0BN2|CfKMu7UbJK_6%zi>6jN1*_cwfK>A2Dn-Q%}iNRa2TR5tJWB=Vx;DT0Y%>C z#LVQC@9PxJ2&4kZPG6)x!9r4M`va5MM;v58l7H&sbk9uVHn1%;*JE-i%=OEuqiCN^ zU5F?(H7Q?ZV=V^9vHq0T*T%K=!wy%j+oaVgpNi%};4?4kU5A%kym765?t-GkxZGz4 z>PjNU8}T)#mF9kg(fYgu3Mn-i`4b5=LFvGPH=nGsz=zvSN0uDDJrM?GK%5`IAM2?W z59Ci5*ViLD3MQShMVai{^9ywaMdJZIx^cVF(;iF*a1jt`<5=hRgJ4a)**+kGb@Xb2 zIAY?u`15b`Dl%AT?wCImd*ag7# zf^xHPkS94sbML2S%`~6);~TIw{Eqy0L-zmFko%v81rU^rB>M+oZ!%nh_l9Iu`N<|~ z#i3GCsrs@4%Ol(xyURtK|0&uk03Phk8NX*F9Zy#An8DaaC{9PUYcnB^3rMv65(Uyv zf9kY?W`{rR= zgSh@P7*O6MW3p?#?4c!6-azopUrqT74b4ZIm*R9?nVA)h?TDZW-}oL;%Pk3r+<&Ri zGF35Pwn;`xI zi?j+pjZ%eVHv?g8YG@whQqXn{7Zi8*&vf&nwsP$K?qWQUk>nD*5ys@I<56z*=JFkt zwK7%cvnVgk6SNMmTOy79CS^YFg1K#5yz~(ULL+_##frKy``1jWDfwmMw;Clu|B6iR zGPJ8%<&N8JXQT1vW`Zu06|XMdO=gxmkn1OtQ6AF7v?*lC0^UL^JNL$Z6-jP?-hcK} zT_wn1YXjD05n)(<@pG=4y0DAQXNMc{vyyCQq~)FfcYzPfK-R6)t>}V{^L06)rpzBfm5|D_q8@|H`?3(fdnoY}!Bn;0|VSy~Hk^E?iA$$R(ionJ}Zgf|ZlUEzs#AvvE%%BKhhmdw=VOjmnyVfufLT}s~9g{7h) z=nD#5Z5?gY`Iw(mW_8?h%vXFxRnu2ytHhR1pCUrTBK|6F`oaavgQsvj`%f*aC}vP! zoNTP6wG}-teb6icZ9zftiifG0Ij8r8e69UVR9;R_Z0wJw>~9(dev}H1hWIEHYPRK= zWY7D6hJ^&Xm(%so6sQKc9VQQy9x-b8k6~nGWElQqRCG-sh+s;yL(Z-4BLG6 zi&ZD&qq@G+x%aWK2q}mp&80EV&=PYjkJ4UqJV^9F)vTV2oE|uMUPbcB%7WHrt4Om8nF$%zDooZ{heW(-0CMGIOm!x5 zfUgvz1X=GNfb|cy?IM*`RNyK5P2q5Ji`gj-U8w0JYM;YLM{9#LoWiLWJ<|GKCp@Vj z28`9=)b=I;u*Z2t@2IKiUq|7MejP__EraRJ-lMa%$KKpLJQZuPHM(9%Dfu+vq_1BM zf6oYctT(Hvs;gxIFhKk+DtpDnMJT0IQ2Jvj!=Xhg8XDX#Pfw`9qBR)MBn&D1Fq+=n zbUE+sA*_$t0H9Y=O8NjD&Xyza|Jv6<5p&E&$5E7gl5h;e^#Q|j(7@B|G zRrrgV-EPa2$_Igm!|T-H!P>HMFWqO)b8BlGM$Q+tKj(r`QerpG$Gv#snIz_pt9XSX zYiMkQW$?t>ls0@5@eUWDXx1Oz(c6qYg39!S^qmrOMre+r1$>i6QI6#HQ~)#{{YDmaG+dM-?|g0VAC#FXE=+|Nb?pmm z!Az~4#pNj_kbtOWinX$|Hr80O=LWXl_IFdf)>!`SnJ4?^heu{Om}jDsxR_qE0Z1^Z zn%>;lFx`rS*`gs_$w^#!RXLfT8XCN~UoRLa*zY|gl3KDfA4(h=`l2^JK9N0L<<1t2 z3paVEPj&L-iRFjW-TcNzas@Lr;;gK!fWRQ58m-X?DxPl)R97O;RmAV8r$mw(cs)oM z=nnm$s7T8}^I7Z~MFtomC_h$F^eRrM)lW#;|8C@{;UWO*(fT=iT*^XP8k*1T4Gj$& zyeY83zD&UJrY?0(H<`WWvXGaF#TUad`4sb8!gc)Dud4j|`;Bu^<}*=gx^A0vT|Het zC+4Lc9q}jJ$XOGx;bIFO*lKEI@@11;fTPv-K&dsr&AH21{L;$Hfm-ynh|L{F#>~=E zDtP~yMr?}EJt?Jwf%kIDTd&I&+5EhthDrgA^~j>qb;j-a^XH>GGk%`{7n!G!*57L* zM(41jd3}l&bL6Msr@)LnX2_+h@}TDF5UQisto%8{A2vB6H!>$ z)ziZ%{5rf<^oj_>)g8!hPEW(cG5ymwRr1RbC3VQxQ)=(82g&|%B2!bEVR9c1wrjMf z)#_7BLc=4o>P@LJYHI5UDG4Jpx_|m-%uThxEpYG5KOi$1H&M519 zq0~MM34d&okImrRuo;W&8=ex zQ2Sw^e_Bsf@>jbxCN?%U9XtEip&?fE^OR(P@BeKP7}Kt=-o}d8!0ETA zn~okE1CVn{lyHE?W^;a}UzYHher1*5>C=uUllq+}lluPBqni)epUcWA7(fZ0n8y>?O&bcyTlLmStCl0lp;W+c$X& z4N?HM62V)2{e!O!oThYsd>SxLJGK6F~t> ztT54Zn<;^`n7uAi_iOX}sKy-@#U?AI%7Ut3U9W#n0pB7iC2?d1%=G1p7oYrjc#5^J?&67^@{^Hm zzG7e)9i4vbto#xq5U@w?XZ+vLT3pjDRi73_PWf*iy8UVOUQuFxU6jZJ#!QZi0wI={ zk=Re3tfIlg?S>;@?zA+$R}A!=A3Ms80LJ0`l8ERY1_ofAR1wk`zVxx7i;IR)G8Pu3 zOGZWk0Rf8%U)gcWCgl>Q2NTq^v}C2dp3};#eALtP&&#X*zEjLn8Em1Xq!dd3n#-S3 z2zz6*A`{m4-XgPngnibY&--k5`GnZvVC&G2)51;EU(2hcJ{9y7v5b^clrx!#Afr$K z=nxW#JP!;Ca=wPH8?tYV#_fo;*_4%K*8deiUV6zImYun|vGYPeAoO$g%bbry59G>- zGlpg4<%xWePM!Y&QCjCxn|VzPmoa~GK_BDcVb9XpoK5N4g-sa^H}`!hr9N1H$K_28 zR-M=<`~aU%erGur`^=Ap#5rCvYEzVvA6nm8pL?5&b2rQT3hTQWbprj2=&r-2poWcI z<+0B;QSq3Or;^j0@Y`-BVYh0jw5GYc13s3OiRROyS3g%g)A{BH<=C3zWLhsYhrHK? zjsouKl(t9ZKSISUKLD1kVf2CuMkF z&Kz-xfkD@bH>iOdI=(p9)9G&;)XhmJ^%W!A z)j=?7qoi(a)1oD|s^xNSf7L7nxTdZt4M}(uS9GXwmTMmDT4T)r&OU_@F zy02$rv-OExT>7!?H*9pE7a*&nGT;F?-&&`JZVY(X$D68tKNfnLTm)VlBp28&;alj_ zYP}|JO``Q%e!tgn(2v+Q_Iool>@8; zq^-xfkju?{@LbL0S^^bXbr03Wwt_foV#q-4SRBoQ{gNjQ{6rSKPcH>dk*%@8q9@|^ z4c8Zts~`D?Lao4dZ_b#EKNh-hezxhspx#9z_+$Pe-)a_k91*e zIY&^4x-cpVqiRwiOMw)9pCO0y-p>1M*T$?~lTs+Yo706=?_trDD*MZg5&_S{K*)OI z!hlvVE+sIe%n>S>8uq%Z>6=X%RFF^C&nJpnBzajTdhK+^et>S@$Km<_+n{f~^}umR z5Y>T=T3k(7Z&932NpWc6Sh$!7ZCalrU7t}Di;ZPaTsz(zgC3n%P+Uz>qR^euD>ak) z!)d+Is~f$0ee2Y|uWqioLTAroqF1u8_J)BoOmz@Dk{7*%E)0@8G{uCoHn88$;CfN) z+UWYH>!f}x23E3z@QLa*GpPZ3PZ#`44K?ThVJ&OD_VPVmre448#_uXt3>Ir}={0oG z4vR%iQP!=iocVC>doR$T2Fv_dZ`av;Hk(Gc;42s{axED}edR&rwRlY-bb)L_^`xMV z%dWJqCl!6aWw;@_LUo;C-bZqHzRc9ktKZRegbauKe%p0NYbg!@yzK{WJocc%mpfl*N>uamc;t_T2XM}qqO~%Um6B*pR@Vc%e`hk0IgU@I;}^Is2-JtL9GQrq|5cG z>*Q+t<^F)0hF;pjrT@*>6#Mh{*JJFyGdl9m!SA+hQ1Mp`6pu-k@g9A&xqYkARg-aR<*K^P$xWtdtGFO5aS#HX2=<?yy5otT z_jBSfm<6geHA|ayy$_}yP{c?g#V`w=zwu-7-9JC|)Jz%*xpSg_GkHwpr0|?jC+@>( z75&08g(_071!93}Fnatuld7DAb~d|gw0ILl^K3L?`XH04cO0syxW@Dkt zq#1(lqZQnX%)v!fmCqT<#zkd|zt0s6p?|>;B%T*9p2Hq5Zi_B&l1dccZeqh!IFXH8 zSX`N`8vscz>@u}^@y;3yBH{8WqSGsuf^kGtbz41wzk7RPe$~4ebBW3O5^}0GB8-4uTpf?eq?*0K7#09TKipsT%kwxK}C$ zwz^-+9sZb$zTm|%aVbL3M0WiPTU=DGyBzqGhgN?G7lr=|e*lF2InX1D4kOcN_MY(5 zPuxfY5!XN3WrZ^f zu=a&*Jj4nn1TznLy8f`Nn_yfmXKt_z{V4hGe9?`4oA=kK4FIJ3)MC zFk;aY-b~VeH{dN8ls?HG>Zh1>dJl_<&~f7;2~qCm`za+infl;@EBBm~`=_rAY37Y9 z`%2eWs(+7Mh`pFvIaBH`DvvvjJ$v)?^`ufBtGctIp{J)rYK0#;S?^Rrzn+B|UV| zZ^QeSgz2FwVt<);3*%|wjK^AZhmJENmU7F#6F(#lYR|2p?|ev9+SbXP!O9c)3MzPf z=x>a@a#iJmZYSasejB&3G{#qtt+F^9&b#?#)%b)kekJ!;a+UsL9OP;V!f{Ys`TD*}>RnlH#&+D=6PdUnGe1kqnxN$u)x^&9Aheq%S?Hf5>X zn(wZdMq}bBaI}hC_n6~HYQ5w15Ar8ul~4L*?Ei`~DNW=v9oQ5;UO1s6kLzN#tPo&z zcat>tWmg|jZflylKxTDqYybT^U_mWO)P}C@6aAQGI-Cn(x)pUktgQFyAzorSwPaCk zCaL;16EnVip7jloW(c9=@P(^}!?&9H$oLO-@hkT`yV|2)4^ z)Y=#5g4yj~AWWf2`Q;!M;7)s9Hi`P3sj8TIjWio2$?3VQrC7><8Vvccz3{$k{I^pwZKd2+lYlpR!)4Iihs=Y~ z;E6hI3Smaf2uS$B#JORbDDCaIL4pWlfTz^^8!|LkD=~d=#E5P$8x39zD2dm@K$qXWCv1S8Pv*8`t;Q{Z) zg4UNA_xD?jZp&-y%UulhLJ{^jxH2SiX z^@&{LU5EfruC**px`oIaa@#W*jyGF8%2|EcpK40=@Q_oeU)=>lP*rb8D>wb~!&Pu} zC(GKqB#P?CNX?4O4p~<_cP+1-x~H~o3`%V@+r~QwZhuIYb>nPUOp70sQVowH#L`H$}36iO-)6|DIF%&-+LLcLi>-ib&E&y>?BHZe5qn4s*!kGSi(NpcZsjyi@ zsU;0th7eABHVL~U;vm;2CB4EaS%T~Yz5r!07>q4{C=Ji&#P4lvc+PWj^VvT+-

f(ezG09x|?s0 z?CJ0K8M(1n+p23F2=-j23$d8fcXBrC4u7#Qw+j~2ktA{Ge;Ezs^4we=08|(1J|zFF zNe??R=mvH&M4yknE{|u~&fDrtDe_RoT|0B@4RTFMJk*}vqHG45ySF?i3v_gg%6o+E z6D3ZIfs{^%^|nUocVbMp_QAZd6rD8t`H)>mIa^=oo#yUI`?dsfUn@J)M2g>B+)lTAnRbu$ zi`y_J^mBLd^C%M)HoT6a8n(ppSDtHdjq0Gr)-OgIwuD>)r)Q(Z5&>i5Bgy!&O5Wee zhMN_+4+Y%E%1ReAm8Yd!9bh-VMH1jbTfV#{{V~A!U6pNR)l-rt-?2DI4}-(@)E>Y2 z_E8<6uri+UB?(X!ZpI|@i+NZNBU65I$z$McHjKvzeVW1#w|{4-qAGXL;jC=-g*@hQ z+I8gsktI*6^d2fIY5psVLWv4{B4ph_$#jI~^nWodiIXkm?)#3ugklXOp}o*G{kl~xm2oEIll~EoKJ6R7Y}dv#^$+ffgzpI)?MjbF?kD~gPW$9xf^ko^?%g1l)n6X+kWV%2D3Ji zLb+DW)*OA{jW}{)amvNKJcPrg7)K|w$h(%3lP>zrwKB(UriJU%b3A(%p3I&3;1NSI z5P}5T%`WWsL|8QGDuiOfih(9~a+nWm*}Kg~bvUYw>V82Jd{>|zVC+T~Q2+$Pl)29$ zG)Wgf(iyRAT32~0%eDArK_VbKTxhD2BKUpHwenY=N%sG9`#1iLS8(69SS2hJ>@c}2 zb>o>q6!>chS@hVu-E80qq$dfeV?*LqZ42og2aTu00xiqBOW@Y6sg|2etZk+q zF7OVIerHe4ON&gZK-u^qj|_R6sj;PN(Rqaivo|q{_3+w8mgP>55ySeHLecCMyUFdn zuSXmeO%uo7hPoH`Xfc>7t&y$ON~!#{(gZXcO4Qy2`>;jtHu)_0{AAg;eIqDpFZBH< z8MCMNzSo%yEw+9oSM$LqXqsr5rREgMK%wO!Y+G2rr#PQ$;vjl0Mv$1@a~Ypy{F^e~ zHuB~0K`B4|L(cA#LWAZPT6_FrInaEs0uCWzU&34Sri;VN+os!9FSun=WDt#%n7^j| zT^*B?L7W$#yQn9s3fv=S_neH!?#rldnpLiRbqS&%jTLz}a#5HzBeXsdtt`%K{Q1zv z+2s_xMB@YKz48d3ZTwoj8SUF@_Pzyh6um`>-YSyXO@%iTj?o|K#7*46rv3)vSgy# z^TB`~*au%6zrXSMv}_dhn{MUs@Mz8Igit)|Do{|`R}%g1YxO6CAQmNCthG&vk{I&C zq5NrAYh9ekuD;QXXqh>g!7!tdy&z!ijyQ24i+$?@n`=&twnnTUaZni6@c4e6o~<=| z5_=qtcKX!X2}%g^b~^hvBJGM24pyk(SGvmZy(vkQvHfIJdSA)rg7aon>O*F2e0;y1 zSIrk#LG?ubs|{0NQ0&>Sg*P08J4)L}=M(U2?(;oK2rZ~@WXvmKHk+c0;PZGMLk4qz z9`!f7|2kZG{UQ0=gGN{|1hwzNZ|}lu+&(k2Jsk*pI)_)rKrz3b z%A(bU_nJ2q>$Xs1Ic@$rbESIDo{&S%yfoZ%j6$y+E}+>roU3&&!Kc~NwfDZ^Z$D;c zn}^x&RyyaNdK=kx`BlCzDq>yjRzmjprfthYpwog|YNNg0$nD*LS5r>#BP%N%Tz?KHX|n^&9tG_0P!sAgC#h>&Nr&`Z<>91++*ch?`XMi2yeG2rB(Fg zfkSB4o!Ee|xDmTSmrjudk4{I=4>y(s8MJ%j^nw6T2S;&y_8d#W$z2;P=mI=-`lUfB zoVpmip5lG5wAwlQl>H5gTN-)+Zlc)UHcni8*U!Nu4(Dy`nK6`n0NeF@7bnxIj~kk} zDug+u=lhbq^_DkGS1sJ03A{rsP*82raAGn@8#9)ga!S9dD^{4fB*{$wmb{$BlIya% zJ$Awx0OcwsRZT=${PL=8f(p$>J1aS#OWMCBK1Mxhs8IPC2oB2-7ap?gA(N2`T`3~1 z5?QDXp0!RXC3=Zw{*VcWB^05<$jk;d-a%uj+Skf732EhdQ(yFwc_FPXtWS8nibnLc zz>me6bIJRNw6NuZgUOE{Q+w7|)Hyvo&xnweuVO+kaKj<6(K2QO`^zXv-n+&BsQ2j2(Dlw47;m-R~G_@q2PyOVVLtGg5V=Q^y)RG>h0UmX3}L^sLCF zCYu?*0D|P| z^10uVq77|u&M%hzfp9sAo&n};8&7hd<_H(>1XMeIS5yTpdy$g%D6?X{Qc80Le9L89 zOf&ZQc35ZBTWtVX?foc%b7W-)UbXWwR(514SpLXRsvtyl*A`qL+t&de@`~lc!e=E{`8{GGhj~UwEOR6Sg(_;c) zs<^BhT{0?j5`Y{(5gPiJO;5$veStf9JCVBEbRPu4PI&QPq;uZ$Ach50N3;oulfKTP zW$xhg>WP*?O>FG(KoEz=Xf%nKkLf*u4qB#Rf=L4(1=EZ^fFDr-`b_k5Jadnw%GvjoeVfgtVo8>Qw+s=rm2QhDkikukPX@xYCl1}A#R~N= z$1#}(-Oa9z*=sD!bsnT)WVFYAOl{l2bjz<8%Jm$sZ_&Cd&^51Q zQ{lCULQ*IP0Ajk0HuK5Q!6m+x$E{>xZko%$Yg? zieg<=@=(N9ei($&)vq&f9qpC_PxRbKL}AH2@A>zdl}9 z*=kWkt1lu_P08S6PXG0>6t3|1CQm`pC=l8&1`3l-+{3-U0{-iaG98z4Y`i)Q2K_F0FSquSxbWF$jF^LXIVVKEN zcsXJn)|TPO$Au5Hq~ttv4KnTd@WZVSijnYq#8<=4%5)gtAaJ*E1+1~y6ku3h4mOAB zMLW^}_3l2p!rXZj&987U@g|w$giPNKX*Rm+sCSo}Buu0)QVReg;nc~MeOm7N_<0M} zB{nQ=UVzI*F06% zthkpvik4e(cEH&0=s3`FVcSNlx!=oCrb3Sos@zT^sS%*U1LP2kiEp=T102xB&oFzR zMhi^av&=P%I$n+#_R%D#hHw#@r{m2uhzpq#UT$RPbtN){4k}FWk|MBOe05t?5{%5> zrVoJ=y~)fDFHn0S>4W;R;quEIu~><&rcO0;dfGVV4(2bAo$Bucfsdim_o(yKReo8F7_kc6%UJk+}oz6`?Hcr6k*8b06c zk?reiZ{bb#C&NuD`KkUMq=y_!d;Iy9n@;|XUh#)#9iZR`uja4DYpeeFV1!Yz`~tU? zj)5uyfEh5$WZHQR_w~*L=PErcw+{@_?oe3gKzU>Iv5X>2>R}MAvggB~{)_c{#2AuJ z-2bb2{I_*{0||w^M}166Mt8yk%@dQh38?<#^P11FDMRkER~u{aO#Z{cY;fqs zE58}nP=C{%7%Q90qyp`}*`FGsq3exN?E5=Lm2>m?v{a2XFKl7$d&^*%nug+NzH|Y{ z6o!XcY+Kgh=zxl6*^VWN%2Y(07Eu8nPgC)}Hqt29CFekaAk+rXRH%!G*b+w+asc(=?xP$=lMUPy%Y&pJN^ zL8H_LnGNXSV)ULwRgnl4NOL0NGZXp}sfL@bkC9l4;>B--{aR@F6O!Ls+kC!G%5ggF z^*QcSj_OKZUM_=GczkOdsWf@iZ94eGZyOEIr>R)2fl0<}U?ktdd|SJuqq;y3>n;g` zx`>?#f|U$|RFd?#Q{`-hWR_Ba+xiix_{fB2Vfqy)7*7)0YWGoXb;O- z?+T`TFEAvUdgq`OQt4(yUB^Mripk+}BnRL%6c)tu<~~1}J4PutJ8<53s)>j(VSy9H z!K0u|H8WY#)&5$BUadb;=D?-{`Ejjdu??Qj&+*SZP*DR#v77+u@taV2#bqsxuGzT2 zctw)JLivW+Ijsh!J~uL&E4%0OspIV{%NydO+X;McXcN@Kih*io+g!#<(iEyS%JYA| zzT|M|GfBtD5>P0gZ0+7!7bCr(*?kHyLBlwG!7t`zxJ!?RxLRwF5;USKoJ?!jXtNBK znK=bsTrO#Udywd>h63;&qI%NaGf=wQhuL6f#CNsCq3~&*FtjlS2yl4KV1IRfZ1s}! zt(ntiJ>I2<=f{*d6=3{i_AJ%KI6n^SU93vO_>;td>5+sgQdcW;r-O8AsKxLJQ2w0w zl^*ZZ!{6VU0eoMnrlZVc7uH)|)%*ZzZ$wC!PLv`kX$Er*iV%*ft&x0z-;0?6kelcL zwJvW^YtaQ)QlIWnD0a^C%J=zN00UbJGiZ}T%?)8Y)BapzpC*KfS#divL$|C-nm z26}RX7bbY>SUm1oDFyW;l!M!*us%%y*1o;NOaA7He5Y}JHU4yV2ZM$8tDXzUw~bfZ z=>J&Ob1K2;!NdaqaM`bFiu*uVbaam+;`{yW{DG*0h%AV7VB_$S+fR~B^AfVKS#+xx zPTWBj2%NmFJs&4<*w`Cn8JTG2OR89(zZ11x&7mi2sltk=3yI6negPtnV=`^YS?1E{ z@;u?)DQmi1-^wc=4x%9lER*~AU%(>mI*$p3ml7kQJc$md zfs?aKrFvOB9YYE~+)m2upQT~Q#JGt>1K6TNx0V?#F z6*x{0G?`#Mff_8D4PSUIN54MtAH=kUUR)N0T%2Zf^ZN;eC0X9KGh)8k*moM;BGt`e zCXb}#VTgo<QE4_ct)zjXZD>&&T9KBj! z8+~)*s!Uhl#5k2gX|D6|l{)^F#h)0zb@vDB+mS(Hxq5eFRPtI5*jVylPB%66Hg z0zVIZ&m3~O+e5atM)1*1BuUd-#jzL^UPhXNMe*d5mWCTsjrr3uJ3kF3I+pNbXGrQh zBaKR*Q8P0pv1;#c1hwSY3HXHfJm%#De#a6rSheH9gb@;EJ~DSIw8$H;j2-|I&Exr0 zVSW4cOdO4JjbMka6KMu;iO`R^bMC^ZONie#E3v;4XEGluCvP?rZh*Eo5?@rvoCB1z z#pg2td{15utPty15bqVLCfIWPy`7I9R}dl{+*Fe}nd{nGlr2ExyBlNDQ($1r(duAP zOm~}(FWlaqX1_AHP>UrsOi{5=dVq@!P_xvjSZB);o(=#JePm$stIYul3tm=w&lMuw zrKu|`2;4mY*6)!|x-bg-zbAGe7*Pmht%Z@hVKCKQAtD8N3znqb0mh}$24atcn6fFf z&f+R-pC&8fy7%jX(Zffz_dsC*BrDLZkkf0=T6ba*uNAU6gT4MmpHPq;Z6hUag6xiD zY5H21^YtqgyI|AJVI5GJx)cUxV{!BK@!=qKVWy?62O2Bp_V<{doE_;3dHI&?_xqA^ zeXLoxwHOAEoAr**REURlkKKjcv~m0fy8>cv>JOhyiUa$3I^E3gme$q;3nAq8WtdN$ zX#eVSu9m7@-e08RN(Dl*S{5q>4?{ri*Sl9jw<4!!IM9RaW=EZ1HH}Q-S|QS9Ny=6>G!Z(?=X5pk&1WYKgs(R7zOF*)_@4R(1D$oDJry#S_d4=9PJHzT0OCQ z@e2iegoE(>w4A!Y+=+!Mt;EyX*c7d3@K})z}X_8pd)2eCBin(v2A2)5=UhyTFEB<_=%uH#@>2~h}=kh;I4(a|? z-%$&G9Ud7^R`LnW8zc+*-Sb^YSJJXaxO4kYo5SYf7r9gUbcI1m4)z3rck6^sDv!xB zII`}L{%cC_>}cdh&HW4WNhc<9VJA#*qiVicIeIfo$Zqog^UGv#ng7#v;ZkMwR6pkG z9iE(`;9yi9J2gN}FRri9S{n%?YD11E=FmY8g`ie5|ATT($3$llrp0YqbFtXMuv@N*Ua8AE*A zVj*{RnNZNdB$>tWvQ@{a*`|QkZr-KP=ne+$iLJtPY$tzKT=xdm@QIHve(|PD<%ypy z&)}&&R6EaGttpup+=AJOx}|Qm=mK=!ClgV}UgkiI-{c_*DrM_Q^W6>jxr2qA?xSK? zwZ#(W7TjAW?MeD9Oq7`j2mQ-ineJ={L1Oh&Xv!H%>ls-*9Kbzy)Fi|tD0EAY6V8{Q zUj_vM;Y7+9BXM*MT(oBA}y;p+I zt9x5WaeLyRo&@fgmf0<*J$JcQW_o&ImUiVlLK6)PZct-z9rJ1(|5+JnZ>nVK`+Z_S7tZ|0$1?_LaTo`N)EG`w*NvUmDGL3 zmuvO(U-ct#+WU_x{$HDW{#&ycpUzbxL`wXr_1#8cli3T6SK+<3FBi9i2!N71^xN+k z+!~_W7NN0XER2wiJ|lN{px@a$aUW#&a%0t>hrs(q2xhv8FCj^=t{_XPUP@)3%*`^I_1KxzDP4YAOm{&r+xT{oK~l?{=Uy?bjE`%H4-_`i31IBlnd)l1nEB~AuP0}yv_Kxu|@om z6O{1pt3aCz=BX{wi`GH}T)h7rJ+S_>pAzEFMe2J+{DQd+6aO+6%yx&*zN1CZz{Kbp z$y)56#)8$n`uE_0PqfF%t?&I#d!Q=Jm;7<*S^Cv+8hi(>|Jvd1=OowLTc!J-$Ve1r z9iJ#uw2A5boreG4(?yZn3P$?~xkshH-un{GRrz>`e&pY7oidzKZu~!gbZz151qtyw zdw$S=Mn=ZLCh0K30|#H%k$j+Q`&qLz9JF`+>7D}pM-csizjRCjmsQHGYpXaaX&Y&s znp_wrWgGcKeC|<^scC3bSb>)#8zAe(08U$!l%%STj_ml`drZM5#!r#t8PK4hbx(?+ zv*0heY8}-RR;9zbIB%Y(UIacEurvo`-QoWwBnwW6GZW=|m(5s))g6VPqxFi}y(v4M zT{l6VG<3QG+<)7a>M^P(B&B4`tmi5amRrVnqPYk|yrtKP%Z)QrKX zjHIlr43rPRCV;5kf9xidvaqI$OKD{V=U0gi=xhU8SEVkm)>BT&P;8wp>YtgOPI7d7 z%)rFd!KG9^q5rQ;rDWk9bxK-V_944^?PAt_15#DpR!Cdbv|9je_CGJL7 zC**J8^8WkAo22R1yL+d^+{+Mm_dW5+fs9Mxzh9hY{;n3D(~2dZt4D>&J+cT}M9MJGn|t7jkn=Z8p;9Px*R zu#5LUe#p``pVInwZ!qgUJ^5~|Z(yK?DkK~+S}Eae=y^#qH$PXO3e&4qWoG+`iuW8S z;*SyYzMsR*f_Hmlq*r_f0*g{LHsc=79rQe9MtujDM18a7{>R?Q|~L+#4)wGUdRc6l~#+0xo1 z$V{%INOj=sEY+=Dir5Zu8eCN=DxO~-?z7Cy11mHZQ*;@y8VBSF-})|K8_aR!F6|c zFZ8)UP#5taHzFqw7UqAiSu(lA<=8AFwPd#NEEbs2hk~w6Dee zKqQk)F!4=^w#js(JGn|UY2UZ;lF&$D*y!Mgbvp=lAyllj#rLVmE(%kYk3d4!ChId% z(JYL;*~5_toQi3?u`>1OWoV}H6@k%L^Hnb)A)%=XC#ut(@w~}q;fA}m5ctw`408VV zsm)BfEjw(@&l=0k?sSztm#94UGyRoj-JT{l$CBM0*o1^Va54WJ&ijzX785_FF*i5& zRB*#upxU83hH6&z5`qJd^e1mrmKZ85<$20qAa4$eD_5EsHDkkYXom_#^rjiE-ou88XoRCYE-8e$sHV6<4shnEYNSGfMR-hd*`49q;lK-@?P*g z@O>ZfKKZJryS~2O*n0ZwL*f1A=xCAKz$nt0xXjFfWh$Ac+(&X=XFsC~UXB)yeb$V7 zJ?s84BO@{-1X=vip$uA?X;+ewb2n+}RD~ONUlPm4QV#Uht5-)my_!rq)uB?4H!7`v z>tf^JTyD%BR7~xS;x0+Px%K|wwaoxgS7*0F z>W(5U@~pDxzjC8B>lT6mJ6@4rSzUeE=tfF9Q@3i9>ET0r{E~K7dgjo($c)^GU zG6cK9=ybIosd;bw^3XC=e}7Nz08$L0X?L^V3~*mu@4=$#f%UD*<1-ufml-rpH<<`C zCbDeolv{qaJTOdmc5(4^{fQ%V-9HLf1taY;)3#hGCSA5@rJc!G;JSDh{X*9F+!u1J zSG(+HDx$EUA(gMMG5)lx-lnB1$**`wK6pJFyuzmBe0=l+)|Z!E@o~bvnsTKB#b0{&-b8PwYoJPuYO2)czA$dQ*b)aa4m#M-n5?(9NQ7KJ;=_uJx2Br~k2hKK?K1=< zrKDnF)B6qF7sA$;DKMSxvftfgCQs=MWb!KvlFe6+eR&zMO))-AT8r#|Cy#r6vKFPq zT&YnC3F_$JXn|e37(cJvPwB?<1yM z9d-)|+6(zKZ>9dQ(nWZh1H)pMC*EuZHX=C2rx5CgnNqmW3=&rb+s19W34AEXb<-+NjiG$4dW(9qF^u(n)< z!(DDq?!y~Wh8~7^76Vi|cV6CbJQq5!E}|%ePB|DByv5d_e{2DpsX+;D8r zbTlFfI9;zHEsbPI)8zPkYY%oHr=rq5J4;-IO(VZlZQ6-?bo|)kay^XC{M9SA)xPp% z;Y}G((nJKIlWA*f%Ol}ed-1ED*gr{*eppEfV`5X25WU*_K66WR6DQVFjusfGx2V&1QQzmXDI^pt@|zF5m+0IoO7gx3zKu-K_r$e)ak zfPf%a_>d2p>5+~@r##}n^emOvLAt?t{psbJBN^Gz6YbpicI$W+k$t^hn4*MW>e4o^?l%jvbgJjI;z z7d`N2OR28rLQ6v*<$}LGQ*>o#rw^byr(Ree6&)Rck&)5umkn4dyX~1>yvfiPYxU1s z#qF~PO%hInD|6o9wlXi12ug*CnWJ)WT~Td=6RtkVlCd>Yz*$^ej7H8L?qKOVxEd|o zTOgnKTuR;s_4YQQB3+13u0TGaJ{D3SAD15cUR_-LerGry)LCzDM$u>aA=2F4y;9xk zdo+~`pgsK;D+*`(vogQEPM-jbV+x>JaFyj? zEC^HUNk;yi)*YXQzbsZ@DHO>2#s7N#4iXN~OqKC6CGdC^{kJ9 zwr{9gZQMQYj+D6`ySEt)*Rnkg^ zo~PWg!6LjL^sY~-7&7rK=dVufN`YepAvR)i(IX(gyimz(V3)tz2Goag>+6#VjC{gC z)P@I(qtDuA3r(KXub)3(`Hd-(ts%rb@a=R*F1&kGr_}^e4cEzI7J6~98l58QFCsT6 z%=wVS}cI2^! z{$>wsC%+VAXMd#2@=9&R_!dnc{z;=48z6P+NB3*T_ovJ}?5B>Yu~C2-4lopDC`)!k z^PeT>dF~yQR{>*~DAVgEY!ysvINpfSD7QCA<(>_RVEy*d(D&+z6xLppaN^|ct-!;F z52?|;{rFg$F0kd0$tpzs{ePp!irn2iw(vbhkENCq-Kam?qt`AYIlny>L4EvqdS-jP zq~Y!z@{j)hHTX|>4-jZ*Q2e5vJ)&oj`<10psvAV>eE<{8TQpzoinQB1q{}k>=>nC# zI_fL0KibX&dho84)ayqZb*VukzT6DiAz-TWM2e;3QE`!am6j5Q;Mx;frA+aWP67kT z#T|$2gHzrok0q4(8yK%^>`<6ZCceCM-S)v&lS4r#=E=S@aQ|AGWaOD}wl|CQ071{z zeV2XCV-)t~WmPaT(qcEBwgC*p#C#hH>AlhcjBc{K_G5{Ek54-9Jo?O(Ppi{klY}RQF_SK0@z$Ub!2map*Eo z83;T9q-e)oX;kz~bFz1W2ifuo&*ML9l@duwrFpIt7g?#cB6O4Z;tGD&t+Bzyd%Y1> zl$k5`8;Qi_M9psJGb8I}tb(^=n^fy&lgnU^sj`&FQ{E_(LCm5}P3_otZK`M|@~F*o zg1Z=(0g(v6tV-u~c{0)?z8c%fT&0}}*^#qH;Smv3)N--;2Grq{*kKQ(q@+HivBj80 z3B4yj9+n|LUK<_!bxB}UVFE>RX4Ed!EJ19zI42nPS@fNrS?OFn-0bsW17@hpVXU(7Z$;C?r>r8PAM!gRT2}{?PL21QJgco1 z(wCvZ&f8m-*b&_xhnFVtseINPn8G)YMlJiZf$NZtByzrO*mT}zpi|!lP}2Dh5%Xwz zGfQ1n^+m#S%|D*jzzgMcdqQfYe0Iu-JoY6^Bq*Oe*ZLx>tc)=|Jq^T&6VdtT{o8!7 zAD=id%o(X%dde7CRSk`fdK4V~jUQAW^Nr#vS4F6+^ojWS`QfDku*KJ^DiDY1@FRe2 z$WefGvD6If;_weSNN*63Dd1ZCaEFF9Y56UqW^E({C_^j3Y>t}`)T2i zlYhZvH_Fr7+-)~1eSVwr*y+kZg8IWX%2h*V5{O5#ZCqw}wj`y69?Q*S{Ig1x@wnA; zce4D~!iOY=xu$n_uYPxNe_5;#p6+Wko%_P;;kA~uTJ$iIe6iSc!=sox%_Ta&b2Wl@MCc{Vz7dI#i7rRbp#p9`r zGm8>#UKp{}B^_|4`BCuLGb{}|@g7Du9N;{-QGX#R`CarOg6N}1_iq`N?ocnp?jhXC zNJ_r=-hWUu@;fDuKmYJh-}U0nt9)|`IYB)VAd)QtcTO3M4sC@CM^zklEF z^V@r1hxhcxN9lDb9Gj&3LVHp++V&j-L;Ha&xVX5#%+74)LM_S3+f@#i1H*QkwasiM zKDE`h7=4RZ_jAYCi{ek6wQtHSop-bJ2l-CJiHiS=k$pTF!0P9#v;$yFYZY` zdGO%Dt`I^XmKyFotjQ)HBJJwdBrWu)jZLDfjwe7nx6W?QRr93DT3eTVVpk6NM91R> zF$!ePML_^Y_furTHyc@F@VT1aB&oP_h>7=d0({BmcpgrfndZ!Tpy-|X_Fm}Qw+57` zfV+?0KU->X2RGCR{%dQ9cd{?Ot7uZOMneE{d}V2_4mOl;KI?iE-24lhQR_>#U$fWA z-h5o4(i!d6YH=3ZMNY`eYAg2X^(y|#)kD|Ti*x;>B*ql}9pbX4LQDfe_l;h%q_3s1 zvDhp^cl!Iy{%nInXY`diA70a7qwL?!LYvNSk=F=tE8JJRPQGnBr|#Ae$ZZ;Wup21v zb_DjQC$}0Sc#eN|f!0j^8v59sENqGKGUer*Uti={u|Zn?Ye%;< zdyiE2EXZDo!3|79+E>UO4Nfn8c&IGu)cXBff2?xfD|+%l-)IB#v7hdqN7FfT;|KU% zA4uAY>9RTsv<;O&Jrv-K->^F8ffUPM3!mydE^fu(r<A3JO8Sqy)jN^{h35(ObVa zIxIJIRE0lfWyRFc>-69z8GasQ;8ll_4>tEEjS4PXVD+bGjr4fY-JULEvnP#*UWSA` z@#vSt^}C--8opd-d2BUUg6M?=HS`F}SIYy5vSo;~cB|e~PUi4A{EVMmVVKM0wHH?wOJk(^-qwDYp65DqX7Dvy* zVzFAN^vco_Cn9L9R6T?sL_}g%0@K91bJeNrN&%D1d)r#8+z?tT;J*DsU4pDo3ziBh z9YcrpXZ(V!yrixq*yw*zZ!ZS7-XVwZ?g>QK{5PMgWka*&7(*vo1Ub~%S8{@BrP zZUs)z;Eq+NZ|Or}pEaEcMV+u?{hs_$a5J9Q4Ed9fi~i{Mt{Vcv6R{^l$3g0zYws(8 zIZ2&VceF_A z?;JdT#mF=)&)81QfEumG&*AQipXBP(O`e=IYLX*~E2bkOBeK1)QpIBD_1>6_3?=wy zrRT9lY>VF4K=_L!B*@Hc7g_a!^U42skKSbO#fJB>^kS003iFj;K;$&~zq^;^9)v|# za26CLct|i@ z(--zY>_xHQ)gtuj#wXKfjl$W5@px~SKi&V3d|LO#_X%Kq-TD977fVj`Pl$LfF@gKV zc;h_l2?7Fwci^LzTfgVFs9F`A<7Ju={4Sf7H3bSuF}PA#wi91+Y!aTQJ3}myFiF0P zz1HQtYOdV1;HM2(v6n0wklNh_#lMKbPi0yMVqD9?{ z77g4-Z#xF6?H1CBug{h@{M;SY&P6$Qi|MAYWJnhhJ0l2O)LUm?w%QAyZjY}=>DlK> zM+#B@eg=#!>Lc(yZZY)XveekPczEpg?UHcAQaQZ{sXJ=>GD&g&{uvwAlcAQ&lyrY9 z2kPRn(3rd*Oi9uJk>D|EQG+7G?ylX)=qQjJ&>qM?ECBy=R5msjL?9zV>z8O-Jehmk z9{t=tLJnvIwR?T+FlF=UD=Gc!BSJelI}5$PbL6UI4u`HMk5})WQc(u9V#jL{@AV>FX%tGdV#@I2_SHQoJ~0j(z{^{{31_{jWirqF0Q1v#kru z)i#b?i!9gg;RAPaxCy`Zj>`F#c?sC8&t{ok3PxwqKC^D;rTRH^WJhf+69`8g=HDk5 z{ly`Y-v{s?Pz)-yB)xqbfzcZE_H7n*sBCJ>8oBI96e>K@_r5jX!H)sz%E)BY8X9AS zQD7bUn?H9;?gkeDL5}fpA~@Z1IN*AYIDucbgpANA{v`0`ca_Y`%4I=6_n~!-AD{YF zYH0l*##ZOSky}28@oHk^u1#7*gol@@e{a#I;{b(rlCQm`)$9|Lk7ZEFS=Ft0N|aJorQb=Z_ym zY=0jNwD;dUfk{l(=GTzWOES#43M0Z#>O<}SkeGdV*Z4~m8md3yfrW;Uq(P`5ya zE=l6)p_gwI3kQ0|X!Kcz@8->4FUuRIUOn^Vf5UHmx2TStP(jsOq-`vtlzN0k=eqkM zvPtM9Yy3ywYT#^_;s>X+yHUL{^!r0+fH)z0F@Uoss(~kgjV{`Dw?`i8Eau0*4jM z+iK`pp;B6xS+uY;$mCP_U1&irzg!G*8NE7tJKO$bb`tkFr+7x~sQeEf&@hBgRLOjP zi4pPG{XoPN`X0}q{#3w~UJ&F%e-_AIIsF57mWG-Ij!rsmckRm+eM5QBqiJ{rqwi>d ziegNcAU5iPBsxXdn@7-Qf35+ZYte`Q94*3}|Mq6Jo6BY_bh^qiP6OO6XNmaoZKk^< zb6I1HO5sYKY>kH4&wr!X>iz@Kd*6O>#`_`LXEB<1zjo5{aktCDN5o5q%ydU&73KPX zyH}%$;w41y=U+BB(-0C8p6pCUgR(u< z@6h-$=!F9u~F7;sKsY%aVlROm&GjxGht~CEj^6~Eq%4YXoTXRwwKKF zn&{2W#JWEN0|UjQ`v8H;<;g^E)Xv(kf@yhjakN5LKl9?_;~h6rEJwh(EMTdfRf8h` zPkY}1)zsFlt8x@QsHjL$DGEW9sv;m=MT7`~f)u5R2#AzGfXJ9z$k-(T)I_x<;c@!l9`1Q^L?v&vj^&GOA}Z5ri?3DsE! z**s_N?i_1~vg&(p*O6xyFWssXIXhS`ZQmuHYZ^fcew{Ex2;))?twRrPz1p0=#Ibu7r%wTB3yx9ss=Luf3IM_@n!S}sGFQ{*cfI13yszvsuCB2@l$1-U+6s&GRcxO8fhl3&tpbgPd7NNh32pq`Z zZ5pdqIH11u!uiSV`(OOB@1sHOp1Zo&a7gQ}Toa80Nu}NB5a~l7vefdOrtoih0nNx_b@564cbxfTXCP=`nBdh5`_2;yZX-3VCHNrkaup@JZ0xjzo%v=1h=H@ z%u{jNXZwEkQw!FpQb8+5LT#fTuomjF&G|?%$C+zAvNs2FkOi~i{`u(REh$eiK|Qf4 zC$??-eDv<{+|Y3861%Of!s4*MhkeIAP#6ec6s0vrFLd?4kzX8^)x@7=E}Dhkr2GT) z`+kq4*p6fuX$#hEPX$4;>6d&QWb)gvq4)ZpP}nO27Cm+-_5<&@h!T+wo;I@$hdAn(`ho50Q`GC% zK{LY^@7hu4N_t7WgVP7IqVpfZX6|oJB_j(g#jPn-6!I3#W^9X57^ ztH^TX7FP7GVT$Jyg^tXD@GqSv$a!O6LFj)|g_U$5S=6ahdhJ87E&<$t?JW}DU@KU}RDQ1soO-)wxrM(M5= z{8C~NX~1XQ{A_m86Ij#(rmU1r4}Ka$_%EPuMYpJ3k;hS#8TYoShDOrYS!0-;36zku@z3USaJyV? zoOHc^>q+jIO%1xtUf&6W*=llNziQ_+4s}Ro&CD&WbjUYQi!twYxr)9QyJ*E6uU8on zZ~R47(y=CN*S33R>D!Vede6syke|-@{Q08iO65b4f={>@=t5c3V|XOmqi)1u;Qg~( zGWO0>&%5<;dcpzt#a{{DGzpWS;F|@`#|*M>ytXHD90Gfn!Yw}h!-@MV75>PIg`&5HMV*X)y&B!Ca68K(LSO zPo(3hYgHBG^=o_OGxoUe;nCC+=NfsFsZa9h4;|Nuz1aTtYEQO{5cY!` zsp+?ReUPCXx5INuWL&FKvgFYNFcNFAle*qaT(NN>l2g@YwEqps*;El5iXeoR642c6 zK0`>0?bu7*JH@*k#NQ%q5(Fq?E7Wz;tG?;oR4Ub5#!*2e87-RzjHz+C6CeC$Z0w7m zC&vJU1bb2#4zQmR83bdSjSo$N+X8tgP1b3kE(cMSW*1o*k*c?;I0J)xM^N+$oYL2{ zU0_#_OpQI!HZBNNR6J{An{g}c*Iafbzj6frd7|ZL|J-~!!QwY6F+n|(XyF+fF&FZ7 zv#Cvy=lQ1XR*=p8jFxH{X263F$=GwMshWI&^suXt^0MqU-{6Ky@QEKH&uT{i@&t-D zj<<^M^er9|H+}yy^^mkJa?Zz}dJ<%{L%#02HF$k_OcdYESXR)6i~$6Wy|I}F>_{ln z<w6IOlvo;$HG z4j$y@)_{_ua?OM4pfnW}6vQKEDVV7E;I2`b{lK<7A6v;7e$#l?4`(l6mk$bE4i)^@ zVD(P}t)kJD4tsRE$VdooeVu8ixKrk?FOj@%_`ov7nO+D6|L-H$zuTq1LElge*Y|w9 z*}@M-BK*X)1NKY`!STo2ZJKU-F_XT38!K-ph^e~O;uFbLge!Z@CDS1NYQ%ihrY0iw z-En5tc6m=i!Bbqe+?ll$0yc_^Jd_|~y4uiP;cKo1%glMk%v>(4Ts3VP=sbdcrNwcD zufOa}cUV&6GK8yDD7uOJv+g|_p?S(?n&x_s5Sl0vq4{;WXGBv=OK9gSQylUvqAMiH zX#I&ovAqyHZPR8p`EYPkX0k5wPqaPG<>ZVBkK(e@Xiid$0XScp8qIB5REpgzda^UC z5aa|ql;`DUD-owKl{86M<_%`nzx&Wxm;JiFWMzx>v_1VFel#OUF8BD{E&+_Pk~Z`) zV13VGS(XSG+3nA%^-4;kE`Wx1DK}20Z0XBXrfKGZY75UNh$?!tL`@AK^o3^`WPL5B zJPYBG52CVhIlGjyO?(B^Pmai)nN0k~>)Z2Mv#sl=t6_=c zZnyfa^u>n}|Lr$gLfR?wp6d(6H>Zt+;v4s7R=3KyG#reRb^L7p{76Jcv6d}kdBO_p zkjVGIu--Ufk(7E^hI}sLff)9FcTP=ERQ9TF%ZFjXM@MgioDTq?@#ToQK$xQhvyc+# zwU9lw$g?2PKPhv6uaIr-k5rq^vgvSzKWW++k;G)*M_>&jG-0bAlOnEjF7mBPj1$0L zT)<*~`l2I*#99neujsz1uQ8unG_($DA6d$1%l$o^cM5p|c{>6`4Un;b2BX2}at`cw zD8!rj9!*4y*X~xZL`bUU>{T^V;upcc@;ec9uRV*i{cY>*?=CL2xNuS%^A zc}T0r2iLWt_GZ!2fmY!|c(k z?A07?K*@$5yQsxXTGu!||Ebw9I~F7e0*f;kfraB*RTfvqu0)-id|HhgW#^8JjeQ6c z-b59k<{TtGjNEhk?Prt&5l8dphlRq|3kD^L4da#&P&qJ_7(^%vH%19K*0E=S|iRKV*4%3KUV<(FxDvWv^%3>~X4G z@Dw%5`fWbO{ChkC4-ROaX5*4f1+cQ~jJF{0C3hH)wwn&jY=g$o1<@bar0@+w{&Q9Y z8(Mfrh9%2v*^y6T$8&Kot4(+%mK|o}SPV>!B116J{=hwf6Vu11ct1-L^yl@!^scB5EdL ziR5NvaOS_N{0)>Y6<*T!azL3)83Fyd(sJ)PD5^wsk5p{x3)b1O|h>mJ2s z#~$Bs{5tgjh`hp6H^IT48>SbD>G-=1pO-?WmyZn5=!}8R*QZ&);s0bY{;)`kYv&KD zzqjiQvTL_3aQ=1&YtxiaU%9epJUt6Ugv6vJMW;!3K-0hawxA&VNiY{`W{+GUmzLjxP7fmC0TUe@S1(wpYC zUe!<4)XV(m1$fdxrjVlO1Wg6*IAt{2^CgOE;pEi458kH_xv?gs9mt=r72Z)tB9Xv= z9amOP1n|keUtpUX>FF-EuG5yE6c{n_{W6!Z4V(ESza-dNFjCB)F310aS^0ar#Eg*T z;^Z(}v8fpDO`~&IHX{s1kJFAn?f)Oe`+v)jiK?kkomhOp12{fK|02BqhISarz4puc zTN^Zp*qDi6)PA6zU#)(Vt8g}Cn>5rGv17ztO_1?c&`ll+Ic`uCp89Sxe7(GzT6KBK6xgp;Aa;w@i9>ZHe$ZPeb3L<3p^n&+}ValPP zFo!+U)=q8qmB7tcpn6MtRlxFXYDVGhnd83tMN0h&uMD^IQ}6BiTb{Q+Km%3*_|_6eE$ zvKW;zSygp#Bqzqga~G}n-X~yDjSKGxmk#zO$LG&AinX$jh5Pq8cl$kr)!aF)5~mO~ zWMuY9KTM@50Y`ys@5;cpu&F#!4Jg`MdnNXeJgVYU5+UCI@0}N7a>>&cMM}1Nl6CYB zetM>hsXy7AU1;%~JiVJET^n$Lk56}&?T4F{yW0F1J^7zQpHsUtuM36w-zpW%bZfqq zV~h)$F{tuJU%7InrwrtPKV_`uWKVb+nMB7%6d4wZW29voVn!ND9`xS)b2cnrn1Im* z5MOWaSVZbilW^b{XYWYS#ltf3&Ci|&mdje(X8otM&5ShjZLV$7kN&LYBJAWzCeCEV zmD_&_80;V|L9X1v-&#S9yk6?W(ICOT_xEc6E7-W~-f6hB4JcyLb`%xmn3N{HZe=Gz z2tssQw~C;`0yDDsa%`R9G`rR$djBVJ`>JayqX-iFiH@Xed+ z;{Iko>VTb9wgeB%JP`;GoXa7+>NdEuz}{pS7YYJG5J=&`i2@yQE+K$yZAP%#GYPH% z^gMYG4jlML5GrIQ z`E(|F9;Vh1d}^~gv#D1bqm|^=)w#q?H3>t?5vhEebQqQZOkqgX8{!$4PYOfvMFCf9 zgkha!KHD_p@|x;yX4mNiyHG73^zgqS9BBkt2>Gjze}-YMsC`%7*oSzh?+fWk-&-*i zFE;>fjo;gKCsYn=12yR0cW5@eT`yL@-0fI|=25t+`evFn@!*p3P-10VsZH*WMXt_s zY3dKK=CLISG3mLlC@KbJ>jer9`JmkJ?H#r1MzYD1K$3$0o1z~f_Z!1UZ*hByTR za*!T=of$w)An%B*4LEav+WhxvCvKPTRN_L1wA!;82yM7_S|o5g8+Ti&yRN5&I}1c? zXu3%#xHEPIa9@d_j(nVp4ei!LsaRXvi4?stJQ}G$S^R2QvHbZI#3M3s!Ur2<8|mxm zU5w#SbonH2D@5u(wpoH5Md+Mz8oDK^SSIUVe)e_8+;Vn{FebT1I$6S6OHfdPt3Y|L z;^J)v@&Td&pbn$^9qqc_pM**h9dC4%)Nkm0p0`aB1jQ1zjgCa0WxLPCm3cN~4FRa? zt+@uMnHj)v6O&O~t$Q#LdH}4}Ro!?*V;#846OiEbtwx)^s1FWxHng`Yw}OUX=@<7_ z=9ecKi^E8`?@~y>*f8~A;6O>>YyO7vD3SYGmA5R`m&zrecU697 zES`F&hBs7&tog;~+(SMWz)d>97sMV=RD~RCo9Lrnx?)h@JO=TY ztj4uLfP?u$AAZigreoCdXag&Fu!;k>7obN85 zgJcHI5=Mc*qYZFT<(D(w^z4T)Fkou1mv&9bIlQ`~vo{S0=Sn7}g~10z*H0r<#}!YV zqlL7eTgf3D`?-kk18KwTv?3R+T~P>nIMBuvt9DU`nWcOq>>>6;8|f^XVSx@|>|bkG5WOg;GOI>+zl2 z0C4})@N6C7J~J8Lneg@fuR>Mk^^NU@;V<~v&b_wd9EvLrddR`$V$lD=Aq?`f1b&~8 zU@2V4=jTrVe+}gv-(~7cN`|jhKN;jXHQ}qHNK?Y@b!v}$>os>30IeTcmeU(awx=d$ z8N8nJ7fijXuX^KMPd3NNj$xp{#&z=RLy8nbs59H(&4|kklj~%g=zG|mo%gpv7S{a% z$N0kRb;04Nh{dUW{}QDeO*bxZC*ZW1#(6HNnX3MgHb68O{_$7zB;GsX#j)oIU)V-XR z3cE8`c^CzNnsBCv$GT-lmb;FRN+w36=Ki6N`XeXz69+_7xR1iu+?jiAFvHS+O|vb( z{{1289)1YQ{kIskoBJ0^uEM| z+FMe-OcsE*Nx4_)PAtloy&ENF4(kZ$MU3LbAhm}x^x@xm{a(~=duVHo{rw6D> z>$ zHFRwM>~w2$_sUolF%VgI!LiK#;Wf`fqndTI zu2a$UDmovlBWq=e`=hc8AD`dd|LeiNi!P!ZS)uTku^ieVLU*=thBzIL7U%gxJnJeg8WC5EuDs-@`1;f@cqnbz zGMrzAM~?|nyfE`3)FWZ&OZQ}^u+t9q4YC`L1C4RjT zoIrDENm7otKyT1c&Fx8t{aU*uw``d=8ptd0CQ_i2mW<^Ejj`8G8xua% zQum?6?u|i_@r$@0LA9gFKHaMI_8ZhG z>ONCURg@dz`PqZ~aK7r=e(I-uG;#<@t3@{E4<>4uy^CSNtk$E@O1h<<->w&EEvJUfz6@uk%k{Emx(yEr-_T z2yy0#|ISO5KAJr4i10D-eDKd+lBv*I@doL%!4=>lBv@iAtAF1boOrR1IoVH>Its)zMUqa}r1ytp1}V8=1+%e29KfM)lUdnh7S;Ix zC2GBH3!sQm;<_so04+$PY9g3Fc`6?dPI51OTc2m&(Da=uRe3SD8ame$E1ixStrH^m zbyvwsd3<6+5)<9W$Kx%cOc0e4th3-O(ttN5n@myNU_i^yNg%D<9M@!A+!K>`X}#i&39EZd0D zrJsaNR~kEsqc8Wjk$8U(uBTlrBHzr5Mnl`ez&#;jYNF4wBN^x3HFI37}ihyZTK1bZiR? zq-;vBB3=2v{+-^ziI0BQlqgCk`~#4SQb&}LS*+sR`gy~A-gCgD&f+&1yyawL$;#<> z173v6o0UlLu<(t$*p@=Eu(2es*?Qaq$$sz%2!ZuavEarAhhnf!onoxB<#R)>?uPlU z3W;}@8XhxMKj0r!A5Pr5xeclo(H3!#BH?KSj2vmS7J(D)HurLr^yx^$joWpP4$gTR zb>X5S-3f^+6+~tE`Bf=zZ~m3C+Ofnr4~@2Z#QGXyv|51SoJ7yDC9ZbXqQJs<{|Hl! za3$xtS1N93h?G~FG3KjiZP}53HxAq@rg2d#_<&+45SASY(MI^SPV`qX3u=~kw>!q2 zv2=v+62Yh?B!E3GLg}ehkwmP25@?ugX{=f}LSdK?lBe>#+>#bkMaJy$%Qf<-aczbA z_@VV^?-h4?d&R(xg@6iGvC-+-Ur;=J>N zVgepgvr|so;Ah##JS8{rbe&|NsCjiYlZ&y^IC4*+=?Q4cWgnB4n$n3rr9;u}wk@M~ zT-TanAyhnO-XH*EaL0=&Zl@ z^xT{+2BS)&(Rydxm@*55tQY@|%??$~o78+x<5$fZs^sMzJ}?$X7rAiWL&EW51pOXaTeihS>pylBd9Ipl(VW<-ZP+ zX19PCpZNhS>0Ypex=?tgqz$e;bnI^%1b@3FSqgkgwgq$K0XJ<~#ft)!`13K_Uw8lM z@b)iJ{UxeDlLq~zCx7Y5UwZNfSixVL5V3>s-pac>B@+ E0>VV%*#H0l literal 18275 zcmeHuWmJ@F+qR98DoBTl#0b*ek}?df(v5_4HwZ|Vbhm)CFd*F}jUZhzbeF`y0N*wH z*?T|FTJQV4YrSiIzrMA940Fvr_gwcC=XIRNd7LLf3UX37n53B3u3f{CekHDS?b^*X z@Va*Q4!BZPA&YhGn$&Y?@t3ciuWz+rx%VGYo$imXx;Yw{PiPu(^?B@^@b_{)ulm?y zpZPRCkm>hG!`f3VdV9s1-V3E2|4hS9mK9sBHp?x`lhi}xN%1^V7Fn?wdXbJO+~kJSBrw#!v!*x-V$blXHN_i9m)(6)@4iR)A(!O8)03 zbVp#$+)ywTk(=l#5L}@rka68l6ifgWkN%r+9Zd7(pJTc|-f_>SOBu|D4Vb8DF)Q|v z2{u@(J0>ETL+S>^C`qtZF{0Uu(9A!627#e_^+RxD4t;3-jQ)cDQU`O09=)(iCUs!y zvn8M#MW|kt89@dZ-5;NEpunEPZd8DktGn~ZhSX_+jRzKRCr89rNmt5O$pnYqGZQ?8 zlm50NxaVK{h)Ru<_56gv$F-y$I;U(+zkq;^C5_WR=P&)BbfMFdsk#18Q=2O`D~i1w zBD^F^Uf}HZ@O&GKz~NGf?+uj;Mu2*3L(myQEtt8ISP9Qo6Yx%<3A}Xtwm?{*}`|EX58=mYy30rB?EF3mAM&1 z{$h^W*Acs`%ZgFqI0ZHbtu*G2{9dt24YX$M6!|cb$0Sd%zN!=jR3k&%@&D%|_`f`* zJDOoP-Br&J_rp7%v8`=)@HofV(@^u{?Vl8EEx$~z^+eep2oOcHpB7^O%S`W!q8PB( zX9D@&^o*1{K0@`zw>lQ!Qy{&N@zs#0kjDp;?R)Se2lzc;-QXz3Pgs-$f$|25D+ull7>b4QA>6_KB} zOQhmEIZc$uBfuVW+}m4dM?Tv?zWMc)Gp)^dal(r&?o*&id%w-8xj=5M=W>m<+`mU( zcM@w=t!>wJlsA+n_H7&6t;lS``rsB_trBxE{kJIF8 zwY)BaK}zEB|FzS1pI9_LpR#4*xXm3Tz;up)eXW~+<135SG?8_ zT35H6SMO=3GzHzBZmWrFw77}1x7Xnl7LH)I>Hc#C+Kcc1q`#*8>SL^M`N>6OsJ1gR zQwa$GIZT4!d3pj`KWT_(<`2>otzo45AhGDYj@WYM$bBziI!hnHE`4GFi+i{)%vAJ- zFDP8>x^aP>Wf3$5hsq+1oR=3$i2V_M&teb z#CjeteBo4qh_)4OD&v(61u%&}m(}L5rmlviLI&T5^!6teg}`XNCy)zFs?u30nEvyQ zVzX#c0pg#;#vy+2{ciUPBdYbuni=dP6a&jj}KvW^FcgF5te%jx}O&0u*3+f=b7JTq}} z2qs;S^-Z>TUHT6pOxrgK+0N#;CMs$9t3HeqTF^1k_)aTE7*!^)Jqv9A$&ir3c<21- zAgkSx_LjObId%^5e5qjZ#wi#HuNNd$g~)=MyXn*PkENEE_Li!tzl$^h<~PoI2I2^( zey)DQwAz9o!eDo~G&)WXTz0HPip_a_@?K)~&gi5AV^U#dIuAy)j*EO;A6giga*@jOlPS7HbIQPagiZAp5@I(S@wK_nzPbdx+~aazuN z#J04p5m(^}#j5X{%%w*J`p=bn!XUo8h!V-`&Th5Qjx+(YU0E(3`?$cH1zjB9X7qn~ znA8}$HW>w`{0jh_9s$<;oVWF?j7tg*? z4>jGeWEvnZ>ty$Exr-sMBaSK~ncp_-JV;G&ZxFnf%pNrRz&I#eK9}c~la=(Q>l@^{ zIJQ%8eB-33q4~pHNAEW-W~z8+jg21=zYvBCN53ouj$1In))9ICi&P9eNu1F3HJtsvD+p%M=;dqTJpvw?<&7Z0k>^ug|S;Heb$<6DerU z%xYGz##+(SSJ=?q6($?}SVP8A!>4iTY)Iu=S=8ToQ;`6Jhz_e1Z*zd%Zp@BL$Z!8* zYUHarP3wT>l4GnZO+X##?XSFB9Jxv~nqRgz!%m%?*Gf9gafI6%zuRfPpyrP-?G<%) zFyWrlEcX>nPEEFWwJLe)>T)m_Jj;V}-?)*zW7;3~UZMEu;BO20=xbCZIRJQWapLOE zUcNH2I*kNpBv>Z7_R?^PN(6G-M8swm5XbM|@v>zb&bIgn`_qq9BUWan3z!B7u>cw* zl)cB}s>_wt^6ES>iwJ@H`G}ICA+=85u8qGVi_gETJmP-9aB zN{r|`>~8W8f75=$=-<*ZLgZ}MEeCkSZp2!D;;G^LGiSxNJaRIx@TX19lD$)JzNmg9 zP;Q*-ORP2oYv}B$OGo;;5I`u4ml?6yv6LR*em<`$?i)$< z@VHy`tv}_vsd6pN?*3JyyZjVgH?3YE>f$Mlwv0C?2tEDHOx5ZzWwgm#zwNPOCw;p$ zGI2fyn3ULWmu-#kbQy6JFA;N|9ZK^?Wns*!raoqR7?rr-Rj?|y@8T-L#kP|TTa4AI zRd++BP+ZfN?;a#ErN%iCPsM+z!G(fW_-E=?y*mK2i+#+j#ps%;jiI}Q<`;=aR)Q_5 zCRahK&*NVB6~g^Qu7X2rN?*A6`Nde<7y)1NGz)+4fWAAq%{7A{C0r&qyp)^$?e>$6 z)_4AnrqJ`|0s?}mR|9=3sk@Gm$vS~z-u(j^RYcKIiM|k4&S)df=XQDD8NTixu4BC} zeT_TP9FDU-o5h9n?#D@GPH%|Lug&Eau$g+c zb~cD)i+~BQr*VZBz}AG*Yd_?FE@aovk%{``>c=mkKlP|+A9AWfFDCk)mKk>gRvEm^ zg6+pCWyn1ofOURlIWZnkE?GLg;w*h+d0rb_;JtKC1$B#Pf!6< zu8T&wYdo2x@c6#N0-IPJM~;W?8%#`#XU0Z{15S0{`@&h`CmMkp#-p-qJF8{TAJ+0&)Ohf7O=vA0E=l^(m z=*m^tPtD%Acp~0OtCRY%)VF~I%h!O|x zUZzhT|GHWYK|C1n7OxX|v^PG!>p(MsLgw{-Q`V&=9liNP*%$|A`N2DQZ10xummjdP zG;r$PQ&z$22**)2SHHDwX1_X!`JOp5++tAC0k;(9lA{Ql$nC+Gk%R*6_s?I#|9=HRALj`F*S( z<6}jKlLe52JAlU=%*F&b8+6NcdVULE5Y%A#Dt0rMdA{TOT(JU_ z6~qWJ&lh^CqA4GST0G`taMOGL@K@Vl9@AIm1M*eo9P~=J&FKtmhB)c=d>?3wQ8A$w zZBh)6n8jvv70kDukd+yA{)iKcGi<_{NFEgm01aSe9Nd`}PG zpSdazHa!g()NJo3jy?Nkxggtd7-G*u^KQTxLWXm$wNA z<&I^a=gRdnxr-FHyuQW7(K@7a-?iY{sOYZLB8_O$lpq<}(q{jvJpSF1iH;HY*ulC# z70F~BXD%=l5HXNb3#+xAQON^P#3;^G3+t&U+3fnFW=70yEC@-Q#NHbERA^c(-QCxM z_J#{gvZ^&F#7>w_+(c6tZ)sYSKIF$FV=bn_om1qMoIc-5UHq}4T11JEB_o7}W6 zS5<)OoelbGoxbmV**Q4dyo5|nWIJWjOkvdQWx#WKcc>A8jy31L+s!~gK$hv6Q=U@m zOd{{ZorSODg2;Y@on905{!#C6wJQyHWZU3$^a520V$^Tilu8u`2fd$%c=q~;)p@i9 z#O;LZ4mZmYJW|LfryzU1I&Be9jqhNltXCXP8=5ObR0EUpyM(Xc0bQ;^zn8q;CP`L|3*9RErV z!ehB8tIG#o=zqHwm^)LU6Edcu=jMV2My1qW6t8(-KB`Uv{A;*m>0oNe(w+CxlXiCg zfr>F!6+AG(*}W$=S7~xMVaMW4JQZ$Q>q2G*?Pu-oh4o1@5->mzaAc_2c3PATnH^%lz**B@;OO+0tFa z*+k_^gl2up%M7pEmbn2R}JV! zdBt?bq`AfAUXMk>YdMR%@i4N#_jR`!jTg;Qb!&y)WT7!O9Dz$%xHky!P{j9X$T%Gs z)9db>V608n6OKNQTYk?Up-OUmX?uWW0roX8FuZGg`ep!tNfs^GK(jvaR)|2ry1wn5 zWx-ii2Q&4MN10M(lbit0(0&S#ChJO?CsKR%PT4N9I!WWdbN=<#F)|wlu2)Z{oF-R% zSq?EZJ0&UkcCN~i+d1mNgCE~_f|2cfu=CagXBszM54c{0GFy;*_fmR>goO@3@Tc5O z_XAKj$b=#KRo5#l3+1wOqOYXPiSN53lq;+9o0a9EjDN$Je9SLj?}CKhkZS_Z>YhU zqozm2UWToYW^qAZ0*wf8YdH}45sE1md}M&9?TCR8rcs+R2J*%yNl2SKC|t@+7ThK* z(V<_ky(v+nM05Hp$c+VZ8#v*T6+_kp0iM9BxSe*R@fpY*@mT5%N)%h{L3&DeOlg&F ztut@x1E;E1efk;Als(3E|NOX8qIq+{kLy1>dNr$4!t-5T=oGx6@0}^TV6Ca)dGH{* zd6ZypVamfCPgratmK-QI%gX_^EUw3VmMXG9SNe_81rqfnxnmLtURXQw4EK(+1?d?p zl=C$qt#Ufz5D6SA=5X;YgDIOOM(SPDuzWx<1)#OVx#7aO4@(A4V^5v|FH^`_^fpq; zxacuET|_+9PLJU{hBO1pXCP_W-09WDHyUxQ=q#d;DNY(M$1a8N{=Phz| zkP;^Ugzt$TI#7M_9*IyKj^%PdvBp|Ebe7iBMV3kP00x)9VnxlKULP>#fU-V?Y=Fqc z;xka?s)ax#Dy&rdk)a0ZH^Yc$Z~h&A!LLi|Aa5o#eTt9EjB^iRugUi0!CTAMX#adR zH%9)g^RRE`$o`8?m{cvNm{~&8(PNA(roC5HMz@?SdH`|cUiH0@mHh2 zPTDCzz2BlD@%ID1tY`&RTwX$GuIr3l0tUqKDApiOC(qhwq z4O;>%H%ytx{GD?Iq5EauH8#70Q

V~MoI!B>L=?=It5(zfTlLDc5sDmUi@*{$W4{hQ|3Pq9BX~3-E6xzBmv_1Sro*1qy?Yq5ydn|fAZ!xO7r{DN6bHu(#Cyev_ zX^qwkT;A4JiUoqvLJ5iumEvX)SsK92gh*YOo0KvtJ6lSSZ?wI`0Ie1{>VEGjuhn$m z>=v^W8&IcT03vw|CBc72Vki@PHg` z&gUF_)d7b8GLs^p-bZxh;{Hpt@~5O=V$fP2*5`gesXo5HnD^xnmQWQ5B2&a!YEz8d zdQ^#_(W=c0PLBq(@8m|y;0LH?IUa$z?AwXFNXD5512SShXg>seAd=x&vJR@$DT7SF-ZaHwo62SQ#?gY=)*XeVolD%EsmU10( zI3Pl)F^ER6W_Wl^-9B5~d%Zhmf)nBK^&tR{UOa~dS1sru!mpIeW&`o=@;lJ!(8kZ) zIUiv_ijoy9R}u`+A>#B)eXA_+*&eeTZjI&9W^-4okMe4dX?-i)W0a$mG}Pl!v-j1WfG zC1VMy|6Eu?ia#}Y_+@KZTI(t}B~av6>(6=E>7bFDRs5aHhtZmm-G%5SNz8 zZXXCOB=*i52AjtlH!3|E_Kyyl?I%bF3&rYK-P$6SR)~fH=U$B(2I@%Hs5aSDSZS4i z*~OmPj^P|7O?O{6VA}CfB?D-R114TE)~*fB^BfHZ5|N$CA}J4eA1OAKeY?vq2O=AR z$wC_Tw|=&jz~5kRO?*&WQ}jiXwipmU6Ma+QzwxVVgW1Z+rrD z{+o9Kw3crqH=K$!C|{iJv%=g+>PBqO!_-gEw)e4Llsl3iWp-Kf5Jtbc;wD7wxmr7U z@(_0b2$?aBQF3;xM!RDu#I>r(7ao0E8K(3cP&EXQz22X@E^aP+uY(XsCBV_(*q^Gq zpZT-Sw8#KW&I3;_+<+c!%K8U0sWx_Fk+B*g0nG*CTJ`Oz->0*mfr$IF@v74BXkv!s zb#OIwENMb!9ew(!$DDWGYu*fK8*>KCO8V8uM>zxr=N0c3!mX9q?5ywddqhg#(`cHrlJT<+zy`)*kcub z^RPUPktA>)6``!(9NKpwvh}jktC!nd~i;d;zbJu8WcZ zG)Mz4HS=Q#dwSTqR8DygZ+wiubS6C$6yiAuq_8h)lOgbZh-QD2C`r_C$z#ht#I|0M z>$c6e#uJV_rf2&HC@Sa0{kh++dQ84PN#$N+w+85P%2&U{g2=dN#@)ZM;RA9|Sp2Oe zni52^$1DG=lRwH-DHK65#N@nmpek8f8rkgN)vS)`OcgilM-}U#0ku1El5x)EBNvE+ ze!yw4zWK2Ol&>h#x(#wXd5cUynhgq+LubwUD5ld>P&YvMQV!O(^kX0gKh;gxG5RMKiY2n~papz#9tX0{uP;(eBaS}5+kTGLYABpYl4s?_?QawwQyT9~ zTrMpUeR8CUe-R*OS6RJ;?I@YDTzKzhHv>Hy_p9Rlt?BqYnSy`^MYEgXa$BVS;mb?* zC8lHY5IvyFU6do5K^{ zpJ^T_O5-CKxx`-$thG*@$9Ft?>NWO9l2M^x+^}DE4DRxxF^T0<%ShaPSAjbLeuFr< zo}-xc^}1vM#Wn!J*&B7-K!ydDx4IGuc4m+&Yz1HgyGj6B$i#d%lPEwR_Lf2 z^WDTr3w`4pX=heyKv`$r5D0yRC}!ga1_u{GRt<3f@&jQpwFj;-AhrDc`#`qXMM3?U zH8)zspemW{ZIbv`)sAkdYJ^vTEhWwR=<`n!)42Lms2%z_jc>jddWxtKk|4UhyO^~7 zq}{@5ALM!K1);XU>+V<%6givH-<(%}_15zGmA#}nG3Cpa&uY|2Iy0@V2$^*?a0E=q zf3;N$Z4+NEKreCru9G>CUtZsltZObn?b#9Js>z?|wH#Xm0dr6|^#Pf`lmd(C*sII# z8}2;|+lo;)6^X2!?2I~O#7IuZM9XclPV?CH+x{NVCZDG!bg(t)lPJ(qJC97e_V82= ztaSgb;Q5d89NRh*#oqW_&gao!@u}oH(MAUX7K1*JDT50~0qr=Waz)ZSo$E$KR0#p6 z!6;?iPVg_IeS4?HpgIj(uk$-RYS@_OTw@o`H|RoI8j3gcS+RkDf;MT8G6P|DjUv$h zSp39QYvO==#ol=xAh_CXB@^M4wq(Ub;adspH{y^-X9woD-%KJkifzci1HEj3=e*%p-O;Q0i1u;&pXwnz{xBH+ZQBUqGL5aRJ(8_ zjr-OC14iQ?$khCCU!E+5Fz~gomziPTC!T@bi>P)fw>@;x(=|@pm?foa(>*@BFkB{l zY)Kim0y1WXtB-V9v5ktReD6E?_~tR&g7K9c_kR#10jx-MqsDb=ZXkVs;oYMxMlu|yklk;?|yt#i%zA%*CF&BE>_vCHi{fRjAF)P^1<6+LkJ%y!+|@FQchb{QpNh5e!Y zuYc8hDGK~;q)&qb{x-(;e&c@|)PH}A_&(d;R+;*%jI!VK&2$7Hiq_Q7c>8yV58>#{ z@nQV%sq5wwM{-^nn?g{x0hDH4xT(;*{RiNvXBdxn=Q|C5r?pZA>2M_4gq$rRl7h!b zb58vb5vC%FpLD`Wd{usNZ&9>|Vf~#_{j1pGQg6lTo&gAfEngcsQkF8!bk1)tA!P(k zI`C$oAU*qT?o>YEN|^;zl!ZxVp2iMmJj(c?o=MQ8K#!faamq@Oo*Zy$<_M$m?p_o0 z+tmBJ=H#26?5l-tJnnE?ay+bTH?_C zRlPCu7Et5Yp3bCjsgsT-7{9FrQIH%mvZB6iLb@%3@tszZ!ff3On$RACiDs(_{y>f1 zdwN9cWgF! z|N0?HmY4Iqj?Rfg zxQYIwY~^D$gsuGW)V?iZ=I+hE`o6*xOd3V3Mo5hS$Zy~768Wo8q)8N>6l#>~(L%@Opn{?hW<4yfM z%C?#o@u}nJ__0-W{2xxk4bm=xJfx^iKCEdU56hN|O61V`V`=gV}ZcyN331lpT%ajb#kLdWrd zkyb1IyTWK3Xxc@7;Yy zZFv1S_~<@&dZhD>|5~c~pGVhH=)bMz{Lfp0+bJ@vb#3DB!71K@jfDs{qNtl zzxaRl05$E4+g`rhbFRrh3_6EPt*D^!O#N5obQ}ak#>VJ&ic31&9O?9XZ7z(gjE*A) zH`OQMV%^xC&5TgT;{wOH_${BqMqqR_zL%lA2|d%mKn#;sQfsT|Sc!&IL#+d{itMsI zdcxdqiHLw@&$~t7av~d*#@vVsrs<9Qk?qE9`E!pht=)*>vvz~)Uz0t(B0=GpbCFGd zvoc;%mM?#QM0y#D)bSE?cfXM<i|-KCFKoWl9u)0gb~2 z_|moZ_v-pPeZ}su8~q+h5K81s-hEs0R9HCOQmbxnih;r^MyCS9*J zOK2RU^!E}i4vXQB-Y0m!7Jf+)v!9ughf@d-d|uW0r8G=a@TRa6gMH3mv2%B_(hW~h zG4FIxCYqPXEe&owcreF5!s~MIj9Cte2g%Q`uB|;leGanU9gAJ;qE2KneW+DuzwkZs zE>ox0Ql*OalP`93!3CUwoejZI}m1xH%yZ}Nav zJmqiZB-)95u^9uY);yFX-D|9icV{Vl#*(<_(>gae&8!_A7k)_jvu@3ta4Y zeTWc7eHbfN-|sG(bg!~~ghV3kH>do@wOvR;I$Dv3M8txYF(|hiivsM zibt7Y*d3J+=T#MTj`2HBDF^Btf3mU{NzD^VDi~*DAc=o`D32aM{3UyAo>bUp_0a{**sy~8J(0A+|k|I9j#blG2-8W)wGP1#!p24 zkkXXV)Fhv-+RbpQDnUj5M_<@$^XV$NjpDt8{c5$&Pl%YcmuiT#mkw*}?oKv_x$Ug? z1M_83OG%md=7FJnb@*`pg$5LEB&$~K%&JoOwwM$OK_Cz;6oRgyD3trb!NCu8J9>eX zZx&N~-9>7zkMm(`JNM(5wA(dCa-%;bd>^xzu69SVW!8yJ)VUEodj9&?TA2aC(Q$>- z7o{A`1q?iv!;2Fa*FII-!-MKLPP1{_U(JJC)9~c}d8=QAr7QT3Yxi+$YHF~(5D;x= z%csQ}mHHzqFN)OR{zqmia3`m`_wLw#v2c&Dd1A^`qb6&AFj9u2S}N6na_Ox;CZq4d#_o)Z12~n7SvZ$cH9QnqjnZ- znCbdDxu9dr@%EG+=};*ZgGxy!0R@Gutu0%_P9xb!;6eoZ30xj2ShhMCosiJ};qroI zv`{6!)?s7su!RMd1C7m6?!rwdP$`rX6@7{eZo{AW%6de~k>yZ_dwPEUqxKDh<6>u)u*x6Yt&3~jEEH|*eDSaFE@#C%F_v7Di^a5I?Wo0`?M`O>t zy~WAHe*Ih@dA)y>150G9KR9?j=f21ZdvkG-uUW%J#H5+wjyy;a@<^iKcZ$+cX#N?W zJ5(-#6+BgDN9RjP9Hh!ITq(*A>x$4=YpQf;k`alC&oxE%sd zK=1&P!bnIfcygl~0ukWV=gF27l8}_VbJ%zqB_R{1Up{H>3tyb5l~tg{}@{`~^5-!ZycksgfN=yF5Zx{v9Tqbbi^~NmlH(y8?{aMVkxVulcrIETOrDK{-R(_gWX?= zC$>og`WRHK!Qg=N$R@t{O+S#r+xrWHD$8P;>vfT8q;Y4sUi)5G4Pg!eF2marL|u-I z$ygBtHzLB>XPe(q32e;p@bK5^ZDRkI07T2mR`b>1cg7J~bIBDI_7!7bb#roa5Zl}R zNA!wWw<55~I^A}?M8JUjJA7s>yPh2OJh~*Zva)K$rD%P^%^U$1x4xkP37@L8==G5Z zVZrw0D%QYPXyCJwPnUz7D9w0XU4t!l%Kr*_&_*J#b{)3O=h(V1=jLj+E7$<+_ubF6 zGIzM{lk7CtsKVG6D&b2phA32lE}z>NH1_$M>bUZEy^$$VKEOK*&_H9Fe`dVAsh!Ff z`vea!$KV|Ibv{C-BlwYv(H5~JwpU7)fS_P^UtjyeK~C?#;aRc+^U*69>={2l*$7@T z*8+>{7LTLevkIDoV?Eqe%WNOz-o_%@-`FfQu(fr3DoE{Hh4w?aSa^APqazc8#**YH z`1eM#A20k?}fT38nU?;4~^SvZe9j-1J913FrG;x?$n8hzUjYN^@@r zDIS3!oQYt$*kP;v*G7kv;$6 z{D(b3>dfvcQ4G)iy@R-~Mj0<+@>G=}?7oETGK>KPs$Zelk&Z<_r;#}nkRwF6= z@Bg}X>CtE^pNeQ%SRdkGw##sa7QKU2t|lHRF=@wDjZt!nDQzmIgytK*W-^~!Nev^r zyoMc(bx7{;Jf4eCV1dn0dTB!D@PZ2U7=zOD zbR0RmK63rqwO>tcQ$Mn$4#%qMd9A8Ay_!&_NjO^uhL^5D4Y-KBDQHt5lUW%p|fJ~$x3?5Wsz>NmLB9JJVV zSiI}bUD~vBCUCAc*i)#D>_P3zd-ZtZcSWo&^;azo@LLX6j%!DEQJ#x2)od*zN0~j- z&Ub3)xKrzS&|o4T{&LQ)r8!(vg;_+PHhXoTbiJSBxRK$kt7#+ko zwmcBDW?~d-p0H-bmt-A!4#X%JScXW=`Vb7_pyuFtTVkAMVm}PMrV>;r8g8?R`kfBF z5F|8N)Fj$F#LT#saY$&)vQ5O|sL0H?O;ptHoAE@EaFHQ#7+kW>96C7q&y!Y&^>Z;vul&W{bvL0-wiU1=o@UZNPeRJLlECSfCjQZCn}^JgIEML z42qFMf`iJQtS^GokAn=zLJ3AfLp;`lig>4jKyedr_R5R$^3Slsm)_YCU!;JqF3M+dpuSA!xY$ zI5A2xj9D>C8`EUp8<|nSQ5e3>bi{^8$PiOvzgJ<%qD}9q0H=w8Boy!!IFo@$^v)8Y z!5G9ixDcuqGc-~5_ef}dePB(8Z6Fj)9AKCH7@Q4+#vV9?Y6$Vw1Hb^KqNw1vo``r8 zF`zx?9@th~9FGAT(Y$MLl9kx|(J9e_w= zfHoY0+-e5syMqQqE&@O_%k#WIWv9B511Dk-8y1nE`09m;BB5aTB8#K42ipb)zlT!Y zL7@2l{U7Y%&-{Y*@R0$@>=?d)mtn}bfN8$)XYgkz)DP*CO(4GDBm{cNbb37UXNiE( zh|@)jNDznso*@{=#|`8OL-N%tx`zfpAt4*`v=aBTQze^-AQ_6_An1ey&zk_D0=@xp zq2VHDRtZpVotOa-jEP(_8gDg92zvzWEn}i{RiUCM84Myq!%mXsP zK?Tp*uYxcTwBw+HGZ2RXiHwIqfglj;1Jg+UBh}>ZjX%RuHebaPq5qMy45O1X*5BWP z_uag&{(hV_OuH(A(1bsquY)X`=^QVm(d?# z7?u$)ji%t@734BT*QqpZX}u!X&v{<|gOa-2QrwC7vj>lJ*aPdk9nMTvb+WDGJ69If z13%t4t$SIax;Sq)M`+?DROyj#^sI{ijp(rPub6$aU%tKs_&A&3G+0b48_zXJP=vKi!65fXa=_ z-ciK6W05T(*w(B_nPHGP_?;;p#YtypV>J0JSMhhPHi~z*_RJT2;bTVY?Oz!GC<3ME zjgVz3dze(ihNRBxN4NSAYe|SC#JXdT(oG^)K%kz9U&u2UNtbOnw!8c8$#jY~iL)VT zf9J~ey(98VTB6Ap+?9s=9ra{FsXf&KE~cu1Gvk4W#cn=#7KwfuF832FWE#U&zR8*G zY)mGfuI7L1GXC~QTEnqaWnv^dTZ3UbRvQcJ@aFwtxrQnG_l0pb^v{{%Ls@N#xtMD>vy(N?Xq^$oAaG1A{x{3dX^^{3%&i=YVJLikFL<=d z%N)MB#c=K_WgSV4&2OZRHUy^HEab5|bY+C{+C~gH$`q|$T_oo3fu|!C2 zI1oY*w&wJJl36RFri7=u$$Q%VGi4=NW>xruJp83y7?UmwePdCuuyV9UEH9<7HE&mh zCYF*`XW+=agVW{M!nkN%wYEYtjXaKxtp>Mq9rp?g=}1^hT#{~AcDF>JsDn;%4$aX4(f#W=!X*PTxs&0+wF^a1jz)ZYXxVL zMp|G)-KqZgbx=cEDMe%3@*m1s0?JaSIbXX1rb5b?SFFZiM8e{B#jf%82WR=@A@AOx z7()0Xp6riqy?v5xWdFZyV0`vdCo+PfK9(rwrVCpW%l5hE#l@>S!4x&>aSn$A^;-Jy z)0Kk9oZM-l#>-Xcw!|;&Q09_Fwd^0M=Gncl$$a6rF@13GMj_KwdAcpgeduZ3({0LI zoOt7Jtl;mzcb764z`0_ZFU|-DV3fvxqGbKPd#@3sdM&W z1G*;kX!i0^9IX~4Qd^UKV-!PWTfjd}m2r3=eKD%~G=+CuAcaC}ES;+mYrQ$e##8<( z#E~`7qrgU@R3n!7nKj{r+g*X@UpW;Y1nVuKV^&Q%d0ZIYzpqVf_+6JJ0Z5CQmnD=o z>BJ5y;OM~rG;V)!)JHC(sH?ry#nJd^JH^%WfV#kWCiN!4SB$8GctaI)Wk$bVS^;Lz zo$aM1r;|z{Kr|76pR4{oP4Il*V01gARVDYQ@NLy4AI0|6hvK1lJ1Ed~R}a4G{qq6o z?p}%OvF;;F_lo?^)j27+O0lJxm>=vbYr~~`*}~#3x5JSUnyCY|U{b^_d3#Z+mFw{) z!BwJI&)vPzU!-o{J=kP2a^I?^eZ`U~ux`F<7FxB<*=)9*ztbq?h^AbJ)!!z!?$C5r zs}6!xBdg`(QbyKRJp?tAETY<8IXT%5W^e3WB?XGz zp%1jAr%Gx|3tAhh`6BVz`pk3Q7{`stT4JI%4a}})?8pr|p4FD59{374cn_QAt@{#z zAx8U@)LkQJH?Bi&FNnhT+<2#EMoztg0C#OV6Kz1!`J4GUu+`A*Hrvvzzzz!Ov)&D0?az{*F_*i&L<&#o(Hl&EkSslrE&A>* znv<2nShoK3QOjy_PZzw9nTb2iR9L;uufCABPKNz*A$t9Hwou{hShR>RB{Qzh`GH5n z*{P%@OG_Td`93mg+=;$wFBFS5HC@ikX2-_@E!OuAvG9S)qp=^pIYZ55lo_u3hqS>M zv=W_kzt?}Cl8{e)GAS2(b*ri$8QM;IY9}R*uQ8S@15|Qy1bg{gQsK8U7e;2;v!fsu z;Hc0wugwWu={S4`XLZQr1SDFzAy-~?XPv4rTX!Df-8s5H+zD zqTLoqZtEe3W|}M;Xx1E4DIQ0NT*n9FkjM9?%U`bj`pPHEwVi?B-Xk2**sn-HM^v^1 zdVvekXHuRFB0_Vf{b_)cQ(~`HXC{oo&z-e9&Q^SEsT|Qf^JQ@zPDR6(Ry-7E#{dn8 z8r=;sTv0SLS|!laY`DhBur`ahV8eaP$C@aSbn^R~s8gKfWKeugbmM8nSBd-{o)j!B zGXD1Qbr?|b_Evq@r8q1{D~-_JX-}bBJ508@krW}rYpZ%aVsO!XVep+>E=vADeck9Y`bLY84#zb{z zRF>tqx0hT+{j9r_%`zwHsKr5~Tv{ZvCG#avvp3}3jnJmErArx!#J9Zn6R)EgSXow| zMCMB!tbb8u>?ZCXPq{+rYq2)%-_VYUiAsDSLuZQ6l911~9ORXs?U4m0b~PToE%Xlx z@-v>oM)=MpB0~6)?VfmJxTBd8rY@VJLA0`)&kmn6nZnYg>Q4JQTyKB;aUH)4i^JH? zilxxSDILY`)Q4k_#jZZKB}?mfZ{s}*EJU-YdP;F}4CD3-YwyP_ zEl=_1H~Xr1^DwZEGE}E(P|?qzh9e3>w?g-mfabjR;`>#s?{w#?Zo+Gc=l0B;w^PCR zmDWJT@prA!GzVyhEiOx3}?In^4w zGd0M9-p$0kpruorgWjoJx^{i=aIoZ{s1KQID|9tl>T+Lizyfg@&+<5lEdwN2>jYAI zU2m+ZJH4A-NKb#|z9gQDAZ<=RuH{Wk?He{l+y9;JRLAdeSHAT}(N#)N;`I=hrE=<{ zuGF)|Bg(_OLOQ9Qw<~^R{IShJhpNhh;R%M{4;R@3spBOW6|r^52mMSN&r-{OOTBx| z@4t_IVsgCGnrXZYHF@RIpiR_wv^@141V)tMTdjlJ&~Y>u8_^-);I2mHN)GS4rRz$i zhKJ234m9Ls0s%1;fDqVH$Q5$z9xvE zFuXa{%C4IEBK#W9hmws>Xqptac~pSezw^Rze%7b|@s9YTl%&yxYdE(9EFl+w`lyNT zg<1&$prh?y?+N&^Gj75HL;78Ck*+6h_1~ng*(1Yzk2&%K6w8AU*?xHDLjyczhTNBZGLG+F zr8L|0Eu^4Zi>0Kr>ND7@kAr-x7hL?M6V)7tr!+y|xXV`7Z*U==4s-;tn3W0S6q1V_ zZt+gqq1{PI$l9>~Iq8Xk$9aJ@NIW`*(iA#Dr0E}Iy&^72v+{HDrQJ<~4!G{|I~$UV z8?jwIFw_1oGrj8dp?TWi^7UD~%{F!=NXH^;AI)>p)=8?4N}3vOC0qk4{f&EnVVF|A zo<9ze6)dmav^_~R7`j2dug&@;;BEGtaCW5bTDqGWM#S-Y6L85drbC|bap$*Rw%V-3 zL6sTp)gKa--!eo?oqSXJENmJLuK(UWhiVO;u*dv`?{$@yN#U1}b8(k20#ZuI^;B&GmzT z7bF)U!M4!ndFqLY{3rXG%rl%xo1~ITwPG|_bh`_dctg&Eh5ORpOoou%X&?L~EVAYG zfrif7nCN(Pr$w7e7lW-M@=@MTq zSuf=&63gCmo8~XwkWTGQlWU(Xbh1DwxI<0KpB^@M33=9#CBgcz-?3^jN&_&9mbW}S6a zt+teIvTXn60qctybAp6}Ye~x~Y;xm?(d%*G0x~T^`RW86c&Wt{bdV|8bOzq{_q}S2 z7;0_)l)s6m#QGU=dl?*mZ??0kk$Ry{#rbtIlrW3=-ubRp@$4HxPtm(Y9m~szRHLB} zsMGG{1u$-l^zMG9wv*$J+m6;+n2I^*jYcAfu%n>m(qZiDjjG?T`_sQTlC!3;3_KPx z+U0cWkTo?_D1PsEzrn<68_iaDOK3A0K`Z92K!M4%)xMq0b$n*#!fZ!BSd>3b;YTZW zScKDW+%e=*w6&_YQb5=mXDt}Ky_O46*%lHzU4h3eEw3+C^VjV4jKR9u zn8i}G+c~nT^DH>ytRtE$fTge3P3_4IBeUE*X?x951*sr}zvZzP__S7KWI0zbA+O{8 zxB}ckL~=G1XVs4Pxbo}g>dg~duS0g3r_A=nMu*-eKc|~n46_d|dSk=ZCgK!6S)}VV zchny>WFuFs=sz}ECMvpJdpWH!k`E5DRM`!0cNSm?UFJ7j8~={Rg{xM<5_ly>RFO0} zyqGgn+?FEUT4CS;imQFCVhoIo&!hDhSEFL0UcP+EmGg)Ml7VA%9tg-jJ%iRbr-#ys@lNJ(Y$?Ej%%3>-iO znSdlnlAZGIE)seO#F7U^7j1u(PY03h%Fo#VD^p86ijG%VT1X1m=z^MK%Zs~Q4jh6> zAbX-@nUH?iL*L6K$S6KJ9SgTe!z)^HwlC~R|KCn z#zOSDD_aruiAn9C>f-=KTT(}D3+mdkrq))fJ6QsPz`&~e=vp$8@K&|c<|s{ehL+qk zjK?(|vRf-)V=EXNW%TRTn-i#kl7VHMvE7;L(+GJTX?qPWgd$`~h1!x~`SlI8erVOl z*xPT3i;Rw#+8<{2tdr3{JUw23Cl$g!kZLT(X}%Kw+=var3x@7i_WZ(W~*xDn5+KVS1xzJ1EYZ|wU?idImFW8szC)B95`r^Xs(JL2o6Xmq3 zQs34Z6u-qfFm)ZMc*8>Z9){NwdqR66{*=pSPKiu7E_tB+rK)fai4*-}mm2ta@xkBLc$>IMmd?UWr)$Zk5;uiV%2-ji+# zc{2;2E)%XTWo0g7(t&?r9xsYt@V)Yq?(4~_D%R=xdbHW;6<+5d`lT;oR6$TGm z%vB#3y7cC}#8Q=h1H8&vA;@LObHtgyxyzPsG9zzSKk;rrbieB%lf)b8vjHlyd2Du+$l< zUP+HNb%x8m7?+|dVy4SB4LD`XpBmS?Ab;uV(f`z2egH%WWx}aTWtM}bhiCTdglNvz zGNA6-IaE^hW#;V4^x?xAo+PMWZK>JZYn_Ax6js@))eDtpn0fvz{Dn9^X-ZXh6ql-)#E41L7?|M)w@|!;XAwQS5^~T7gV~@)tc&Gq`(!iK5Sm4JZvQS_aPk`ZD>} zm-yyJz#j8HqM(W|dDIaX3y=f=NenTt_FChT;{vSqG)tuix)FW7Cj_=e`BDpIwd~!M<9=n>}dDukxrYD>z)!*J~i=$QwZIjx&RIUh| z6iRG;6b!f8Si8Bx!|i|C_$$B)M5#QkTMt)h{%?9io11B)VpZQyf%?hMY24QTdI381 zaT}Vsx&*JFyTEuccOBS)-2fvm^y%9g;a?wo61J`=q13b9yv)E~h@`3EEX3r}R%9;) z`L7oc5eRP!^p4PFYEk8I*as^rw4PLU?F7G1iy*S=&TXU5!JR0-TR~SYwlK3_2X}qyh!7Jtf4LSMG_<9F~g$D%oJnQ^EJP zXNa%vsWq&Ea^)oa6S(;Xo1o?saa?ddoxLFrQy{Wn+#orE9>8{6IfP#8~7d;E@| zpQh5WX$*#s9rVqm7A@0g#g!o;LmN-0H zv;q|q{`i%Qqb-5i6e)F|cPq)3mTPM` zj{-+y?A>jlR{Y7*w6|#EkVbhE9lpZ~PqEukY-Oda_h^=%UM^J1@I;0;77`Kk#B}t5 zBRR6_i_hKN7Pi-oHoqClB{YVM+VrLCzmqTzidn4e>0z0_zPm~6B+KtvCtzoxREkG> zLR-Xi!UL-9Ss0+#Fh@hn8MIY*2Q1I20(`iN0?G#nhk@kurA*(Fft`IwvfKb2SXK1d z9(bn6$Y@2ojCiEhu$zU!z_yYQ(SOMg3b(7CNVCP$gcbE9%U2`m zDi|->mM4}QFh!;$75ns*g37GPbnmj9Zbjny09N+qB7W6s-?|)`6KTeU6ScXIz)-vd zT)QV^dxtw4>TM)^qUeQ%t3UMtRY?6=Qt7$=G{z+NkB}e`i4m8?hZ*X6a-4in*sH{i6e`-&%f>)tL?9#JRAdQ8OVZPTZlX=8%MWT3A8^=5FplzttZ+z*Eq)!Q|EUJ?=qD=_b*{;g*kj0|SVz)kd zI{V0-M)AQ~FTaDzZxH!6cyC}S7_YE9O>kLPXCwQ5j!ha^q-0t7-LOqEQ%G}%d4{6( z#y|Qyrr~6XRT#-|O5(sYa3HL^{n{^Fm+j>)r;x0DocQpGelDhAA5k;0rBPOrFX$~W z;xwNO#>=`LRD=UEw1Y7&!&8lBYu?FBQbc$0&lRk+f0$taC1qujiMs1;bCC6kTw5OR zs8RV!ke{;AcW?IHO$vE>Y|6QBP=D`t0+v{ucOETQF~dW= z$#dUSJforOU7X;r(Sw8~m46IN7WgvqBMepoT10eBW0;!9_l-jYQ)R40A2*tS9{7=& zYT6XvGo#z$=yA}k`07#0?pZIef6Ur$=*4dJok04yCuru^3{1gzXbw zwk2Q*s`dRAFWlKTS_3>wO^7Ot3$a0;#cjuP(L!bWV>`kR^?F`l>7-Ogb%%1Nx+RR#=%h=Xjw)klfb!R;dBu2wf$w+BWrvABlZGgXctC}`TIhHS|J#R9F* zMVZy$2x=+=95d)|ty}>zw0PQa_p+Zaj8;29icD7E7=FfZhZ-%C5Wg?Br&Zrp-4_u? z2C&V^x6R#1=!oK~a{OnwX+>rk&R)gbY;{uVa?oFC0m?4^Oo=o?AKwRyX10rGuvA#V>W9_Je|%nATmI_su0# zB@?RxXE%57lsV671*b+0-|U`f-EQSnfkJ}bkrlZa1)-Sex6nRxd{>JTb0rQ32F=N! z95nG?pcIlyfffEF=b(@_Nv)iTFbGk*vC}8imOVas55W`2zgHz+~@yCv!6z1h8_^|K|T>Cu}*QOU40SVe-kjGOzO+MLDu=rah&fBZsnKzCQenUc4Exucu* zsGmD;ee@?6jYnmM7>VxauKZUph5`WtC?z*So)^0emQ#jN(gQt}X-jF91ndu7DMm#YL<&O;C{-$Ga*Ja{K8q*WJr7Hu}1|ETwCK_72wY9Hv2f4?n1E7!Labc`_-){)NoisY_6 z^!aiw^+V0ktVa>iC7!~5v#%4Pq-xmusP5qS{&1GdsS}HtYT=^@IgR)Erc*VRf(gMj zM~I^I=IN1M*HkHQYMjK}$%BdL&vHP?HUnZ5F*!q`Qdxh{JDJx4di3sc4L!yY z^Z>CGJ%csDg~L`%R(y#$x(l~Nlzuwt>6NuEJL%vmuhtemB{I1guE?;uD6oE0CgGjF zS|CD{YiGWUWa|cXfK0VWUzZF!Tz6pfMQ0J9cuFUw= zn~(vYU@`HcYaFNd?MWwtiS=F?!{okRHv}^&<3PwU*qM#z0z9 zFxNO+J68ao=wd~5r&;6Mw?=9~A)nA`z3;*d-RVcnV$v$QfqK#N72-5+%7B_9M3m;y zXD#G?q#{1ACWB_!pcPniba4M8@#Tm;#jXd7&UFf4{~iduUxMy_ZeAj+#Pwpx=dkDV z=ANVbo>ZT9E#U5llq5W|wa!UFyRf8dU?1GHnANNA%ITDS0K-fm)uCG=Al%>nG6Q&K zn=7wX6rNQ$*IAKq*v%p%&g=)h17>-U&~yiI%;PNvg4@%+6$l_4z`s+d?LS^og3-(; zyN~}ei{D`p|7FA2{$s;F)ztAUWc+PdHx3s5V@JQk;{V-HVEw^+mh58d9>tf@yVybP zyKs9FA+oZlAAYk>Kn~=zZ1?r=ak`Bt8PFDh7o8@!t}1yZ8{6R{D{K zC6;6xH`N9RD?ppjpvdlf_*3 zF&>b~el5^a`1>dsZ9)+FuiqT4B4(McHNC}E^dTP6s!=h;@zX8OEQL~yzdw8xaX~=6 z$M!Z!f)x93+(Y+kf#<*bRfN>4QqMOt%rx0zO!O-UbM$GyjNEUoU|Av7G>l3pJz&^8 zVWxx9;vbLA|2v3B59Vy{<+(tC#~dDM{_ywcCSw*W?>~cwSur(BWDNgI32xjH|DuaQ zwi2sWOaAwv59A%bjM3(+X%ow^#etQ7z{e=vLchv0MCQN9C8Y>wiAw7mC+B4*oJ3g5Hy*M{;w%YZE5PO_&rL*FJb?@Xtm(w zJ1{XuC%XslH2wYsai!waVqqBCM%O!T3+9fA5y2Y|<=+gbc_n_9Xd8%_Hf`~_cl%hY z9hDig4FK7PRAtjeT3Ni}7DxstoY()w6f^k1Zfp#t{<5NSInqj#oNCDX8Zwo53)TO{JAIgUcL$e z$W@?de|{N4I>10Iaev3(;%{;kJ4XJY=ANgabx>W0w9Jcg+hUwy8mnK(O`X9an z#3dvo7_x>(egISuNg!MV@tq;0vF&dXeBL8?`iGl;k@+`p@FC6^90x|0#d-c2A-QM zwtt!5Vag}eRUrt-;Ik^zA86C!{<;f)%O6uj91KA_Ia9Y3{%x>_b(?~sZzV1*_~E19 z%^b4jZ|_fi_SjwAr&DQ2c}rjJ6Jn z4`+=mW~WZ$l5~G=_H#AsRl~!NP7pAoZd}TO8ord1GdRc$xq4k(TrBRm-Jktn^E(b% z7~-1V)O09by}ySq+_Y@}8&FFZ?vp0yal&rA5&u*B8lUz-^{J3=4;pl*Z_I2mouIn9 zTHvaS;mb4Yma(D6Oz#Z3x}%mu$eIs-g)uDtusJB2*L4r4!g;K0c_Jq*+kE8d_{q*p zCsSd4|IQ3(jWT>y$^RlCV1O!E(1?{4b5RevS-iZwW#&`iCC0EK_vQOx(Bz2eX|0A7 z{s{iv;5II!J*orD`&Brp-Y2}-KF80kZ*Fde3&=aZM`90UIhgi$-k_jM%gIrvD@$2k zVv|upp&`Kv4VVhgv7$LppKu+(>VbUwQzl`vTWIErHr-e|?-uTE3WKebM1o|_Lhot($ydLAE-U3u(N z-^avs+h2xyp6>2;_xDgUGl#9Fx_vp>p3>JWcYnS(>m7uGjF-qUdIM|seXIzIx#9&YTi1lv>gqCW@z|Q zT3VWcno7p6?2O95mx1ad0}JCvJu33SPXUf0AN*sw{HV!MI`oG1>3_20C;*2`tPdB{uxLK(%z7Q2UG{D^3?OcIwuh^vq`W>?$^GdO z*OSm0Yx*ZoP~$&;#&JJd>+hW?<#k_T2*4yrS8Tj_LQi|R{~fzq>87D4jQEDN@#+9` zkzTItnY_wREs4!I7Ghz2>TI(TgXO1OR%hYS^oj?gP0d^5)%dmXM6pb&25a-8sCVxc z?`$4J9&z~Z6ap}br92KR5aXU0{iE;L`=_V$wRbUzpk6C-Durs{u>KU`-|5GTVU+xV z9iJX83>FW`#?-7*=xm?dr;%(JSfG`yc7@-Gd>si{n~T`M77B&|Jzt-?WpUoRx(6%y z?x-sf*vJ`1E%DK|JTvnN8n#!`+dP#;{nFpx^-<7{b|YqXB%J*MA+)SJ&!XwVT8&%U zUiN!eS zm20=7NO5esqUGiz-`|#^9dC}bn!FHS3Y<8@JS1W^x;!EOsZku}>2`Q9v8wwk-@~QC z^6G=Kot@*>5l8EsTTs}y~siAo<~ zkCUsGGRA0Lw~dGS6h6LyuqbXD9j!QK?T(n-p#(lRyw`wxWCAg)Gdjlmt7*S;R23V} z?4huD@AeTO*6uEBA-zd@~V&qMDztSXhgBR*VV z`>NPj`EL9xa-hC#`O%T%%7Cs2yd{89bw}r>XLCk(ajf1WBrGh`XHKZX#aGBWaL zcM2UOLpuTC(;hbJT;8`Vxw*M@!_`bSCmXG0igbphZa9=afhg$MB}aK|V1nYCXhw(U z1*m(RZgCo&&ijq5%~Vpxv+2?)rV3cjRD4QEcvoRPBeN*^z;2?#3!P2iRsfTbbzx|r zalSMFlL1e|pM=w7uo}i>d1=R~qoY%I-EZsb>pNcKMw6JB2q8bg@(aQ;9Q3!-+TM1V zU7l}#@l&nhVa{@9YbYDk{0NLcoTH7E8m)6=%cXP-cSi?*{Ae^k|IKmzE zt7iXJ_2JpUp<;IuH=Ar6tKrt!z20P@*ugBB{l3b%eX&j=^;&n@NL<{y=Xz8miHVjI zM<|Tl-F1`KPU7O?Ph3hpCSKNgCR*_N+z1E>2~ArI%?ds9*n$dO={*@60%~h6tQFd) zS+UpJArJAfLCp}N=vz%=eWKgo85}%~LF)4u3dL1aRJ?Pr)I2m4U2*H?%N0@C(c0?A zM&u*0u9Wp|_9qD|?MI^3^_=A++5U%kQ+6&3X- zV(D2ZjN9AdR9r0iv$W(c0h3BomhRlFeNY#wea32WPT4jCFOcm;VGdN6&1yR^RR6kO1ZeX z3G16I-!wg;VAE~H`15R+iGX)IaOpluAhg8-|Xb6eYj81GgKt%b+9@RA)C~x zdAQ?2!{aRwXV7i{TxX`p2P#i5FFQAv@hMkV*FTy|=u_^$ZzzRNNca&ZwHxsSKFxd6 zo31FFl9Fh`mebM`CB{`V1_tR9=R=A{@rj8qwWiHlTEy%^gdGCKnwtfbYPlkY3*=8# zYxkS{un~4uV77*Unwq<%L)SH3o-{6BO>_jEB2)5H(0A2J)=#9*+m^?R4S_|D4qh`b zQq7dcE%6T`qU8^w`NYp(q8k)Uo6jJxaB+PUxHMxrY z`@sZ3Xb8M51mB2JtBPHH%bA}QTwJ4Ejq>|6LD-$Nw9f{+t-?`fr&qk^Kv0dCyozN~v0lu)kEw3knq`o!ltfZ`59cPX$&=gM2|9$_Jlk;_1 zs9lDz$ikCMrU0eH0I{Jn1gldoF#2( zAvrH{6w0h;K7J%%`n-I$uf}CF+cIvq*v-no5bW=d3dDTx0Vb`i>V8$U51nM3=RUjD=EGtIZ;Ijqn2&$0a_HCZ3!~P(xd)-7dxBE#;`+9F1TzYYJrj}8+fGiMMAtze19WG51 zs!x1HVpGd45gHhoCBDCaxIp)!>6Ps?@{Fo@qf^=XZbH=shR&y5McRx?s}R z*FU?wR0dbwd26~mLbG!J*NYLm^`S!H&Tz`rLkUcbd-ong_c=~gzDvjbc>ANstkuQy z^ct-}r!jSv&v6M@px-$zY$co!6r!Bvr8IVkEnkY(K!LXK&<|tGl|EgO%bZDE65J1= zl{2BDD6Q}T-=x-yppD*#_m^BrSzhHA3{SvuhrKF_1ITR-qx_bBUaFtE(y5_l&YKhTHI(g#G zHRxgjj~j=OP{SJr-BdRR6Zqz4Xkj5+G<}%q@EWv^`@lcZf%o|bkt9iaP6PlY|} z%s+;Rl|ei$T3MjoRiK*Iz^rw|xD1P>5fDiBL&uJ!ef;>tIVRD8K~VTrVsNl62u7ux z(Xq)F0OV@Mxc22XSk?HpbAMW+NF0-Dfh`d7O?dF0Z9m-;+nXylguR0`zX*cLN2lxS zCkuIf@mXj_r_8juMYfzSOZ@RRZ(gZ-(93eF!Ov={^3WiN$abRmke;t`I0Qt0THcf8 zp-ie$ncgu9PD#!uJ*6@$F__&dp-4F-{6>yN2=XOl2^oprQeP7Cr)+cJQ1!uR~ zs~uLmdV7sFE4Ifixy0@hWg8!^w59RFs`l}v<>hI)PEZwvPs#A<-r&%XdY#d|T9?~+!oH+^7hW=~g@uLS(9p&4{Y7T= zny`R0Z^=@V2sj=ALATH8)?;2?lK7D5Y`sd4$aZks$H&!JY3U5q31??#+d4Yz8KIH( z%R5;{-FOg6XjDwhLxs*x&W*+2&&KxTB43tY!T)`z_<0hrZ|<^)<#XIv=rRPyP7 znFOW>jz_5BPtNZWm6+I_s_U)aKV1#@(w{8&!o-A5{tK7k;1XkIX6EOps1^{NzXqY7 zDyMujh(0;YkBG4-1loQZcCJnBvV@cI_N2K1C)A);m+(ONstNF!Sjgas#hBNpnVo=8 zGxvE8a2XZa+o5)YMp~)XbK!*z8ZDJ`-cktf2ckH?4*BsKCsITZq+5O;pI-4XxDbY& z5uBzwS|C&cKlV(djUKDpk0Bl|Je;QePdGR}uBLhg@;a=-5wI_gHWl-wHa@4uNjl0s z!|#lsVPL?BSEN%k8n107dF~E5KU~gmE6sM?zTy}w(SuXV#4*1-w_mQ(0Lo6nZi@p` z{h0~eVOwYCP<q$D05%D`aqRx zHkVrT>lFtFhppL2$=$-b$&@eU=B3-6eP!kozN$Lg3Vj;o6DNx%;P_S$`&2h-IC*+{ zM*=3nn+uT>*1f;?#vP7@li32~#&I#48?@KE7#N>&9@b64- z$z!Q6DL%fou4OB6DDj!T07?)9o)ICnxW4`};9!~faG#-IIsfLG7;r#dv#bpU3zd98 z`s=z}^_)}w5jVAvQ0k80EEOXoupv)5y?coZ2ys3KMeaUW4G3pDu+7&P_CC{hKizma zSBdudvuzw83+(}M6AJcp1T1JbV(FNBHq*T?=pN>SESJL6t12f_g&cfDs)QRk-BIKn z1nzurmoO-Wv4ZD0Lob0kkdTmM=Hx5_KhHy!nVoGvzlXaq=JpUbvbKA}Nmp5b@4k(V z4G2S=Yso?AYsp2*mGoff8B`vhsFl6T0C?>`Kh~!IKi<7SXyy{vq|ZDRHTA)mC4!vb zX-Q*P4DjC8_DkbXYyXfx4}*iNQvUzGd+>+Lwc^>a-2zhKAG=5K7K*XorHZFKad4~2|KhoR!DL55@!N#5clFH*}Yv#9H!`}Bo+<0&Q@SJDTwglQQ+P#+rEY*-nno49_i z!Q~M)m9MavZIqc)sy7O`PsA$jY|#k*l;d0L_|^7UaM!2O#|TY~3e}cY_}b~4ooUL4 zgb6|Mo9dg#Ce*V#+hTJ}zQM^z)dGJ&>pA^YvC<=|aaZjwFfHB6Ag5!F1Qp+( z0}WcevvVi=Drq`biAQ0O4!PvEB2g5aNX>yi;*w@9Ki=c(__=u(t+BKTsdWL1 zkb~SYRXa%MQ-?Cwk+*fg+IQ*n4C-!!N{`o648c!hne3RZD}01~r2J}})Qa672w&GF zeO!h;rml?pOA=aZSFx^tpxy={6Yl8m@nf>P+PIlY3RWjm-L_2M1Ie^p+Vi0D%`pc) zq11Wb<}y&ajqCdoWjwYsBbUta$u9_d(a}UnfG#ke&-tstxxJ%zIX^guG@c-DjQueB zWekH#m_>D=*j?b-4t^&T_a+G74n3=m>y@KdHtjd+t0@Gd{33cHRL_41OOM6#!50@l z$=-^-D0+W?dB=FRMX}lze&_V<&!(mZuLNEf3X4%Md3Sfd;|&2&i>Lun2J7VsrQX#N z<5k5i63P1dn_R7su^Pv0Tew*8k~7^OLs2a!Y4WI$<=q`LwWWt>ad(M-dEFQq@eEbt zcgQ8QCEvw#Tgi3qO%aN%u%cMafG(<)c;01YWXwHUn~C_|g&{;D9GHvWq0CJ8Wk=8> z+Vz}+Ca_+<8?Qb0P})kx`}i*O^=~c3Y|d!a+PdDzj84S%vC{dWfdoMtWHu+)54=M{ z-+XpcEyt@uLek`DL;Fk&0sE30Z6g&|`wccS_bq1{Qm|5LUp-@vDHPJ~nnIadC}krm zHQwaX`akWx2T)Vn*EbBJpcfPo1(Bv8AWE->maC{pS5P_uq>1!SXb}sj2uKY*S7|C8 zM0ydVh9V+ON~j6FBtQrRcz1yNJa^vt=9{N{-!tz!^Jg+=LUPVN`>egnZ~fLfClg)C z?+Nz#ljGyxHt%zbdHtd@sfcO02K+YQM$3z7QQ{T<&IFN1#;4O&WlHj5Y}U?bl<7sIp#x2}TSVH( zl%Ijq&_G;PPK%&KVb3hiGX!RHi+6X&Ts4fkv9s-hf53t9Cvx(XryT03)hITiEXtRO zUaTcSXiTRKj&&rx^Xm0=sa$~iyn6eV;j`W+4KL!uD_v33*Y0YmzJF|Rzdkfr++{}o zi$h<`cJ_nJTdR*A2(w2Y(#ninzL}fgr#sNs zM7<|sk@BunGvZiblke}mgPG4UeN*I9ci~NxdQyiAt(}-GoP_7xS1z)$ku$7##Mh;` zbN1w1FCRKK{o1e)0t#)z_=#4J&UE&Y{r#C*7c~z2au7k)mIU$QHF#}34}2J)Y2NVxSbUOQ_PMpIq#E+-?S%gy)0^$C&P!D87;KqTisf~#0v*= zIWA}tuO+IW4f2nH9gLy^X4V?3vG;=gewoXqrm(GduF?F2M@T2Y&z)vI*Vy76eE+M5 z-7PoyhAqy0N4@vd+OX_;iWaEz0HkPTW%VvKH5@!kZ5*g@Vp~vyiVsjRr@pOfGqD|t zlRIysUO48*HsC@x{fk5vOLSQUIJ^ci1%86k82@V7uQvKaWu8YM78?6b@S~!?3ZMdT-Wjqhk@Fd&F=F zCVu(z)|Btz80HC`3=^W9&Gi6%dfe};=k?`w9{+qxvF*1RE50#Yl^i?u1r55t z-tRnj#_xW18djh|_OM1oj%zgA_yPnZd=Ste1D$D@APe*JEZ+6l=h+Z<(&gz;y)2!n zhT%V0SkBY>Y3%}tw;sQbPN&TMw4HH`wBEqawhyi;iD*CcqY+I?NwOWoV+J%|y)uc| z2d{Ted2Q(k?OD323@9j&W;cloa=SFg$jXn6#^FwJ7OT)KW=jC6xb`7_B*(%+tS&ji z!d2jWd|CUbLe$%KsS8NI#GBN&%LRj9q6g6e|J+$e=LkZqEV}b@syS)Na6qBz@!nX{ zFatde5-rI3j~#{h6xmoq<(*se>@J(UPV?`c8)jVUP+x7qxMD!Uk^GyFI>n&$xtt!D zm~a4Y4{?zft#`=0wEi<{M zwh{M2xKDS@?<6a$OoFxn`O@`^G3>6`b~cc&1_3(Ujo|O^f5ouqD45rc%L3vQu*=l? z?GL(J@0k79djyiT-(=m~RE`nRd5NeWV|+=&TgKGdD!941d9gGc91q^Vn!5bAid0+l zZaxo^he+temrnDV7!CJFBAV)_M+=_(W6AYCw*;6QnvZ)yxnO8ffzmT$(I`ZH5krB{ z(uwkjLZ$MztNLDz;RIbFnZ@7?nJD+=3#FByX zyFD{Zy0fB{eat6bX7?1m7{e8g^Av1-qJ#?`(-0EjBD}M;F`mIHkGCcJ2N+5rxW;dX zP899cQBO>0>1NxU%**KGjc^0y%%aV$Eu9ZOt`)U?VJc7hv3dr39kRFX+&aU_`Ld-p z_5d1iwSn+KwrZpeG#@|U|z6&`^JLdY}Bg2s7A?Dg}lNceMa*`d@uQie5;_>5(o#*FYs zr!M_nwk7&U=YwQpPTHPwauGYbQ*zz`FH7cYnm|FNG=$-UYucT%WCeH>AWI7anoljj zU=Kd&B!F-D0pBg-h@#NVpa@3~>cNjdQFgFsS|zwzJ{eTubPE2Yz992aJ3rNVVthR4 zu9NkF&W8|I*V68eUIBu8cI^BV3rn!Y=|s^B+}cpLs9ooi7kMS4bB$#pqmngB`zzdq z6=BPr`F=#epS2qAY~i&5iTP7fqD2DKo<=!k-ZC{{tcPE`UYjMdoMe}(6JtmXsG%W_ z8pm}&{k5Mwxtao7s%Ka9lMI+U%hG{Tne{_U`u++5#g_Y8C?(CxER;pdUqO^Y2puEW zhmoGHdw=~&4OafnDaED(DPFcEQY?)9L*^*kEXW$H@mOoeYJ0v z0d)q0VlU1fXu?fE*n^5q)e4#5FpB3by$R?Db)>K*5wVB(~*kj7`*# zB8|+BT(*sE532?WX?V&H71ZQnORZSOn+G<_pB4>(Z-yiXsn7B}YysXSrLVAoeqS94 ztE-m)9RnhL{hQ!OK7P5xB=N(`FaerLO-;>!ust7p?IDl4kI!{OfB!01*L1n-UgYb? z=+9CZQ7b_f<}ho+?U3KNlvXTe>iI2PxB$dB%WY5xYN`u9G>}S;@I`RVbl+*zWTqvORZu-aj zhT*sVBs|jr)%x<;bCLiLFVFR)cXcEJuGMYjhlNH@`eTFh`k`-MnPX~pth`r#Tmln1 z-P&;o6(jXx<(au29ATgla=S=FbG*y!nO-cc$yCI&;+Dh0iAR>&r`i3U4Gb`UZ%Q3o z7(5DGsn6K%XW*t1K<$UZ_$HUTmvaGr>5-*nc})B(Ys29uz)&Ys{nYTFlz3NFb=<>W zfjev~p3ETpcNvjTYktYmsPxWd*}pk} z^TFSKu(wDwYp3H?s_tM|f;76vwWL4kW%E!aZLV!?ox;li!h z?depeCVKTN@DC~l zm|8m+=Dqjv0GTGvdVIn|&Q&gjg0LbZZ-C6;R0vH-!wq1Rbf>t-3-6pP=M>>bO~yjj zzZJBw3Dr@d%^kLTk8T}x&2|{AdikW6>rbcLj-=9izw8?RoGbq~|^ z2f#kg?@ax{z))9L#85Y(B_Tv%hq|@%(mf*EDAn-;3}PaLGP{(iRLf+RuK)NdwmjN!y@0leOnkRMFHx43Y(FhUf_%geD?e~Q>*F$${^Fn2h&xv zYhDytJ)fpW9Q)PCYfi;tZt#>E5MfYDYFhIkYxDC@sV@aZdgSi`(wk}632@(K3z%Be z)D##K%<108dt%@-5VsGgs@>Z+kMQ^`uXbJchJ;7-)pQoRZ<7!VCPF4c3=F%X4M)%* z(9w$t3DJWh9wY7f(_9ap_0I?1y_b4=DIL^%KoRY9BtrDS+V^hWfZz0~oc8Bn6Lf$U zrA}Acx|7L)3>4aI7a;_aKMY8^>cr~mc@z$~zUdj2Lch(6JZ|!bTpMfgkpD+mm3VKc zY?GaJk-V4Ww$|SFS@q^u+6v#wuVwv%Z4^9v`p#YRqkMnpr<-&?0ipqvU(!L8u6zOT z!6ovgt1qB0UftEQ+y@O{^FPDn{`=VuIbAuowe$bvbU_*kv`TXWltN_>kQ-3fLvH2& zmv;y8>s0Bog9P{PY4qC^*K}*6vnRjw7~esUx8nj=o-6J{O^({;vdbp zzdB;RegD*R-EHkkU`-%}YZO2|evY1TWiIoXJ)@*Fx-eXlghq-Id`t5#C(Ad#d1!y# zPb8?>`0LnU)^ArukWT*a9UjGZO;0DojqldflGXn5M=4v&2_LC;B(rHV(qtVA zXAqFJA6DTW!{M3%(aQEKpD}Afkh?uHP8J*&Wv^j5Y=;9(n>bkHik)dyBba}#B)2iqQ6 zy?%Q^dZT(~{y$)Fq8N28aZvCK`o^~?(v!Fo_a z;pOobIMjj%(SCodkWz~k%pfo34U1%hes`0~I6;NBaY?cE-r~4QYaR&dhJPGA7TLHo z{SqX;7z`sTBO`N! zBAvj}UwR&}NBC`*65ZE!9$RkQ*{RpM7R^hCK0Tbg6wJukzJ5OVhF7q~ino8I11*G1CQBv1I7uyDV`;*mpHF!R z(0e!cSdwmtq}#0gE~3c^tT|GX%3rEu@R$h{eQ$W-y3FdjFpQu{QP#4xXqrNC;!*?O zER1rJsMV4A=?_|?fG!_~BD!p2A*g(X-uV1;*5e#xMPk_CoknqE(r(LbnVJW$Z8H8? zX(&|xh58zr{zbzn4m21pv_=EsuDbwcdZshQ7CQ`{xOQqn3zg~DHQJs~`!vZF(3bLn zzd-|K2dIhh2}#9(idp?lWxEXn=05*wF3`39YWVL2)rAROP0BGf%$qLuvbIy&t`)*~ zhx_(;6)wGev+0vK{1K~}DCXKGKq>1pV*HRy4Z#v#^_Md{<8K4P5){p1Y*9~|I{?=V zIV4WA6;0A;x!+#s=m(|Ow5|2ik(D79JEtfhEfP^zBxC|u70@IC$Wl<81Rbx<<1S+^ z*FkA~x^A3Tq3`3RQsdyBiB-6t0oneDG%pQlsd4)>lPfXn5W zICf&?>m{Bj_Jb6O#9EL*iz>Mm`U)f(|L%+bC*J*^I09pqoEatSkk&E|}F~Ah4$D~yX{m_FEveE+XK@uGPE_HUwraf5_ zxuN})uj=u6@A~3J)Q8(W{04E2gD;NqYb2;Gm(ofguu{O$9g-)=>mEukn{i7PqlmV9 zU*B=-Z{v~0zeJh7ht2)0rmG~9Z`R&;{>e0(1r+ElhBi1glI6m9RU#&E^D09!xp4ez znX+ztt#KpxAJeAl%igN7K<@9@&Keg13ZQrNN#yDV1!4$b*TgMwY{Lz&= z;3*2l-9UTN3be>2zX?sV-J||uH~6ds9VfB%JW^ z^Ma(q_wDpdxp;AFo@EBEmKZz9G7rJX+DUxuwH%VKBBP?gN#IVI$}11!`1mQ5_WPzO z&hKWbwxeCEx26f$Mc;0#K{tg+EwkOGU@hYP>k+J_ZJ$f#uiO_3-twFuJ9CchMmAQ{ z@T=RounWJM`6PIf-H36G84d|QFLxzsqHQ!me5hamcCDK=d7Ob^%!pq*scCJ{y+9}w zly%f%gH9JBqO-^U;0YZ;(E}&+WbymJu7sNimBZ1@XFtZn`&firE?~$caA-A&QtjQGKPU=&o}O2 zS1f2$Vk}J@amvyQ3puakA=Ynso_3He_!~4*K${D+@ig(JyI82jUFqCNfffS7HWg8! z`0p$GUJg-$a&Kib>3YlQDilz`(fG{2jI;h`sLRZXMUgyW_Xy~BbGn9}Xp6l}QO`px zu;a4E)2}P_qcanEjVT2aV%+LPy&g~QUIB^YnFCTwXHL@-K;Jb zRDWJe+IG2N7YxHWBc`KgB_Y1#^AQRr|5)Pp&vvTrdZfFQysGk|gpnUq@}))ue$Dvn z)65if6S7>5er2J|CU0>D6rgyV%`dLcE3_4BmrUv+|guv9Sj3M-bQ68);ED-Z~mRJF<^RhyF&Sat{P=hFraU znu%0;Km!0n`yY9CkZrrMb3%L>Kr4X#fk$*o19jS4x0d+*0(WBBE&eA$%b_N*1=Nm@ z3qmjPxXB(k8;T(QrUXvzZe77})com%@ycnz^rm^6Q5tadBbLe>e&cy9-oJmrdU8_h zy6?jI9@`F!q3{%w8n>6vjy?N$zgkXIp(pj}Q!1de7Kg!Mh#B#6IoxDQF9BjJvWRj} z2WZ`?)Qq@$2f3tpMR$&imbk1A8ooharS0#WL2{WRyClCh=p$ukDwjW8xJIRbBB3;y zrk??%8%}!QxPfXM>(g5QjXMIw+ZgPM_xo)dmq6-<}f{qR_jKpR)4NZ@Nh~1*}nnGA9GO)VmuyTa@Zr z>JHtHOl$f+5#zQQ#ydqb1X07nC(H0n>7H;+%O?%B=Zr4Z==#866b_DwcCSD2j!O0E3#QcWc9lFSime?s|v!aM!*Dw$J@0FDplhVic z!JTFa%BlD%A>%-IC46Cot%C!2G_X+XHEkcy&h764#g{mUZOCc;epphiZ!6lZo49vP zU$lxJv(<^f=9_KdHIih6BLdpfXuy-Qsi~fZ4Rj$#5`ub84e{o0Hl#?{ZQX?uLmF6x zS`utiQn<-0DsZCwXqRyfuZQ_9CAfDg@Y*6a zdEq^R&RuQt%k2w>lI}l(=&&!l5U}7ZjS~f=D3H}A142`EtHDN1#0Bek$GYB&PBSfNfOBY-q>y&cFZ4Tk>H{lBx_ zp`xnepAZPupL&sR8e7@ak1cAvhTnECZS!MUNC>cvpf%U+2PbwoBC^@*2-(A-34^Q( zLOq#lMGn)61vKbvEg^WgiWM#eiw$yFixh2TR*?kvtP6gSF@QxCYkM-j_zWk2``$V zB6Zj_%F4BvB8Cj^Y)KPsntlbcjQZq8;^XqH~*fEVZ8d6-nOwiFRw|^qz`GR!gDdM7v0P zTh4|R{)W2?+Nj7hvla4il3iL_g0#C0Ew(cux>*t14PV~wY8PCVlSb|RYL-;6R(sl^ z47A8$Y9m29aoNnTaW~^?PbeKN$l?Ku3Ar* z#Zo59&LY}*BHvFrbtkK7%a@$cO0&$s=ne;H@IM;hVq|8ax#T}3G- zOZ2*sa{vx%)%&?H*{?4FGCd`W&0$PQ8gi;soS%Hz1?4Fnc2gJGX|<-7;RZTb5IJNy z^eLgZ*JaeZdp)6c@(TyyMG78QTdRC(*zpc*Jzw8CKf&0F=$L7vyxs3i_TwsQUV?14 z(q;5#CzQ^Mz_H`nX#JXv{Dd#_BJwyUMuY(^*VkpGazdv(Axj%!1pe!)Nr;bcIjPQK z8=!&loo|m9=am(LahMaj_m#BMuTu#=L5D~l`I?ZZ%Dpu{;ZOLSMBqk1fRni$>eOP5 z+>?rsA5%5#Uob3|u&Z<|?MNRN)cv_klyv<4nAW#C(a2seAC|H%EnX;7{hPjkG($&4 zB||N#5`s@*g(*d0*l=z-}I6OGGwu}F#Pu5lQQIX!^(=w#$KAh)S|NzgqRr< zv(C$D|CzEyr`YopZ?=-tl@LYr5$<=)x&1k&Ovc~ z(*VytPeMnjmBaenFluz~TXAv2#t_b8dx6<}-+d>&+k+MHATebUAkpgNlg()fmQhgP z>lZeP0e72X-(@L4&~cdL2>*piHgHcaxLXw8#tcg#D6O_ST)C!~*RH9Kv}uiECp_og zz0zEb{q9eEMvt%1=S0EsSq~+7v(JmP_g33u@W&~$f{V7Po?d|~4cyZs%Ra`Vq&`_( z0QY8AvilO$cB{`AH}*U=hN8m`S8#!ARmt1k1c`#)IAfdLz=-z2Whk%TQlTF(*x6lu zDk^hD4^w0iaK;)M8dks=Pfku67Tah7XDlHj69?{6oo3Y+ZP#T~yv+VH$ksH8KcSy=-J9&PY?>FnkJsh* zP)zYVS1qA$&^g2oviy_XeKbQhGtLTQn8sG-HrvKQ9!FV?ov3t3fyP%p?CY=8l2_C> zAr)6`Y+6b>kLK+ge7R_#V7|h5FKM$JXSI|JA!#bPjW)YY5yD$K~? z2H{!dv+KU_U*w%5D@l|UW-k;D@q?qIz0vQv%Z0iEH*=C#zl2y-cE4v3GA-vv5MH8i z?oiW2Stz{JLHt2+P2k$3I^h{_YBXtEQG%wYbW~1sC#kk`7~-yD-%$td7{W(zUzfyG zuY4E|+~yqgMulL%Gl!$Yx#SLYnbgY?wd|e`UvzG!1Hd0_oNl z(%Av}7~D2>S*P+Um)d^6E`fKrHrup@$zoHMl@yVtyFI{)R1_RARa<425`KL-R7o`# zD3L2*Y&*25@m>d{Ygm3L?3DG-_U`w|+c_aN>1KqWWzn|fN2TyeY_{39FUv^5^?5n+ zC;FnvQ}R}0injh2f$P!iB-OEzwve^&R2C|oVO|TX6o31_#}Y{`dFiyYH2A!#bGs^- z`uyDbHrwV;{hCB#)jTJuy}1jWSGkbP7&z0wwmI0fC$KEHs0i{Q7>o(>J~6o3*2O}3)Z_>ZJ*>j1@oZx*0t-CDQY zfkH(fwtCn$yXZw)l>C-cXm)2#ux+B#BHH?EcEdC(EF0fYrmmY6ZZ-C>nJXHWPwV5d zA1-t-hCcTEVcH($vZfWo(n^ubLRHf9_Sp7Cx2?+2$fP)t4n~B(sz~{o030np8ta&; z-Q}kppx@LVZo57w4IgwBm|Ai&D7qZcwv_~NuhdACu)bnxnJro1FaE$svb?ZksC2JmvI4jUC11%3tgwu z1-a(8P-83uo>{Y`iWE`a3G91l-;u7OL>?!Rvy@Up5i1QQF5|Z$8`Ak5lBnIaswwB) zt96H=B@H8MI1Z)oD%YS|W_hzSUt%Qzjl@!{KfpH3rsEcJ&(O=3 zzk-Y^Md0)yE=0BjnG7VRFDIcG53Sw2t#y5MokU23#iw99DLF%p_xNqn=u6h=T!HFK zG+jPhy6&ASN{Q9P(QEGB!{TP-Hhp*OAa05twRP)`iVDaU{tnAF9v)H+4Z3b4A8s3# zyIJ=&Pjc_)x*zYvnt#+775$?U# zu=35{L+(GgB=JKOEm}r&*+Fo_h)(0t-A*Cn8U%J^ej{D#hsmuftzVn+nmnme}0fm-eM*U`2tsr zXH}^dbC#Q4G_3S;OxTMdA04N2sXg-_KVtQ1HQ{M?3%@uyJ#DB}&^<@Bw(1O^#8?)!H&&i&Wp4OXc}B#VdUZ zuKlxue0#S2-mv%}do3S-TK|dhZKWON7mp6$h&D++zhYTY4e_y zX+mwBqIVJ!+{nnl$Y={1g_M<*XNlY3^{FJYFA+SYh`*N-PM!APJ-TX34~1KI37NLK z-o5oNNt4PfQ8@Kf49PlyM7JVfCrU zWaj~1T~Z-HZ-L6|mhIKXA z#%B4TSLk~xhqi{dCyBttN30P(?|64=v*folBit!5EsDhR3MiS3CpF{;^30{EPe zj`muGWeXCSo-1`oFAV3`KOCpJ-O1IFv5)Hkabal|@Cdt5rd+c*t34&jz4sVAZ6gkG zeW$v-5|)n)%12CM2sJ%g9Z2Z*Z2OQkvTD}Rneh;XrGLG!WNT{7(3|Y>qiWb6=W}Xr z24RaHhiweG8ugWQuqYdv*^+zc2)m4_v7Vl$$iP}u5L%>Gq2Ck{(77{4Cjs~lU?Ak_ zZk1_g*v6ZxxdDA_ssad-338s7X+ofmH(+FM1WH~nrzNf@^VnGGLDbf9ix~A@T{raD zHV`3gLtBz_gNyS7tE1M}hoOFYr{t%`a^@$N_b%>vbcRS2Jno*zF|CxLDh~|C%f#OhruJk7*+%Hax_sR{+>DMZ~92a=l99a$m>3 z{;xw0(IdDHbVXi`uLb`}05rg)rZF}6#^Gqn6i0G7&5~4^nVCt@jH6?t``Y&eJ996u z+Ed8ed$$XTBcnvSMs^+znhtt4{c?Ehj%#n_yrwtRl;qTwUb$oxYwT1lO~h8*4wbN5 zjbhhTYi)NdJy}=%i9&7tQsPGGlOh77lX~}%4Ci>px zs_2KoiGCO)C6B(Qm(vbS-c7Aqnv%th`j4xdwf@XN7d>ih^IwQYwJmpGL;=pCE|cBI z^-q@i8sPZUp{aFDnVfSV-YLOjV06gF)D&4YkzLzDk99^Z-U)F-_@Gtu0m#`M<=9Q; zl>iSJ+IM@J`A~79&9_U4DE;J>&nDhG9~R0%{teQ4+OhswN|yTwu`|O-_=I+93srKr z9t{{sO%N|Zc?#E9dWOsIAt7`3hj4;^PSNY@pCSS;6Q^3WwoSOjc=c18x-eYZ;al6ew&sf1-<`_y6{-h+2PyGr3(t8^oo{3qub*Hcsa&n0o=(y=19gyHq z5g)B5N`p8x$g#e?lLIT}XN>uediQ}pcgKI}y4Po$MTd1avYI8&=T$1PXHyOzU?3CV z+-T2!v!t+xKu%OEROPEp?C!s3mpi7R)e5@7!T6OBs6xJfBU&6CG7KL$;i{TFE6F#L^C%ss0*=6Pg=l1kx5QQaS(T}7IzdOnS&gYWi>`p;Y#35 z-5wUYzEHqmQoS46YaHGSg(R{qG#XTzNPVTX(MIaD zH9INJxE%M+&g^ig5)Lt~4j+$H!N!zUD?+zPUHGIb+?O5+AY<7Se;wFfMZb;Z1B##- zpI*x+8?wNP#Sp|&M3V5=0Uk-4_7-|GA1jfH%@1#LVJYB&WzQ5mmaB{RnD?&eW@&YV z!aO`OwNesQ&35KUr0C~+ml+Y84L!?5_c3ZZD^vhi;vRX4h&R7?Z~}IxvP(nl@sYV8 z?Tq#U*(|uo4B3(R3^dZZ86t0^lPe8yw;#W7g@vovh$k|~9$>T1C_w5Qj1ZO!*59<> z`Xi>R;)yUx6R=m&e!n~iV}Ns`s-rRQOoo(`;*8yf97}C}=I2$5l=LkW>}({62i$Qg zvry#+PCq*j7O(1#TZn%NsF#Yo>W$wN7M4agQ=@fYt~cS!R1@_zbIjRGn&fHWsRhutCRCIE3)r)*1jV!wLsOCI6*zi20s?&D<|xe7p)& zZZCj@z|ld;7L+MQq7%=oW_PyQZa(o*KC#Vg%LIb81 zqb^EPrESv7??l#;dvol4eAM!4o%SmeVU%c2RX}ZupH#;u^MePBj9Ukx=%Xl zm{FVGO}t0e;XO&1s3hldi2U*wcddYa`J$n!5s4L?sN7X&$aIXtc6nFF*C8h)j??v) zNZCq#4kve4T@QJw5@F(8J6my!LG zT(&D2Ryq{F=WsL+=Hq!vY3hgn@-upgufCp?DU+vuqVe&~3j9gWfpZ4lxd2?ETfJ-Z z^jk@#cNu7{&V|8Z!e{32E*K;Ht_dcI;z7 z@KL2(alPLbEu57R z6J=yiIcIuI6lH+&{h+@5F(wKOdXF+I%F%#vitD*kJQIAIH2qND+JEskAph3=sx?yN zq8x48@8(Kp#DKaJW%p<>h5!W^_+HIOpRWM3xB81R^pjk`hp}C_(8dDpP_UnF8wPa- zr}F8zVb6Y33fIcd&;QfYl(r&|zAh6S0P-B5DPZ?spL8WHo8CH(76qO1a#0_A%95)T#RU~T^~s+DO*%&;jiL>F$L#Gm>S_eU=B zTKv6#SrQ->$(sifs>nnC+3yJ|ePFMBwcS@pd(B+wzn7Bo{=g(!t0@8qRN0>?C7(8u zJUrxJN%yaNe@vi@z)%ki>u{3$s`qau1Jra$70j-H`e1f>^T3jGr2&=)x&p3{A_~*~ zW9GU#`}X_qSNji>BWdmv_drwjO^#yc6?y9Yp5RRT0{~qr%KKZNfH)W^W=+w{zu$rb zmNfT86stqAAvM8-2WqPQo@_G}BGD9sdJYr>*yX#rtW;7W@+_xq<3!ty_6F&7b`*)O3kK literal 21186 zcmeIZXH-*b*EVX|f+9r)r3xa_L~5wg6cm(R6r}fnbOO>LD$+rEuY!Pz^ct$v03j6V zU0MRtJAnY-o&D^+pLd*b&KU1FXN>b}{}7j9t(ANB>zZ>KtfnGQMnXq&?%X-D=g*#K zoI7`M3H&*CnFxGRRjz#X+&PWl=T9ELa6iA=bk!KWcXqgiJzib)eN%;qm~?JjkV^3O zpS)TU3tN^ua@Bn9k{x@uhQlqG&y6(!VT2@|nEWUNrC#-&>G3%8*_EEzXgF5CuT;lK zk;6!rf8FgS)7kiEBHka_18U_OiAv;|R9y?_6h8g;f=!Jrw)1?fOp;QjQlb)@AW2N; zho;X|nd%Ck&c$fFmE-i6$&S51#ug*blu>!hOO&MbPbBcOuOdMdy0VLdcu` zzBc_|TwDBekIZEgnaK*lOf@U?O_K1(pDKu`G7$=X&4eEp%87EQlDVj?1T(7@-pM(~ z0jbCo&g)(z5#-3}d#j=UNu5J5^IUj)CU^>b+D8{FWAli!P$N?)^IQSH6&XQ9pg8rn zM6m=Nf=AwhH(H@z(ovBB!RgR&4u3hn3uGKrx_&b6i2NTr$6?L}Xv&A*%3LJzAJ)&g zE_0dr!!?ME{7`feA`QfPn?h5fv3aeI3M}RoTqEM3684GdC5u* zFUMIvocYKm{6aZ~#9uD^9QXq8y_xDE`LW<^9FJ@YeZ8VGb%QH4;HODyu@ZOwLD~zS(>nIp@NgGu6R|{@4C< zM*WN{P9s0xULdFvD20rpFFC&)bDu1POOWt52awka*t}ikPc@<)fR|jNi`AfsB?#aT zvkf)uJ*5!4A3AOp?{MCa@SO0Wu_BLPM$&%J}b31k2Q zt8w&Yf>VQ!9m@YSO6Gb0_DsT4{})ACQ4xg$m8k)9R4V|35#A%12@d$5(}t(XIK=^5 zUDCa%06gN7t_>+L(5DJH@CdMY>;*vua7A$ROS;Z+1e1~}n5cng6*x&1I0fl0Sqc7W zKA}wD+-f2De@g!N(;-EHIym7uAaI|RS|&n<@XdZ8j)2xk`mCrL)&I2iW#-nsr0Z@4 zgV|o!+-_0+N4I1rnw20cP!O{)NCeN33 zV%>KQR=aNPEHr18P~A#NltVNznQG_Q^7nN6`Zqst3VuQV@KUYrO$BHC3N_~giHGlM zSfpDDO#)BwZz$zMvI-bSW9re$*)k zj?&Yj(WY{L3(38>YSo@A#3Zb|!IC(Q6>r-eP>PpnJd|na=`8K5bYWT<6UN zPtc$U9}21siGbT__)!~kXV-sv@1~@yp?%M1DCW+oj)Xy)N3pt)XXO`V-=sd(lfikuaQJV6h+2Q)EpGas1>%&nJf^>H$Kz^`kiU^bJk;til6{Qp$g?eO7~(f=UpQ&8Q!O#PKLYWgRbcnN#}Qx z*BfE$8uzoT7BPBb0?V&Sa|<0dwUho)gFNk28S5HdEDL0VG-?a=>iVtDEZI&P{oA4H z?PWxg|vhS0Ced{>OtH>&ps#)$bT2s@_}3Ps?#WHA(VF5KE~}DGRRc z*Bux<n=OxJ2{*DAo5`Bq`k3R8 zU-Oq=uG{IcNuuMQtM15$c-6qH+MgL7Hb{=)p5p^GMmY=AbWQT8&Z5#XI-El9FjbIc+}pV7J(=Jov|ORX?gjzQET zeL3Hak^#!hEOxv0rxfEKu2vn`eAg(4ivI}LD*d?arxdC6%-g_}k=FjEch#Q-eM!VR z5A-4;W7FH#Fl+10Tqol{YgAZoL_=N`9pz=G+{H*Uk2RFzO+87KT(;D}Vt+h#$}M!TG+n2g)U z>w_lpPHf5!Yk{d686Ki}164HDQflHj*O%M9LaU-<5_$_>%*-UvZ=pU7;9*OGmny#M zCC#PV*HyW5iFx4gQAei@K{i*D52>c~2AOB9TO#9Pkf$9+v=B&8kkLFMO?RlE`F+W| z52+GJ7D|j`5j~As27kR?RDwf`amARZ8^3?i@P-+(gu|Y?%rBVQv;4DW%QsQ+P|bITAeuWckz;QT1pwzXBd z22|)&^v$sFUZ~-ks(r)F+7AmZT5I9P>%7cV{tx52Hm4FB>Lkyog&7~V)!VKtm{f}< zm%I*V7J>v$%{Fe2bs2oNSahsiO%%8gqd_I;xJ~hd{ho7C^0te%?#S2HmW^(#sRGd@ zw09x9a()8#9lw!j#n`nf`R5L9)3k%ZNU5WDiHcuG+w>J!F&d(^E%3#is3{K<3>{CN z1uP$T>tG?qWXj!gmQAHyzd15Bz3uQ)%B#(;Y=SLkUJ`7%wttTBX5HT}IZ@qM&l}dk z7VXKBAm<>`?#J&lXBuAem3YXQQ!SINhSv!>8~52)JQ7K6`Bp!h+8C=~qM5#~P7o|IR?3D$!g1vi3?vt0{J2>4#=oN?+bfgZr`D?VqXosbh2+ zc4&+oMkCO!brjp@e@MBBN@=IrPJZ09>i&X<>;s4^nF z6M?@BGl@2>ZQ@(FIp*gdZ@5uMCpat?yu0nb7v&m;^W;9L*)Qt7E7BXH5dsjy7Oo@k z`7;&ElXsMpDm@>`!{|rfefaFs>R^~$@lo=6KMetPoG_=+4%FVHY@BIcGj`>howLFi zIiT72xvy>+QELh;P1mtG3kMi$=Oz;0R6M?8-&nzNEn2iPcC0ICpEJ5Osf>~?8~yIHq;pp?4A@PwW#ZY zd>cU4Ax!T8$Qfx;vH1uc@?gRvtXb;Sjc!XWHxnzPnGE)aLeLI&X;U|T*0jdvw$AQG zuPW%t>9g(a0)5p2lAL9=#`}67Qy=4bAy2=6l(@o1+Jr(UT}q*#^ft zrs9q}QqILzEskd%<0vK+Q>){tMeg8T6>sTPiD`i4h&u7S<3U?*%??a$xw^IG3T<#7 zCLyFZkbO%H+ucV8=jtT&#jFuOlCCCfZaFS4b4sgKR#O{={Z^DbgNY_9Kfo{Eap;|T zJDlA7QNFF;a~E6pFq4JsTf8jZ2!OfaHR+}wu6wVw>Lsu|xqVq$Pt)Pmmlz9GMs1VF z=w)A(@m`PxI`eRTbPjlWYJ+3aPJ+g!%Nxv8n;xHdqI==-#qxY?#F+WrIsFS8+|vrW zTIBxzY2hrQ-7*@Uw*r&{RUwt|b90U5!yn|?i|yg}3aqtFflJ2nE~A0F$8yd3k2O7U zO!VhOxfufqEby5hUvTTCqFyI`mv(&rc#Xc#X6^#%RLao8mP)vz3tv=nTubZI6fw$_ zXC_{Evvf)&!@^eeN%bO9Ob>!oeJFtBkNc55b{y-L1BK3}Bq{L8W#HvhnS-5|7v#Fah;PXb~f zvE8Q&ki#d}Hi7SB)J;bh**TWidh$=k)zC%vpfSN@#HyQnM<=6z6oCvw`dSAObXFmL zH<=M_!*6MJ*%b(FJ`?P`Yh`$~R&EGSGgWqTok!)Bo$!0tz@3N2s=2)5xBm=K1-r<^UOxP- zGZK!@}xEx(5vg&(NN*(jOw%&Y*D3y2)xx0N)V)f#g-6jYTOrD@5P z&FkzzVLjO>)?~aj9!||9$-_K_U5`~#&Gr+0B_`I+PaD+v*QUvsbfBu{R;{4R6RLgi zIep>Ph)lcsZ??(X3^oUhSPccD&}r{fhv9YT?^5I6+T6&>ue_V{m1?9{+sWDPK1`Qq z>uwtwi&AEiM){+@dLum9{rz=#?%0QQe(tCmcZ9hZ|BNx95kIhW4LnoGw)X9IuVfeh zn87M0nc~I-kIbAx>XZw`{$5nrMt_;MC6V+qd6p+PcyPeFInQctj@^RI2-or7d0XP_ zn_CPZEY)C*y#;xC$YZ<_kRGQ+A27mXC%=FQl@KwzDaFY1;Px>Mv1;2j2I%aVJ-S5K zZa2C590(Pt)C^^TP(Z-T6PkfqAywa+u%*z>@}iC2T}#hCvu5w@0%4Nzo2Oi^to2jN zQ{Tv&Om4NFEgA~|&~8FA*l_-)BChY?sR4`ZjmO}eb`-P zm}cl>jM2z!nn3%j2ELikwwNH;Vo|}p99-jtE5vARP83ci{lWN->~Lv%B7JSo{Qr{ zmU|7CNhyil<^WnR>NWfToQ}44@0Y1H8_Ja-=Z>m~<#%CvN+P#~)2@ckme^u%EPwo( zM0-6C=mh`;Sa}#+A)=RAHXeNt>UVccBHK={2aH%e}jq$PYLm2bIgFIq6K;?{Ehv z)k0Qb{_yJqe%0EEv3FU-6J}z7CN)Ud%Ps=wYhOu{Q-_1TU?NX{7{MwW)vP=CtpiY= z8=@ARA}vjtSPy9X{p67^KLE7PjI9#CWU;VNYNg0QPmy+4n4hdbNJR5^1iIx#cX(X7 z`|KXPJvWF6r=9lh1(%O>9_2?EcS)zoZh=UMv?6C4&@+KR6!qe0so5cv7sa>6S?oYY zzvWr+UDgL~#F&D=$Vofq;$Rqa5FqiastU^ww0*07JcGvp%?x3WSQ&HNyk|hCZTTu8 zS4poTrTKo`zKM)6`>CYOZBS0WYUezFq_1`Me-Q;H0zSW_Hj{z1EQD@HOwgRFLE0sU z-vNk!?Qly29Cv%@%QT^95F2LOzH9FfADffdS{BfNl+lhOu7KA(&N#UBsiJ-TS0_ya z?GXLUT)MuZttlN#F0qp&;H}|JpgVMWpYrL_EJi3;G~p5WT~6H;=i-_Qr-K`CVh|di z8X9>)(x=(}uGN*WoBJVw{*v;m@}${;_r>G3lfl+n98dRPtYcK3bn?W+3LdqDG^R1V z&LBmp2ud-xjrN>9c73k(SoO_(-`Aa2ro1sR397i$`LSZ@3oZM_kcCCPuXB3uw{yI| zsDBdN5ne|+E+~nFEWL1%Z5#c+)zsnyK2t&zmrN-lP~elXU$ zF-lrx`}DX%hh7V}!y+2;w1!6w=l~-p-Y%-0OpVt}!|M^Pjsln)$ExYbLQt9r$_iVR zAPx14=xa!q{s<-Z?FG=v%G1b0$_R0FtI=BffpP-d5J8?6#j@e8p(7uf=z+2;5h|H7 zoDQUD>lelVJdBpJu|iUWj_($)41Z^vh)81v?U;Z9`3Insg4S4}p?+*I^1v(l=+ApTK4Dmp2AC|8HU z`;XfAH}|9BQjobVdHk*VDi(kUGTOQ``HP7s(;mDcp4O}L2gIedB5rHT*fB5wuxUT$ zRa*v-nR^!pl}Kw@vcA6RB9@&$?z(<6L&@FcLcq=1k1=sEfuF)6hyjhVoQ-b*VsME> z#CbI@PZrbpFD~loz<>QAZF@Bv1fX~Iy+q4e=|_Mu-7!WtTn0shUbf|%FGv9}pioz3 zn^>%dHIaCPyh)I%ilxmc?f7s(*kc<4NdbW!V2`#gJsH)>;$<@%^=y5wY(uBDmt72c z69KAMLDYpen^F$Y@Jj}bwhFG_#0hf&AHy>e$6TS%W{2$*Oxgk{pD0vA!CF7L^t1XQ zORZ2|<}p`-#cK9>(qr#SAg|$S9}X6Ejk^UD!zPW_cetARzM_&4_Pj}A9w5_iPqq7z zCT+7!uk$?c^*Oh~CiOV3w5>V~1WmLJdhUK38JHM2yZLm)*iE;7W~h#5u(?Hca&lPq z`#2%Tl#?m9U|LzlPzr>yciHSYU^)N-ng@mm{l#S+1jtU`CvU5O=ms3OT3y$MjeDv+ z+io2>Qzh!3RvX(aJC7-ze?3SytomMaPrHdI-Oa$jP)d|5V~eBU zeRAR)4(;Zvfa9;Dtp!%{F6t|E-Vy2T5~1JMY(|9#y!7GZ;Nc7h0T-mKlwAz;C8tC| z(4bzY(sj<|H5DgS5zua z9T2Siq-&EOKBc8Na)Wx}B;r|OBrdma70k@V9$|p&`Drs*H7a>(tV!f*73SwBV*{%0 zkIz(X5>tHla-pWww=+Hj=0gbov`sm>;0h%s=E;NJvDYsM$r*d-K|_>}ZU=J8!7Bnj zERd2;B@g{F3jby%z)1=qp%R;aLOvv5u$y6ZF6O7>8`tJv%b4yRNnJktC+MifB1Us^ zAnx$93yCvdk~_kP{#yc9=jLm!X9~SCKYBOF+IWBnpie|lEur{cUhTUEs$dpg=T}+Ord^nHj{TmRqa((iP1y{xdUiN zEK|vAbp0y!Ai$J5A+|kC$ZOQ;0f`?dIO)s7soSjeCF6pu5>r76&j<%q!uz|d0_0t? z1ACMEIYB%hDg7}mCi^0Q{-27mUggFhMuB~qPe&F$85EBTl056|fZ8Pb^Ny^w{90Z5 zvB{(ST5X6rWf*jE)D=uNVa{x#OjW}7a~?VEd7>r0#+)jpe>YrX=x7_j2^ z2BTx5z7O4_E8pZ71F*aPW@SIaxJ^%a)A3CfK-B=(KYrXMY4BVDm6f>=#()p;GEGR0 z@=r@hp;XS-&UC7PjUq&oLEEaUqLnp=-&^kk!)oi+tio;(<2H9QQu znC?ha;qW7KpKNKOhDWiAX>ryKW8yy7)c(NJ?pzO)m^9DS6!ZeHu0NB{eumKBr1c6~ zLa{Hw&hE%$RXUadG8PVqdLbtZ=lAjm;{1areP1674Xb*;_hHW(bKQLa7|?k^czb7} z;`ed-Cct0>U`GlhrDK8yDZ{^JF%_FmZcVvD)Al?-wI#KQ(eDgE@Oo%*(T*W#z6*!H zv`OtIkKJ}fj`eqg&XL9|#Eof&hd%G#18dSqaR)ib?X_1`vj>3SBBUqaWqN3(>syXa z%>>jb0TM+Ho^!G zEfQyE*M+j#DUa8~5BHxuF*}?aV;r?G$IdNd!VEy|2jK~M1qL;M6mQDch~#&k#$ca4 z>$$_qk^=e^{M9}eL8+(ANbRX#CA4cmx~d=~90pORbf+D7ll1^0#SlgeAQjIo|NdaW z$>c`pPzE<7cK>)Ty(#~2@Ic;XX)u#6V9wBfQoHcp5MF`LdChR$q6mE&47x-5sA3-F zuUdtFu;dop162yNQ@cTHF<^I9UqU~vSW`j0YvQ)74D4aRkBEfm=p^(8=j^iFYbJ`j zJ*>u-u6$9J6?gCObI17QnGyKaDE3E(qY%3_Y3ccBP5O+)9J>$--ev>Zw7om zI3WeHwqDfyrD*t?vshdTD}a2U*HY?&R41eqkm9%9kpU9ZCCr!nbxo5>pcJ3tU)fgz z;7{|u<$=E97uH+U@~Wjf8vSqQ+IWnOycacyHLD%0j>oc`)iVz3&Sz@ z2;^`+M{x5X=S`YIU0*h9L}dYTvsZi5(g&15)C@y6AfK5P?S*crhosAcLDY?gsFE-4 zq*slWdpG)%ZMr(kOld@M#41MB-Qhus3TB7pcL*r4W%Ko8kSd(S6FKfKk0C}c1?pTT zF9RG1&`TN6C;>1BkV9rx2z{*qXbcZpqP{|4_fMqtyCcLu{`}<9(CG#+ z2WhYP#b17WGNLS-RyKb;j?h*q%rQ!-IdrcUus@XpSR+VUt9#%ksJ}7%34DS@I`0Sr zy5Flo%!4-+v2sId3bSh%nFEYa$%OZzU>coP3&<2ijW-OH7{@Pxo-N6-cFgav^)V7~ z&7c&L&TZ{1#vK#NNgK4nwY=D~Jc@c{M+a^PJ+_;K7O(t+lJakwv~JXdyWg$-HgWs) z0)+15Ye2k-wAtkW^Gi>@si6J}po@MVyo9GxqH4sIohxOn+n|fztzS#+B}c%;-i7JUmLwFA!SwZ?v5}gDC)N4@c><+F0i+&&(8BoaBMB#X zDGJk)w>(%(*U%=(e;BuEy4}Z9EhfJ0MTi{$=>Sgy?lf;08y$sSV5))~6t;pQBWu zi=P~pXI3wfaIL&dX|XiLmGu}X5t^-Fjt0tN($eL zP=l{3sHT8j@tb=7nK^i%Assofq&EfxzGAd5@QPS!K%66$c>>FDmvE)EVA-T{rA?=&JbfOBTe#kk`p z_D0L)^k)Eo11=LUfitG;X*I-vt_co|1KRf~e#I<`e*vTW=#mI0(B!_PM?R4M^tNE~ z?stZE@3N0z?zUy!SZQVKyhN*#-uR(f?3VqN#VI7y0#byDgOe;?D`y{1`3GiI+Qd8m$ z()B0&6xuvFP(F(`axejkI7Ii%tJ45}`neduVZ-!_boF}O?F}hAK&zFE%7C}>ICB3# zs9-+g&tcvK;EwN@co*9Y3*0M=^ayjaq0Xq{vJ#0C94vih`n~Icw#gAhl4fs_t`xR& zSPL3MFiDUj39t{qOA$Sg5SPFNH@&cjFq|pddhXo-qaM&&1A}#cjp@4aBJM>+PqU?& zN=DEtnFBP&KA{gny);%ysUGZgo{Zx(>{rK~aVR|!E?wr^TKO|R|P zT5<>a2yg=+b|}{a;XqHA_ayOZZ4dw0=g2u+Lau#=LI?V0sPoZsGB6^rNkMZzjz{i= z_YJV8f{y~D@a3T_;S=4FMe}Y}Qfi*OpI=RcKu&XVcACqXE(lgs$_5}D-Uhmx9yN-T z&Drw+fyGU8+w9mL5HCsjG6E*3uL|UZw^wFc;%d98J^{u~3x+GbE?#dtrR`e^!Sp3X z$~~mG%!w4YAW!#l$82~>iokp=#3R%r!44XLkbuwxG`00d>7lI$Xb77$*hOb<5TFY$ zx>@O7a>;|C@E9NswHP6;;?;1ZJN!AHQNaXq>hrBGT0LScLG(ptsX~#c82^lpGX0!sTUXq}>Ebc2Tk~M&WTsyOI+Pr>?m}%A%Y`M7mVysEV!2-6@4kiP23qWpEk%2*A~Xw?sAvntWU z%U7#Dn2uDuCesjb=F?Z|{57;8?8u_E5pKLUeYq80k6-g#wG~!QsKOX0L`NwP^h1ip zT`(6^y-UMvmJd$vlIYcoydUynxdvATi4-*1f^9tP_EnW=hvSATxVGBLB;8%x@58pY zapKWG%QhXIvIu-Q{m51f%nGY-`jU&aeKb=i>_ULKjarTpzZ89c8lkLie*Izi+gn8GA6I;HXtN=)mTcBlxk0o#(uDgNMD_lUn1@; z1aG5v7TE?V;(Hn&nAmd>tEOSm9`yX)b+*K2$Hc{^lg13Um7cV*Z;h{J0J?e?0A(Nc zo~@}wDMJ6i8GdC}PDz)pn=k{eGWVh(`*yT7;H4TJnc4&_6}t(WkMp&AuFyNzd*s<7 zHEF$dL8xhc*Dq)|yUxc395YYS}rBmXkLYB|}%~Da}xVlVan*l7V zxYud2gm~0!PxTV>gRP^e)O0jb)h$OSoP^;_h_T?4VO;61gI>f5dk>g={z2MLt;r{G zuzB$X$0GWa5_`F#6~;waN7`(nJiGhg{zpJz7Ih6Xb|5p2!x>^`M_Y?EKB={_O5xi% z?saA?bD9FLD%cse8ikeUI%fy49`h3wvE1uzE!@91cVn5ZJ#`p|P&m)wS)t#@WWfdi z*wShS?sPX~nvy~|_bEE0ZgbHZGzUf&HkYpkWod&=icZ;DKJ%^!fZqo4EN(aVvPPz* zL~!Wxs6dBRXqu~Wjm7MDlXHhqga%`W^Oeg^MWy4mbrLp`F#)d3zfSKfd0|ZCl&;Qg z5LR43!#gwcf4D{*uy^9#!1-Ga;?2Lv$!Pm38HZ4Dtzh}8<)G=)19B-Ds0!oL*~vC4 zVWx+QsBbJ|J1g28R2*cwTUbs~yZn!)EvK5TY&l!JXQ7c8FjfMN&9SOvdzahr=teC_@98NeAjS;E!Mj>KGJ}{68JTklQBp+pZ5c+0UO6xJxa7~ z7;RsLOL4D6T2{co96ts=*`8`7)2C}TN&^caWX{pd`!Bn0VJkL-uUQ8#Y8`r>NYTCA zoBxz6WMx=(0b~Ujw--zHGQWuwSZlxp6Vnr>P&tF7ptaux)*6D9m1OZn{1Csx{l)Y6 zn#0@M1zOO;@y;Wk*`O>DAuDzVvZWv6S7eKI?H)`xg@GeV zreT8SJ%=Z#fP@kGM*Hql8^YxI%2g4T5JOjcsSV#ofB3;`!j!8!Rew79;A-$|oy$(V zWx%Xb$Lvz>SrE{lJuL)79nhr#y#;|w z56Tj(&;i1!G1%~`EU+LZgG~@Bq=TdG6ZY4jQ=1ee02aAJMi~y;l=&Ly$bakQUaY^|}HKy$Fz$^c}^2wLQ3jx;+Qdrgv0docnDj_1?4!gnk_YHIL zi6_pN!5|5Y(b0``GlAC{k$)Ql>_iUwE7p}cQU>@IY{*X<09LXzUQQ$u`rjjWBT=qu zLsfqe_KF^ZzBTajn_Ine+RdTF)>@gCq2pj>FX+=6*Gw^h`tXGRJ{UFxH5O_@LD4PcCSexpE99Ucd2yLB+c#~PY zbyaw4eU5unnQq))`?w;fcm#UZ3P#Xo2V+6&VZX;hY* ztaX#u&KMLp0pGvDnD(d@@dxG<76eAHlMfUm1+`e#?@OIlJSQ`JTcE_wI>aZ$pQN(U@ogK{Nq;F zvO1FNR-_+Ih7+;;y+fMO^8e{|f34-W9XKDZJ?;7b^$UXG)mxNo z0^SQ{L0KcXPleq{B1|oZS14(vwslTB{<^Ra`0|D0{)>I~*}13xD572IdS`d{XY~OL z6&I#u{q}^qf)h(=Y3Zx$<5qrp1Nch=)! zxkGQbsK;-rk`kwKn+c+pPR+ca@bGMd3E@e_bcStFF$Cft|KSG=`kRo=mzQO1{r&x` zlNF)D1$xdbh;qQQgz*tR{1lE?6~(*S1m^0driR~$c3Mn;=7 z{zp66N+$|6zvjkPJe!x%`AjuWx57HiYllp?()OJRvM0@3aFJ3aUBW*vkhmp4vMtD@ zg-^--KvF|P7N<@U;tA&vMDkE^$$Q&W|8 zFzCb0dbg5PNmL|z#$9RYjNcW%i|x_(Z}A+ZkB*8q;H=pKJa(x0ET<(*&E~(n_cywgCxwp5tm|$eOj>kPo z3(vAm5~w?EPces@3#{#Y9i5uVyw0SW-nuo9Oyb{BRAQrC8Fu&;)!>u(&%cZ}3U9Zz zwr&njY&i1W`@@o*Jz3bU*^820E$hh@-?8!};6$50LwN< zU*bMBx#EmLo6QI8(U9MMsMIUvgM+nGyKD^KY#C^gSIdVg8!||SbTauU^?e(<$IhzW z)<`mstbdvx&&?0MlW!kgB}xOkTp*-OCt|uC$n*<~l{cZKrLBW(83@}RULh_^vNvEd z#aBCtii@lF0iO*H51&sdf|@4c7PY(eiX#^m%#%eN+5LOjBeEGF^!O4v=5w?{f|-8C~j5+Rl)SMTYKz^3~U{S~l>c>+7c z4MzBj#1sL=TX}m_J6p3z3zUcNuGRj=7}|gIRXUyU`%b2Y-ZLAD2EX<@OSSLdJ1mjc z%>KAQ6?ue$KNknS8)8|=(-X1G=SufKe|*t6kno!|Nhzg zYxZ)^?E23G)nVxapIRwY}IK5wF!KBz!BB!M%@J$8Kn-bf)3h zyzQoTchyFXxV+Coi`ZUl3}n?(`V5>cn+e;zlZW|gbaLNoqs%DXYaQ{uwCg@CY-&$r zp>Bt_!yl`P_FN%bC_}=fm>zC_(RV`+iLEE9Vv=b`Fc|ux-ux+-9kiHTSFHZ--qq4J zObT|`VJe=&XQ9KkxakPYNYMhYwkX8rTqtBMgiFArxdySi%?0ar%IGQF@O6_5qlwb? zT8z_%0jro7R19}PQ|ywZG4o8vdHCHZc>zAY$X@T?)ugy(mI!lW<2xC+K_{I`TOD$# z-A&t?Wj4e{`i6Ob)>GUMV(C=)X)8Zs^Zi#^F_?L}2WG^>){#%d5N>yiM?W#mbxdd= z7tRvM2y=|DnsS}M#2^_Hs14nji{K|K&S%|8W5#}a5NAyHYQsb!t$_3JMKOGF3#=_p z+hSa#utx}xk2I0On5(>X9A}$N6j=tGhph9+h~A3_GYPDU@e4cb>9Oe?dRWil zPKM;^4z4dsezC@;uxGolakd>lk(01kL#u5W_fo6#&B#n-S;O{_K5WZ>?2z~LuAA?1 zAp>l57BOF`2jP3IA$5|}i>XqKH^&?_CiwH#$7V|%sh&S~&b@#xNqP>4&FBr`Dok`L zg8OLcJGJ50j;B*D?$7XYeJ_?NOmecDF5PM$^D3$rFwZ6v>3&Rn>XWOSk$$p2#V%_o z0#zaxJIs8rvCUQ3E$%kTOpy6-Yaa4?uC=>*zlH&}`IuI~?r3+ls@JP@F<#HSBTxE` z?Rx#e^aGvJd+?4pZDmx$@oG#}9Kt+^!Fv|g?PQjIJC&b16kK`C!|thv3-DT z)ta!!Isz-;Fpd9S(*BzkcHq_!6D~3(A#3Qp)%IP=*Sp~;u1o;horwPm?e!IvKF0Mz z*1Av-*VWOm+v39Vw{cOx`J4 z#rtbQ+}0@x{<4GL>9yP&LRxkw^3!hn$EbFZaD9*b)1w9E$5*y1ic;g=jQE%Zc;gf` z1sqQCc;AoUs254GFMS@cdN^_>GGSl#rVs&@`}lC11vhM0^=AN+&9^TS{uIknpnYZMl>v@_+o>vL{ty(~rr#`A14=-J4+@_7*nfNd?VGwrm#eAf7+%9&+m+piZXDW7DG)K zpX}`{#Hd0?b!`gbOtR&|yCOlgwHRIK)U)XNng{J@etOmU>;w>qS@{Jn%d|MRdgnkq zC#E|sMM%p?GQY6KI>4^@G^NybtW@G8-^ik4sXu!sz-eBNlnm%6d)};zfM%hutY6 zyo&J;I%_D0(Zzc+yScy^bz0%w8>O~70R_OJ5sSI>5a;3VlTOGqvE^9ah2~J+Khw+Z zQa|DA1okGKw~xaZ5T@}5Xg&K*=SG~e)PAo#c3vKSS2mupC?quYEHD8I#j|4m?zOYVjd;XFnQye|&yUE8w~N#e3aIDn*t;OteTCd>1Kg z)OFfQtF5d*)i?A-JzK!Mf3A&oe?e2#Vl zix*?Im$Ic%+vz^8hPSv4Q)jRt`Gs8#Am*y3V9pJD=#=dOhw0b}hkDitTS+l(Lm_Ti zg7Y^uAtAQYbsl0nt7T>GTPU0?5u0*%ukU`@1BcBmB!rKT6CQ1W+HT(AHSYiiDz)00 zBh@Q5ew==ccG#BY2MIVmO@#Msi|H)N#4qCP?#s9#=|DRG5Cy6+5WhVWru8;rKLx&lsIp;d_+&J+nAW9 zinx%`=?Eucp%k@aZ9|CA2*$LgrY6#qlg$>y+_(JgK&50seo$&GM}a59Fk_aMTXP8z z^Ss+<56>Phh7vq$ryqXg9{)fmn)zZ3(RN361k^)Sa_yCQmA-t6d@Y{K^8=M zr8CgN6N2zltV0iHUV1$6Ld==uj*`mRHtm?*h#U4zk(a?~)hWmsWy8Agc&?(F`!Q9X zUIBG$1rBKLs>$R8Lr+e62Rt>cfXS2yhL}PskpLTz(zxe5h~1xI3}OO=EJG-owd)P? zJz@uS5A>_~u2S=K`%y^622-*x41K$QyjH8);EmCtW$>10Oogx`84s56$BkzK@Q(Ax z8yWeQ-5qWl2=*OpZ!h7L6ZVZP*>VN3%rCjjJFaAiOR1jx*2ayCVWAzz6!=mk)P^3?U5wnU`WW9&hP$co*a9~# z1gcay2@6d<+q>%A{G1(oL~q~0Bfb_J;j_!6`4YD-c>o381>lGzWFghL7j>2QK}SE+ z*(*c4`n_Qk4r>%is9Ihd6_#@0ba4P@abi=&g+L)uP{|Nrod=G4xRt+1z^N$9)FivA zDYghQa%j{0OJimSQ>C*+^!HHFyec@2T>Q#1ZV_lM5563VLvdGiM{*U`-KV#!HksZZ zu7Y;FzjRe#?|lxUArX+EB+87E8o8eB?}XVVCT@QY|gUKC4&R5S&H(-SGj*6Xx{ zx0?@tCx-ogZPYC^VwiG!y2OW(o}qgpZHo+|`JZ{y3pI}YE z#A>RdBH;L#RF`IK>902Got%NjR8V3cdaWTWa}6CItB7tb5Uc}%Es%(<4f2}ft@9U$ zDktn~@w<5u3x~ZKk*^0DqX@Enl*GgkKsOI!wbZtzlWhzZigq5EarL=8)8G>LX{Am0c>Ldw|JBLA4)Jd^{F@5?O^^T9hJOp= zzo_6}Nc1mE{1+qtOA!8LM?eGrrh@->so=oqTgj9%+qJ1opu}^}pQ=15lret)e*l!d B9Torp diff --git a/packages/terra-application/tests/wdio/application-navigation/private/application-navigation-spec.js b/packages/terra-application/tests/wdio/application-navigation/private/application-navigation-spec.js index 99b8a2578..8e670be1c 100644 --- a/packages/terra-application/tests/wdio/application-navigation/private/application-navigation-spec.js +++ b/packages/terra-application/tests/wdio/application-navigation/private/application-navigation-spec.js @@ -97,7 +97,7 @@ Terra.describeViewports('ApplicationNavigation - Large', ['large'], () => { browser.url('/raw/tests/terra-application/application-navigation/private/application-navigation/application-navigation'); $('[data-application-header-utility="true"]').click(); $('[data-terra-popup-content="true"]').waitForDisplayed(); - $('[data-navigation-utility-item-logout="true"]').click(); + $('/html/body/div[3]/div/div/div[2]/div/div[3]/div/div/button').click(); browser.pause(50); Terra.validates.element('utilities display properly and onSelectLogout called on clicking logout'); }); @@ -130,8 +130,9 @@ Terra.describeViewports('ApplicationNavigation - Large', ['large'], () => { Terra.validates.element('Popup Menu Open'); }); + // TODO: investigate validity of this test it('close popup menu', () => { - $('[data-navigation-popupmenu-item-user-action="true"]').click(); + $('/html/body/div[3]/div/div/div[2]/div/div[2]/div/div/div/div[2]/button').click(); Terra.validates.element('Popup menu Closed'); }); }); diff --git a/packages/terra-dev-site/CHANGELOG.md b/packages/terra-dev-site/CHANGELOG.md index fb31ca00b..5773e00d0 100644 --- a/packages/terra-dev-site/CHANGELOG.md +++ b/packages/terra-dev-site/CHANGELOG.md @@ -2,6 +2,30 @@ ## Unreleased +* The following changes from v7 are added: + * Fixed clipping issue of test pages on dev-site. + * Fixed scroll issue of doc pages with longer content. + * Locked `uuid` dependency to `3.4.0`. + * Updated jest snapshot for terra-icon and terra-button changes. + * Updated wdio snapshot to fix build. + +## 8.1.0 - (June 22, 2022) + +* Changed + * Minor dependency version bump + +## 8.0.1 - (June 7, 2022) + +* Fixed + * Updated `terra-application` peerDependency to v2. + +## 8.0.0 - (May 31, 2022) + +* Breaking + * Dropped react-intl v2-v4 support. + +--- + ## 7.14.0 - (May 1, 2024) * Changed diff --git a/packages/terra-dev-site/package.json b/packages/terra-dev-site/package.json index 5fe44811e..63ff67822 100644 --- a/packages/terra-dev-site/package.json +++ b/packages/terra-dev-site/package.json @@ -1,6 +1,6 @@ { "name": "@cerner/terra-dev-site", - "version": "7.14.0", + "version": "8.1.0", "description": "Dynamically builds a react-hash-routed site based on site configuration, navigation configuration and component configuration.", "author": "Cerner Corporation", "repository": { @@ -74,7 +74,7 @@ "peerDependencies": { "react": "16", "react-dom": "16", - "terra-application": "1", + "terra-application": "2", "webpack": "4 || 5" }, "scripts": { diff --git a/packages/terra-dev-site/src/layouts/secondary-navigation-layout/side-nav/SideNavHeader.jsx b/packages/terra-dev-site/src/layouts/secondary-navigation-layout/side-nav/SideNavHeader.jsx index 07f88b6ff..53b1ed209 100644 --- a/packages/terra-dev-site/src/layouts/secondary-navigation-layout/side-nav/SideNavHeader.jsx +++ b/packages/terra-dev-site/src/layouts/secondary-navigation-layout/side-nav/SideNavHeader.jsx @@ -4,7 +4,7 @@ import classNames from 'classnames/bind'; import Button, { ButtonVariants } from 'terra-button'; import IconLeft from 'terra-icon/lib/icon/IconLeft'; import { ThemeContext } from 'terra-application/lib/theme'; -import { ApplicationIntlContext } from 'terra-application/lib/application-intl'; +import { useIntl } from 'react-intl'; import styles from './SideNavHeader.module.scss'; @@ -26,7 +26,7 @@ const SideNavHeader = ({ onRequestClose, label, }) => { const theme = React.useContext(ThemeContext); - const applicationIntl = React.useContext(ApplicationIntlContext); + const applicationIntl = useIntl(); return (
diff --git a/packages/terra-dev-site/src/pages/page/PageHeader.jsx b/packages/terra-dev-site/src/pages/page/PageHeader.jsx index 0c5f08557..c7579b6d8 100644 --- a/packages/terra-dev-site/src/pages/page/PageHeader.jsx +++ b/packages/terra-dev-site/src/pages/page/PageHeader.jsx @@ -7,7 +7,7 @@ import Popup from 'terra-popup'; import ThemeContext from 'terra-theme-context'; import ActionMenu, { ActionMenuItem } from 'terra-application/lib/action-menu'; -import { ApplicationIntlContext } from 'terra-application/lib/application-intl'; +import { useIntl } from 'react-intl'; import useElementSize, { breakpointFilter } from '../../shared/useElementSize'; import PageContainerContext from '../../layouts/page-container/PageContainerContext'; @@ -37,7 +37,7 @@ const propTypes = { const PageHeader = ({ actions, label, onSelectBack, }) => { - const intl = React.useContext(ApplicationIntlContext); + const intl = useIntl(); const pageContainerContext = React.useContext(PageContainerContext); const theme = React.useContext(ThemeContext); diff --git a/packages/terra-polyfill/CHANGELOG.md b/packages/terra-polyfill/CHANGELOG.md index 64d252b0b..bc89e0a7c 100644 --- a/packages/terra-polyfill/CHANGELOG.md +++ b/packages/terra-polyfill/CHANGELOG.md @@ -2,6 +2,17 @@ ## Unreleased +## 1.4.0 - (June 22, 2022) + +* Changed + * updated condition statement added to check `inert` polyfill is required. + * updated `wicg-inert` to latest version. + +## 1.3.0 - (June 7, 2022) + +* Added + * Added `@formatjs/intl-datetimeformat` polyfill to support date-time functions in ie 10. + ## 1.2.0 - (February 14, 2022) * Changed diff --git a/packages/terra-polyfill/package.json b/packages/terra-polyfill/package.json index cc78fe6cb..fc012c6ac 100644 --- a/packages/terra-polyfill/package.json +++ b/packages/terra-polyfill/package.json @@ -1,6 +1,6 @@ { "name": "@cerner/terra-polyfill", - "version": "1.2.0", + "version": "1.4.0", "description": "This package contains polyfills to support the minimum requirements and commonly used features of terra-application and its consumers.", "author": "Cerner Corporation", "repository": {